apiVersion: proxmox.sankofa.nexus/v1alpha1 kind: ProxmoxVM metadata: name: web-server-01 namespace: default spec: forProvider: node: ML110-01 name: web-server-01 cpu: 4 memory: 8Gi disk: 100Gi storage: local-lvm network: vmbr0 image: ubuntu-22.04-cloud site: us-sfvalley userData: | #cloud-config # Package management package_update: true package_upgrade: true # Required packages packages: - qemu-guest-agent - curl - wget - net-tools - chrony - unattended-upgrades # Time synchronization (NTP) ntp: enabled: true ntp_client: chrony servers: - 0.pool.ntp.org - 1.pool.ntp.org - 2.pool.ntp.org - 3.pool.ntp.org # User configuration users: - name: admin groups: sudo shell: /bin/bash sudo: ALL=(ALL) NOPASSWD:ALL lock_passwd: false # Note: Add SSH keys via userData or use Proxmox API to inject keys # ssh_authorized_keys: # - ssh-rsa YOUR_PUBLIC_SSH_KEY_HERE # Boot commands - executed in order runcmd: # Verify packages are installed - | echo "==========================================" echo "Verifying required packages are installed..." echo "==========================================" for pkg in qemu-guest-agent curl wget net-tools chrony unattended-upgrades; do if ! dpkg -l | grep -q "^ii.*$pkg"; then echo "ERROR: Package $pkg is not installed" exit 1 fi echo "✅ Package $pkg is installed" done echo "All required packages verified" # Verify qemu-guest-agent package details - | echo "==========================================" echo "Checking qemu-guest-agent package details..." echo "==========================================" if dpkg -l | grep -q "^ii.*qemu-guest-agent"; then echo "✅ qemu-guest-agent package IS installed" dpkg -l | grep qemu-guest-agent else echo "❌ qemu-guest-agent package is NOT installed" echo "Attempting to install..." apt-get update apt-get install -y qemu-guest-agent fi # Enable and start QEMU Guest Agent - | echo "==========================================" echo "Enabling and starting QEMU Guest Agent..." echo "==========================================" systemctl enable qemu-guest-agent systemctl start qemu-guest-agent echo "QEMU Guest Agent enabled and started" # Verify guest agent service is running - | echo "==========================================" echo "Verifying QEMU Guest Agent service status..." echo "==========================================" for i in {1..30}; do if systemctl is-active --quiet qemu-guest-agent; then echo "✅ QEMU Guest Agent service IS running" systemctl status qemu-guest-agent --no-pager -l exit 0 fi echo "Waiting for QEMU Guest Agent to start... ($i/30)" sleep 1 done echo "⚠️ WARNING: QEMU Guest Agent may not have started properly" systemctl status qemu-guest-agent --no-pager -l || true echo "Attempting to restart..." systemctl restart qemu-guest-agent sleep 3 if systemctl is-active --quiet qemu-guest-agent; then echo "✅ QEMU Guest Agent started after restart" else echo "❌ QEMU Guest Agent failed to start" fi # Configure NTP (Chrony) - | echo "Configuring NTP (Chrony)..." systemctl enable chrony systemctl restart chrony sleep 3 if systemctl is-active --quiet chrony; then echo "NTP (Chrony) is running" chronyc tracking | head -1 || true else echo "WARNING: NTP (Chrony) may not be running" fi # Final message final_message: | ========================================== System Boot Completed Successfully! ========================================== Services Status: - QEMU Guest Agent: $(systemctl is-active qemu-guest-agent) - NTP (Chrony): $(systemctl is-active chrony) System Information: - Hostname: $(hostname) - IP Address: $(hostname -I | awk '{print $1}') - Time: $(date) Packages Installed: - qemu-guest-agent, curl, wget, net-tools - chrony (NTP), unattended-upgrades (Security) ========================================== providerConfigRef: name: proxmox-provider-config