apiVersion: proxmox.sankofa.nexus/v1alpha1 kind: ProxmoxVM metadata: name: test-vm namespace: default labels: tenant.sankofa.nexus/id: "test-tenant-001" spec: forProvider: node: "ml110-01" name: "test-vm" cpu: 2 memory: "4Gi" disk: "50Gi" storage: "local-lvm" network: "vmbr0" image: "ubuntu-22.04-cloud" site: "us-sfvalley" # Must match a site name in ProviderConfig 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 # 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