- Added lock file exclusions for pnpm in .gitignore. - Removed obsolete package-lock.json from the api and portal directories. - Enhanced Cloudflare adapter with additional interfaces for zones and tunnels. - Improved Proxmox adapter error handling and logging for API requests. - Updated Proxmox VM parameters with validation rules in the API schema. - Enhanced documentation for Proxmox VM specifications and examples.
151 lines
4.9 KiB
YAML
151 lines
4.9 KiB
YAML
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
|