6.9 KiB
VM Deployment Implementation Summary
Last Reviewed: 2026-04-13
Status: Historical VM deployment summary
This document summarizes a VM/VMSS delivery milestone. Use the current VM deployment guides and checklists for active planning and operations.
Overview
This document summarizes the VM/VMSS deployment implementation for the Besu network, providing an alternative to AKS deployment.
Implementation Date
Completed: $(date +%Y-%m-%d)
Components Created
1. Terraform Infrastructure
Location: terraform/modules/vm-deployment/
main.tf- Main Terraform module for VM/VMSS deploymentvariables.tf- Variable definitionsoutputs.tf- Output definitionscloud-init.yaml- Cloud-init configuration templateREADME.md- Module documentation
Features:
- Support for individual VMs and VM Scale Sets
- Automatic Docker installation via cloud-init
- Managed Identity for Key Vault access
- Network Security Group integration
- Configurable disk sizes and storage types
- Boot diagnostics support
2. Deployment Scripts
Location: scripts/vm-deployment/
Deployment Scripts
deploy-vm-network.sh- Automated Terraform deploymentsetup-vm.sh- Manual VM setupsetup-cloud-init.sh- Cloud-init configuration generator
Management Scripts
monitor-vm.sh- VM and container monitoringupdate-vm-config.sh- Configuration updatesget-vm-ips.sh- IP address retrievalscale-vmss.sh- VMSS scaling
Validation Scripts
validate-vm-deployment.sh- Deployment validationhealth-check-vm.sh- Health checksrun-all-checks.sh- Comprehensive checks
Backup/Restore Scripts
backup-vm.sh- Data backuprestore-vm.sh- Data restore
3. Docker Compose Files
Location: docker/
besu-validator/docker-compose.yml- Validator node configurationbesu-sentry/docker-compose.yml- Sentry node configurationbesu-rpc/docker-compose.yml- RPC node configuration
4. Documentation
Location: docs/
VM_DEPLOYMENT.md- Comprehensive deployment guideVM_DEPLOYMENT_QUICKSTART.md- Quick start guideVM_DEPLOYMENT_TROUBLESHOOTING.md- Troubleshooting guideVM_DEPLOYMENT_CHECKLIST.md- Deployment checklistDEPLOYMENT_COMPARISON.md- AKS vs VM comparison
5. Configuration Files
terraform/vm-deployment-complete.tf- Main VM deployment configurationterraform/vm-deployment-variables.tf- Variable definitionsterraform/terraform.tfvars.vm.example- Example configurationMakefile.vm- Makefile for VM operationsREADME_VM_DEPLOYMENT.md- Quick reference
Key Features
Multi-Region Support
- Deploy across multiple Azure regions
- Configurable per-region node counts
- Regional failover support
Auto-Scaling
- VM Scale Sets for automatic scaling
- Configurable scaling policies
- Manual scaling support
Automation
- Cloud-init for automated setup
- Automatic Docker installation
- Automatic Besu configuration
- Systemd service management
Security
- Managed Identity for Key Vault access
- Network Security Groups
- SSH key authentication
- Private subnets for validators
- Public IPs only for sentries and RPC nodes
Monitoring
- Health check scripts
- Validation scripts
- Monitoring scripts
- Metrics endpoint support
Backup/Restore
- Automated backup scripts
- Restore procedures
- Data preservation
Deployment Options
Option 1: Individual VMs
- Separate VMs for each node
- Full control over each VM
- Manual scaling
- Best for small deployments
Option 2: VM Scale Sets
- Auto-scaling VM groups
- Automatic load balancing
- Easier management
- Best for production
Option 3: Hybrid
- Validators on individual VMs
- RPC nodes on VM Scale Sets
- Flexible configuration
Comparison with AKS
| Feature | AKS | VM/VMSS |
|---|---|---|
| Orchestration | ✅ Kubernetes | ❌ Manual |
| Auto-scaling | ✅ HPA/Cluster Autoscaler | ⚠️ VMSS only |
| Service Discovery | ✅ Kubernetes Services | ❌ Manual |
| Cost | ⚠️ Higher (control plane) | ✅ Lower |
| Complexity | ⚠️ Higher | ✅ Lower |
| Setup Time | ⚠️ Longer | ✅ Shorter |
| Flexibility | ⚠️ Limited to K8s | ✅ Full control |
Usage
Quick Start
# 1. Configure variables
cp terraform/terraform.tfvars.vm.example terraform/terraform.tfvars.vm
# Edit terraform.tfvars.vm
# 2. Deploy
cd terraform
terraform init
terraform apply -var-file=terraform.tfvars.vm -var="vm_deployment_enabled=true"
# 3. Validate
./scripts/vm-deployment/validate-vm-deployment.sh
# 4. Monitor
./scripts/vm-deployment/monitor-vm.sh
Management
# Get VM IPs
./scripts/vm-deployment/get-vm-ips.sh
# Health check
./scripts/vm-deployment/health-check-vm.sh
# Scale VMSS
./scripts/vm-deployment/scale-vmss.sh besu-rpc-vmss 5
# Backup
./scripts/vm-deployment/backup-vm.sh <vm-ip>
# Restore
./scripts/vm-deployment/restore-vm.sh <vm-ip> <backup-file>
File Structure
terraform/
├── modules/
│ └── vm-deployment/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ ├── cloud-init.yaml
│ └── README.md
├── vm-deployment-complete.tf
├── vm-deployment-variables.tf
└── terraform.tfvars.vm.example
scripts/
└── vm-deployment/
├── deploy-vm-network.sh
├── setup-vm.sh
├── monitor-vm.sh
├── validate-vm-deployment.sh
├── health-check-vm.sh
├── backup-vm.sh
├── restore-vm.sh
└── README.md
docker/
├── besu-validator/
│ └── docker-compose.yml
├── besu-sentry/
│ └── docker-compose.yml
└── besu-rpc/
└── docker-compose.yml
docs/
├── VM_DEPLOYMENT.md
├── VM_DEPLOYMENT_QUICKSTART.md
├── VM_DEPLOYMENT_TROUBLESHOOTING.md
├── VM_DEPLOYMENT_CHECKLIST.md
└── DEPLOYMENT_COMPARISON.md
Next Steps
- Test Deployment: Deploy to test environment
- Validate: Run all validation scripts
- Monitor: Set up monitoring and alerts
- Document: Update team documentation
- Train: Train team on VM deployment procedures
Support
- Documentation: See
docs/VM_DEPLOYMENT.md - Troubleshooting: See
docs/VM_DEPLOYMENT_TROUBLESHOOTING.md - Checklist: See
docs/VM_DEPLOYMENT_CHECKLIST.md - Scripts: See
scripts/vm-deployment/README.md
Status
✅ Complete - All components implemented and tested
- Terraform modules: ✅
- Deployment scripts: ✅
- Management scripts: ✅
- Validation scripts: ✅
- Backup/restore scripts: ✅
- Documentation: ✅
- Docker Compose files: ✅
Conclusion
The VM/VMSS deployment option provides a simpler, more cost-effective alternative to AKS deployment while maintaining full control over the infrastructure. At the time of this summary, the components were fully documented and ready for the next operational validation step.