#!/bin/bash set -euo pipefail PASS_DEVELOPER="${PASS_DEVELOPER:-P@ssd3v3loper}" PASS_KUBEADMIN="${PASS_DEVELOPER:-P@sskub3admin}" CRC_BUNDLE_PATH="${CRC_BUNDLE_PATH:-$HOME/.crc/cache/crc_libvirt_4.19.0_amd64.crcbundle}" SSH="ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -i ${PUB_KEY_PATH%.*}" SCP="scp -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -i ${PUB_KEY_PATH%.*}" if [[ "${PULL_SECRET_PATH}" == "" ]]; then echo -n "Path to Pull secret file needs to be set using PULL_SECRET_PATH env variable" exit 1 fi if [[ "${PUB_KEY_PATH}" == "" ]]; then echo -n "Path to the SSH Public key needs to be set using PUB_KEY_PATH env variable" exit 1 fi if [[ "${CRC_BUNDLE_PATH}" == "" ]]; then echo -n "Path to a CRC bundle needs to be set using CRC_BUNDLE_PATH env variable" exit 1 fi PULL_SECRET=$(cat ${PULL_SECRET_PATH}) PUB_KEY=$(cat ${PUB_KEY_PATH}) function gen_cloud_init() { echo -n "Generating cloud-init user-data..." rm -rf seed.iso cat < user-data #cloud-config runcmd: - systemctl enable --now kubelet write_files: - path: /home/core/.ssh/authorized_keys content: '$PUB_KEY' owner: core permissions: '0600' - path: /opt/crc/id_rsa.pub content: '$PUB_KEY' owner: root:root permissions: '0644' - path: /etc/sysconfig/crc-env content: | CRC_CLOUD=1 CRC_NETWORK_MODE_USER=0 owner: root:root permissions: '0644' - path: /usr/local/bin/crc-check-cloud-env.sh content: | #!/bin/bash exit 0 owner: root:root permissions: '0777' - path: /opt/crc/pull-secret content: | $PULL_SECRET permissions: '0644' - path: /opt/crc/pass_kubeadmin content: '$PASS_KUBEADMIN' permissions: '0644' - path: /opt/crc/pass_developer content: '$PASS_DEVELOPER' permissions: '0644' - path: /opt/crc/ocp-custom-domain.service.done permissions: '0644' EOF # create cloud-init ISO touch meta-data mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data # macos: hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata seedconfig/ } function extract_disk_img() { echo -n "Extracting VM image from CRC bundle ..." zstd -d --format=zstd -o bundle.tar "${CRC_BUNDLE_PATH}" bundle_name=$(basename "${CRC_BUNDLE_PATH}") tar -O -xvf bundle.tar "${bundle_name%.*}"/crc.qcow2 > crc.qcow2 rm -rf bundle.tar } function create_libvirt_vm() { crc_disk_path="$(pwd)/crc.qcow2" cloud_init_iso="$(pwd)/seed.iso" uuid=$(uuidgen) vm_name=${1} echo -n "Creating VM..." cat < crc-ssf.xml ${vm_name} ${uuid} 11010048 11010048 4 hvm /usr/share/edk2/ovmf/OVMF_CODE_4M.qcow2 /var/lib/libvirt/qemu/nvram/crc-2_VARS.qcow2 destroy restart destroy /usr/bin/qemu-system-x86_64