diff options
Diffstat (limited to 'create-vm')
-rwxr-xr-x | create-vm | 48 |
1 files changed, 46 insertions, 2 deletions
@@ -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" } |