|
|
@@ -0,0 +1,56 @@
|
|
|
+#!/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"
|
|
|
+
|