# VM Deployment Checklist

## Pre-Deployment

- [ ] Azure subscription configured
- [ ] Azure CLI installed and logged in
- [ ] Terraform >= 1.0 installed
- [ ] SSH key pair generated
- [ ] Resource group created
- [ ] Network infrastructure deployed (VNet, subnets, NSGs)
- [ ] Key Vault created and configured
- [ ] Genesis file generated
- [ ] Validator keys generated
- [ ] Terraform variables configured (`terraform.tfvars.vm`)

## Deployment

- [ ] Terraform initialized (`terraform init`)
- [ ] Terraform plan reviewed (`terraform plan`)
- [ ] VM deployment enabled (`vm_deployment_enabled = true`)
- [ ] SSH public key configured
- [ ] VM sizes selected appropriately
- [ ] Disk sizes configured
- [ ] Terraform apply executed (`terraform apply`)
- [ ] VMs created successfully
- [ ] Public IPs assigned (sentries and RPC nodes)
- [ ] Network Security Groups configured

## Post-Deployment

### Validation

- [ ] All VMs created (validators, sentries, RPC)
- [ ] All VMs running
- [ ] SSH access working
- [ ] Docker installed on all VMs
- [ ] Besu containers running
- [ ] Genesis file present
- [ ] Validator keys present (for validators)
- [ ] Configuration files present

### Network

- [ ] Validators in private subnets
- [ ] Sentries have public IPs
- [ ] RPC nodes have public IPs
- [ ] NSG rules configured correctly
- [ ] P2P port (30303) accessible for sentries
- [ ] RPC port (8545) accessible for RPC nodes
- [ ] Metrics port (9545) accessible

### Functionality

- [ ] Validators syncing
- [ ] Sentries peering
- [ ] RPC endpoints responding
- [ ] Chain ID correct (138)
- [ ] Block production working
- [ ] Transactions processing

### Security

- [ ] Managed Identity configured
- [ ] Key Vault access policies set
- [ ] NSG rules restrictive
- [ ] SSH keys configured
- [ ] No hardcoded secrets
- [ ] Boot diagnostics enabled

### Monitoring

- [ ] Metrics endpoint accessible
- [ ] Logs accessible
- [ ] Monitoring scripts working
- [ ] Health checks passing
- [ ] Alerts configured (if applicable)

## Operations

### Daily

- [ ] Check VM status
- [ ] Check Besu container status
- [ ] Review logs for errors
- [ ] Check resource usage
- [ ] Verify block production

### Weekly

- [ ] Review security logs
- [ ] Check disk usage
- [ ] Review performance metrics
- [ ] Update documentation
- [ ] Review costs

### Monthly

- [ ] Security audit
- [ ] Backup verification
- [ ] Disaster recovery test
- [ ] Capacity planning review
- [ ] Update dependencies

## Troubleshooting

- [ ] Troubleshooting guide reviewed
- [ ] Diagnostic scripts available
- [ ] Support contacts documented
- [ ] Runbook procedures tested

## Documentation

- [ ] Deployment guide reviewed
- [ ] Quick start guide reviewed
- [ ] Troubleshooting guide reviewed
- [ ] Runbooks created
- [ ] Architecture documented

## Sign-off

- [ ] All checks completed
- [ ] Network operational
- [ ] Security verified
- [ ] Monitoring configured
- [ ] Documentation complete
- [ ] Team trained

---

**Last Updated**: $(date +%Y-%m-%d)
**Deployment Version**: 1.0

