#!/bin/bash # Task to Install Alpine on a VM (alpine::install_alpine) # Input Variables VM_NAME="${PT_vm_name}" DISK_PATH="${PT_disk_path}" STAGING_IP="${PT_staging_ip}" GATEWAY_IP="${PT_gateway_ip}" USERNAME="${PT_username:-moeny}" # Wait for VM to be accessible via SSH while ! ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@${STAGING_IP} "echo 'VM is accessible'"; do sleep 5 done # Create autoinstall answer file directly on VM ssh -o StrictHostKeyChecking=no root@${STAGING_IP} "cat > /tmp/alpine-answers << 'EOF' KEYMAPOPTS=\"us us\" HOSTNAMEOPTS=\"-n vm-template-staging\" INTERFACESOPTS=\"auto lo iface lo inet loopback auto eth0 iface eth0 inet static address ${STAGING_IP} netmask 255.255.255.0 gateway ${GATEWAY_IP} \" DNSOPTS=\"-n 8.8.8.8 8.8.4.4\" TIMEZONEOPTS=\"-z UTC\" PROXYOPTS=\"none\" APKREPOSOPTS=\"-1\" USEROPTS=\"-a -u ${USERNAME}\" USERSSHKEY=\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRMJNdI/n/7xYN65zHFN8hlRSDg5OPJ12AwOsUyP8OmKCQTapoVQ/suvjaUTCtt8o28QNIQm1vAD03hFNzVJn6F6FJu9vUbR+YqlmzmzGJXB6sWWTEnc9/GsVvLoculuzFYfa2qU9xFbuUTtqFRu6qor82TPAhy/yVWzIvRxlfuxKLpdU9paKiV+WtCkSpVoBgIH6soBE1swMX4ILIOGeFTrmCdBac4K1Bs0OarKtShR6PHdNiqPlwpCeQQDZD8ops69yBMc0t6poFZC9FYSj7arJEWvZN9YtUr+PJiYZQc+gIG4enPW1Zf4FEkXXvH/t6RaYMq9w/P5lIUNOVe169\" ROOTSSHKEY=\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRMJNdI/n/7xYN65zHFN8hlRSDg5OPJ12AwOsUyP8OmKCQTapoVQ/suvjaUTCtt8o28QNIQm1vAD03hFNzVJn6F6FJu9vUbR+YqlmzmzGJXB6sWWTEnc9/GsVvLoculuzFYfa2qU9xFbuUTtqFRu6qor82TPAhy/yVWzIvRxlfuxKLpdU9paKiV+WtCkSpVoBgIH6soBE1swMX4ILIOGeFTrmCdBac4K1Bs0OarKtShR6PHdNiqPlwpCeQQDZD8ops69yBMc0t6poFZC9FYSj7arJEWvZN9YtUr+PJiYZQc+gIG4enPW1Zf4FEkXXvH/t6RaYMq9w/P5lIUNOVe169\" SSHDOPTS=\"-c openssh\" NTPOPTS=\"-c chrony\" DISKOPTS=\"-m sys /dev/vda\" EOF" # Run installation commands over SSH ssh -o StrictHostKeyChecking=no root@${STAGING_IP} "echo 'y' | setup-alpine -e -f /tmp/alpine-answers" # Wait for installation to complete sleep 65 # Reboot via SSH ssh -o StrictHostKeyChecking=no root@${STAGING_IP} "reboot" # Wait for VM to come back up sleep 30 # Verify installation by trying to SSH if ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@${STAGING_IP} "echo 'VM is running'"; then echo '{"status": "success", "message": "Alpine installation completed successfully"}' exit 0 else echo '{"status": "failure", "message": "Failed to install Alpine"}' exit 1 fi