summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2020-10-04 15:47:27 +0300
committerLars Wirzenius <liw@liw.fi>2020-10-04 15:47:27 +0300
commit85c633d8861146604ae540acd5828afdc2326590 (patch)
treef06f844ffc7639031bbb59207b86e64eb7a2a511
parent7f531f989ca154a2dc311f783e9c7d04c112ff38 (diff)
downloadick-contractor-85c633d8861146604ae540acd5828afdc2326590.tar.gz
create-vm works
-rwxr-xr-xcreate-vm48
1 files changed, 46 insertions, 2 deletions
diff --git a/create-vm b/create-vm
index f79b0b1..9fa374b 100755
--- a/create-vm
+++ b/create-vm
@@ -25,11 +25,55 @@ EOF
}
+create_vm()
+{
+ local name="$1"
+ local memory="$2"
+ local image="$3"
+ local iso="$4"
+
+ virt-install \
+ --name="$name" \
+ --memory "$memory" \
+ --disk="path=$image,cache=none" \
+ --disk="path=$iso,readonly=on" \
+ --network=network=default \
+ --quiet \
+ --connect qemu:///system \
+ --cpu=host-passthrough \
+ --os-variant=debian9 \
+ --import \
+ --graphics=spice \
+ --noautoconsole
+}
+
+wait_for_ssh()
+{
+ local host="$1"
+ while ! nc -w 1 "$host" 22 < /dev/null > /dev/null
+ do
+ sleep 5
+ done
+}
+
+
main()
{
- local vm="$1"
- local pubkey="$(cat "$2")"
+ local base="$1"
+ local vm="$2"
+ local memory="$3"
+ local img="$4"
+ local size="$5"
+ local pubkey="$(cat "$6")"
+
+ local iso="$vm.iso"
+
cloud_init_iso "$vm.iso" "$vm" "$pubkey"
+ cp "$base" "$img"
+ qemu-img resize -q "$img" "$size"
+ create_vm "$vm" "$memory" "$img" "$iso"
+ wait_for_ssh "$vm"
+ rm -f "$iso"
}