#!/bin/bash SCRIPT_PATH=/home/tzenet/createVM source $(pwd)/vars # Get the cloud image cd /var/lib/libvirt/boot wget $CLOUD_IMAGE_URL mkdir -pv $DIR/$VM_NAME cd $DIR/$VM_NAME # Create meta-data file # Create user-data file # For this step you need to have an ssh key-pair cp ${SCRIPT_PATH}/user-data $DIR/$VM_NAME/ cp ${SCRIPT_PATH}/meta-data $DIR/$VM_NAME/ # Validate user-data for syntax errors if any cloud-init devel schema --config-file user-data # Copy cloud image cp -v /var/lib/libvirt/boot/$CLOUD_IMAGE $VM_NAME.qcow2 #Create disk cd $DIR/$VM_NAME qemu-img create -f qcow2 -o preallocation=metadata $VM_NAME.new.image ${DISK_SIZE}G virt-resize --quiet --expand /dev/sda1 $VM_NAME.qcow2 $VM_NAME.new.image mv -f $VM_NAME.new.image $VM_NAME.qcow2 # Create a cloud-init iso mkisofs -o $VM_NAME-cidata.iso -V cidata -J -r user-data meta-data # Create a pool virsh pool-create-as --name $VM_NAME --type dir --target $DIR/$VM_NAME # Create the VM cd $DIR/$VM_NAME virt-install --import --name $VM_NAME \ --ram $VM_MEMORY --vcpus $VM_VCPUS \ --os-type=Linux --os-variant=centos8 \ --disk $VM_NAME.qcow2,format=qcow2,bus=virtio \ --disk $VM_NAME-cidata.iso,device=cdrom \ --network=bridge:br0,model=virtio --graphics none \ --mac $VM_MAC # Remove unwanted files cd $DIR/$VM_NAME virsh change-media $VM_NAME sda --eject --config rm -v meta-data user-data $VM_NAME-cidata.iso echo "This is the end"