| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/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"
|