script.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/bash
  2. SCRIPT_PATH=/home/tzenet/createVM
  3. source $(pwd)/vars
  4. # Get the cloud image
  5. cd /var/lib/libvirt/boot
  6. wget $CLOUD_IMAGE_URL
  7. mkdir -pv $DIR/$VM_NAME
  8. cd $DIR/$VM_NAME
  9. # Create meta-data file
  10. # Create user-data file
  11. # For this step you need to have an ssh key-pair
  12. cp ${SCRIPT_PATH}/user-data $DIR/$VM_NAME/
  13. cp ${SCRIPT_PATH}/meta-data $DIR/$VM_NAME/
  14. # Validate user-data for syntax errors if any
  15. cloud-init devel schema --config-file user-data
  16. # Copy cloud image
  17. cp -v /var/lib/libvirt/boot/$CLOUD_IMAGE $VM_NAME.qcow2
  18. #Create disk
  19. cd $DIR/$VM_NAME
  20. qemu-img create -f qcow2 -o preallocation=metadata $VM_NAME.new.image ${DISK_SIZE}G
  21. virt-resize --quiet --expand /dev/sda1 $VM_NAME.qcow2 $VM_NAME.new.image
  22. mv -f $VM_NAME.new.image $VM_NAME.qcow2
  23. # Create a cloud-init iso
  24. mkisofs -o $VM_NAME-cidata.iso -V cidata -J -r user-data meta-data
  25. # Create a pool
  26. virsh pool-create-as --name $VM_NAME --type dir --target $DIR/$VM_NAME
  27. # Create the VM
  28. cd $DIR/$VM_NAME
  29. virt-install --import --name $VM_NAME \
  30. --ram $VM_MEMORY --vcpus $VM_VCPUS \
  31. --os-type=Linux --os-variant=centos8 \
  32. --disk $VM_NAME.qcow2,format=qcow2,bus=virtio \
  33. --disk $VM_NAME-cidata.iso,device=cdrom \
  34. --network=bridge:br0,model=virtio --graphics none \
  35. --mac $VM_MAC
  36. # Remove unwanted files
  37. cd $DIR/$VM_NAME
  38. virsh change-media $VM_NAME sda --eject --config
  39. rm -v meta-data user-data $VM_NAME-cidata.iso
  40. echo "This is the end"