Files
smom-dbis-138/docs/deployment/VM_DEPLOYMENT_SUMMARY.md

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 deployment
  • variables.tf - Variable definitions
  • outputs.tf - Output definitions
  • cloud-init.yaml - Cloud-init configuration template
  • README.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 deployment
  • setup-vm.sh - Manual VM setup
  • setup-cloud-init.sh - Cloud-init configuration generator

Management Scripts

  • monitor-vm.sh - VM and container monitoring
  • update-vm-config.sh - Configuration updates
  • get-vm-ips.sh - IP address retrieval
  • scale-vmss.sh - VMSS scaling

Validation Scripts

  • validate-vm-deployment.sh - Deployment validation
  • health-check-vm.sh - Health checks
  • run-all-checks.sh - Comprehensive checks

Backup/Restore Scripts

  • backup-vm.sh - Data backup
  • restore-vm.sh - Data restore

3. Docker Compose Files

Location: docker/

  • besu-validator/docker-compose.yml - Validator node configuration
  • besu-sentry/docker-compose.yml - Sentry node configuration
  • besu-rpc/docker-compose.yml - RPC node configuration

4. Documentation

Location: docs/

  • VM_DEPLOYMENT.md - Comprehensive deployment guide
  • VM_DEPLOYMENT_QUICKSTART.md - Quick start guide
  • VM_DEPLOYMENT_TROUBLESHOOTING.md - Troubleshooting guide
  • VM_DEPLOYMENT_CHECKLIST.md - Deployment checklist
  • DEPLOYMENT_COMPARISON.md - AKS vs VM comparison

5. Configuration Files

  • terraform/vm-deployment-complete.tf - Main VM deployment configuration
  • terraform/vm-deployment-variables.tf - Variable definitions
  • terraform/terraform.tfvars.vm.example - Example configuration
  • Makefile.vm - Makefile for VM operations
  • README_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

  1. Test Deployment: Deploy to test environment
  2. Validate: Run all validation scripts
  3. Monitor: Set up monitoring and alerts
  4. Document: Update team documentation
  5. 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.