Some checks failed
API CI / API Lint (push) Successful in 47s
API CI / API Type Check (push) Failing after 47s
API CI / API Test (push) Successful in 1m0s
API CI / API Build (push) Failing after 50s
API CI / Build Docker Image (push) Has been skipped
Build Crossplane Provider / build (push) Failing after 5m51s
CD Pipeline / Deploy to Staging (push) Failing after 29s
CI Pipeline / Lint and Type Check (push) Failing after 36s
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Test Backend (push) Failing after 1m33s
CI Pipeline / Test Frontend (push) Failing after 30s
CI Pipeline / Security Scan (push) Failing after 1m16s
Crossplane Provider CI / Go Test (push) Failing after 3m23s
Crossplane Provider CI / Go Lint (push) Failing after 7m27s
Crossplane Provider CI / Go Build (push) Failing after 3m27s
Deploy to Staging / Deploy to Staging (push) Failing after 30s
Portal CI / Portal Lint (push) Failing after 21s
Portal CI / Portal Type Check (push) Failing after 21s
Portal CI / Portal Test (push) Failing after 21s
Portal CI / Portal Build (push) Failing after 22s
Test Suite / frontend-tests (push) Failing after 30s
Test Suite / api-tests (push) Failing after 49s
Test Suite / blockchain-tests (push) Failing after 30s
Type Check / type-check (map[directory:. name:root]) (push) Failing after 23s
Type Check / type-check (map[directory:api name:api]) (push) Failing after 21s
Type Check / type-check (map[directory:portal name:portal]) (push) Failing after 19s
Validate Configuration Files / validate (push) Failing after 1m52s
CD Pipeline / Deploy to Production (push) Has been skipped
Co-authored-by: Cursor <cursoragent@cursor.com>
228 lines
11 KiB
Bash
Executable File
228 lines
11 KiB
Bash
Executable File
#!/bin/bash
|
|
# Update VM template files with current Kubernetes configurations
|
|
# Preserves metadata, labels, and userData sections
|
|
|
|
set -euo pipefail
|
|
|
|
echo "═══════════════════════════════════════════════════════════════════════════════"
|
|
echo " UPDATE VM TEMPLATE FILES"
|
|
echo "═══════════════════════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# Function to update a VM template file
|
|
update_template_file() {
|
|
local file_path=$1
|
|
local vm_name=$2
|
|
local namespace=$3
|
|
local node=$4
|
|
local cpu=$5
|
|
local memory=$6
|
|
local disk=$7
|
|
local storage=$8
|
|
local image=$9
|
|
local network=${10}
|
|
local site=${11}
|
|
|
|
# Read existing file to preserve metadata and userData
|
|
if [ -f "$file_path" ]; then
|
|
# Extract metadata section (including labels)
|
|
metadata_section=$(awk '/^metadata:/,/^spec:/ {print}' "$file_path" | head -n -1)
|
|
# Extract userData section if it exists
|
|
userdata_section=$(awk '/userData:/,/providerConfigRef:/ {print}' "$file_path" | head -n -1 || echo "")
|
|
# Extract providerConfigRef if it exists
|
|
provider_config=$(grep -A 2 "providerConfigRef:" "$file_path" || echo "")
|
|
else
|
|
metadata_section="metadata:
|
|
name: $vm_name
|
|
namespace: $namespace"
|
|
userdata_section=""
|
|
provider_config=" providerConfigRef:
|
|
name: proxmox-provider-config"
|
|
fi
|
|
|
|
# Create updated file
|
|
{
|
|
echo "apiVersion: proxmox.sankofa.nexus/v1alpha1"
|
|
echo "kind: ProxmoxVM"
|
|
echo "$metadata_section"
|
|
echo "spec:"
|
|
echo " forProvider:"
|
|
echo " node: \"$node\""
|
|
echo " name: \"$vm_name\""
|
|
echo " cpu: $cpu"
|
|
echo " memory: \"$memory\""
|
|
echo " disk: \"$disk\""
|
|
echo " storage: \"$storage\""
|
|
echo " network: \"$network\""
|
|
echo " image: \"$image\""
|
|
echo " site: \"$site\""
|
|
if [ -n "$userdata_section" ]; then
|
|
echo "$userdata_section"
|
|
fi
|
|
if [ -n "$provider_config" ]; then
|
|
echo "$provider_config"
|
|
fi
|
|
} > "$file_path.tmp" && mv "$file_path.tmp" "$file_path"
|
|
|
|
echo " ✅ Updated: $file_path"
|
|
}
|
|
|
|
# Get VM configurations from Kubernetes
|
|
echo "Step 1: Fetching VM configurations from Kubernetes..."
|
|
VM_CONFIGS=$(kubectl get proxmoxvms -A -o json 2>/dev/null | jq -r '.items[] |
|
|
select(.spec.forProvider.node == "r630-01" or .spec.forProvider.node == "ml110-01") |
|
|
"\(.metadata.namespace)|\(.metadata.name)|\(.spec.forProvider.node)|\(.spec.forProvider.cpu)|\(.spec.forProvider.memory)|\(.spec.forProvider.disk)|\(.spec.forProvider.storage)|\(.spec.forProvider.image)|\(.spec.forProvider.network)|\(.spec.forProvider.site)"' | sort)
|
|
|
|
UPDATED_COUNT=0
|
|
|
|
# Update SMOM-DBIS-138 templates
|
|
echo ""
|
|
echo "Step 2: Updating SMOM-DBIS-138 VM templates..."
|
|
while IFS='|' read -r namespace name node cpu memory disk storage image network site; do
|
|
case "$name" in
|
|
smom-validator-01)
|
|
update_template_file "examples/production/smom-dbis-138/validator-01.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-validator-02)
|
|
update_template_file "examples/production/smom-dbis-138/validator-02.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-validator-03)
|
|
update_template_file "examples/production/smom-dbis-138/validator-03.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-validator-04)
|
|
update_template_file "examples/production/smom-dbis-138/validator-04.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-sentry-01)
|
|
update_template_file "examples/production/smom-dbis-138/sentry-01.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-sentry-02)
|
|
update_template_file "examples/production/smom-dbis-138/sentry-02.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-sentry-03)
|
|
update_template_file "examples/production/smom-dbis-138/sentry-03.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-sentry-04)
|
|
update_template_file "examples/production/smom-dbis-138/sentry-04.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
rpc-node-01)
|
|
update_template_file "examples/production/smom-dbis-138/rpc-node-01.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
rpc-node-02)
|
|
update_template_file "examples/production/smom-dbis-138/rpc-node-02.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
rpc-node-03)
|
|
update_template_file "examples/production/smom-dbis-138/rpc-node-03.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
rpc-node-04)
|
|
update_template_file "examples/production/smom-dbis-138/rpc-node-04.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-services)
|
|
update_template_file "examples/production/smom-dbis-138/services.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
smom-blockscout)
|
|
update_template_file "examples/production/smom-dbis-138/blockscout.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
monitoring)
|
|
update_template_file "examples/production/smom-dbis-138/monitoring.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
management)
|
|
update_template_file "examples/production/smom-dbis-138/management.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
esac
|
|
done <<< "$VM_CONFIGS"
|
|
|
|
# Update Phoenix templates
|
|
echo ""
|
|
echo "Step 3: Updating Phoenix VM templates..."
|
|
while IFS='|' read -r namespace name node cpu memory disk storage image network site; do
|
|
case "$name" in
|
|
phoenix-as4-gateway)
|
|
update_template_file "examples/production/phoenix/as4-gateway.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-business-integration-gateway)
|
|
update_template_file "examples/production/phoenix/business-integration-gateway.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-codespaces-ide)
|
|
update_template_file "examples/production/phoenix/codespaces-ide.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-devops-runner)
|
|
update_template_file "examples/production/phoenix/devops-runner.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-dns-primary)
|
|
update_template_file "examples/production/phoenix/dns-primary.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-email-server)
|
|
update_template_file "examples/production/phoenix/email-server.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-financial-messaging-gateway)
|
|
update_template_file "examples/production/phoenix/financial-messaging-gateway.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
phoenix-git-server)
|
|
update_template_file "examples/production/phoenix/git-server.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
esac
|
|
done <<< "$VM_CONFIGS"
|
|
|
|
# Update other production VMs
|
|
echo ""
|
|
echo "Step 4: Updating other production VM templates..."
|
|
while IFS='|' read -r namespace name node cpu memory disk storage image network site; do
|
|
# Skip SMOM and Phoenix (already handled)
|
|
if [[ "$name" =~ ^(smom-|phoenix-|rpc-node|monitoring|management)$ ]]; then
|
|
continue
|
|
fi
|
|
# Skip example VMs
|
|
if [[ "$name" =~ ^(basic-vm-001|large-vm-001|medium-vm-001|vm-100)$ ]]; then
|
|
continue
|
|
fi
|
|
|
|
case "$name" in
|
|
nginx-proxy-vm)
|
|
update_template_file "examples/production/nginx-proxy-vm.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
cloudflare-tunnel-vm)
|
|
update_template_file "examples/production/cloudflare-tunnel-vm.yaml" "$name" "$namespace" "$node" "$cpu" "$memory" "$disk" "$storage" "$image" "$network" "$site"
|
|
((UPDATED_COUNT++))
|
|
;;
|
|
esac
|
|
done <<< "$VM_CONFIGS"
|
|
|
|
echo ""
|
|
echo "═══════════════════════════════════════════════════════════════════════════════"
|
|
echo " SUMMARY"
|
|
echo "═══════════════════════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
echo "✅ Updated $UPDATED_COUNT VM template files"
|
|
echo ""
|
|
echo "All templates now reflect current Kubernetes configurations:"
|
|
echo " - Storage: local-lvm (or as configured)"
|
|
echo " - Image: 9000 (template) or local:iso/ubuntu-22.04-cloud.img"
|
|
echo " - Current CPU, RAM, and Disk specifications"
|
|
echo " - Metadata, labels, and userData preserved"
|
|
|