Files
the_order/infra/terraform
defiQUG 6a8582e54d feat: comprehensive project structure improvements and Cloud for Sovereignty landing zone
- Add Cloud for Sovereignty landing zone architecture and deployment
- Implement complete legal document management system
- Reorganize documentation with improved navigation
- Add infrastructure improvements (Dockerfiles, K8s, monitoring)
- Add operational improvements (graceful shutdown, rate limiting, caching)
- Create comprehensive project structure documentation
- Add Azure deployment automation scripts
- Improve repository navigation and organization
2025-11-13 09:32:55 -08:00
..

Terraform Infrastructure

Terraform configuration for The Order infrastructure on Azure.

Default Region: West Europe (westeurope)
Policy: No US Commercial or Government regions

Structure

  • versions.tf - Terraform and provider version constraints
  • main.tf - Azure provider configuration
  • variables.tf - Variable definitions
  • outputs.tf - Output definitions
  • resource-groups.tf - Resource group definitions
  • storage.tf - Storage account definitions
  • modules/ - Reusable Terraform modules (to be created)
  • AZURE_RESOURCE_PROVIDERS.md - Required resource providers documentation
  • EXECUTION_GUIDE.md - Step-by-step execution guide

Prerequisites

Before using Terraform:

  1. Run Azure setup scripts (from project root):

    ./infra/scripts/azure-setup.sh
    ./infra/scripts/azure-register-providers.sh
    
  2. Verify Azure CLI is installed and logged in:

    az --version
    az account show
    
  3. Ensure required resource providers are registered: See AZURE_RESOURCE_PROVIDERS.md for complete list.

Quick Start

# Navigate to Terraform directory
cd infra/terraform

# Initialize Terraform
terraform init

# Review what will be created
terraform plan

# Apply changes
terraform apply

Detailed Execution

See EXECUTION_GUIDE.md for comprehensive step-by-step instructions.

Environments

Environments are managed via the environment variable:

  • dev - Development environment
  • stage - Staging environment
  • prod - Production environment
# Deploy to specific environment
terraform plan -var="environment=dev"
terraform apply -var="environment=dev"

Resources

Currently Defined

  • Resource Groups
  • Storage Accounts (application data and Terraform state)
  • Storage Containers

To Be Created

  • Azure Kubernetes Service (AKS) cluster
  • Azure Database for PostgreSQL
  • Azure Key Vault
  • Azure Container Registry (ACR)
  • Virtual Networks and Subnets
  • Application Gateway / Load Balancer
  • Azure Monitor and Log Analytics

Configuration

Default Region

Default region is West Europe (westeurope). US regions are not allowed.

To use a different region:

terraform plan -var="azure_region=northeurope"

Variables

Key variables (see variables.tf for complete list):

  • azure_region - Azure region (default: westeurope)
  • environment - Environment name (dev, stage, prod)
  • project_name - Project name (default: the-order)
  • create_terraform_state_storage - Create state storage (default: true)

Secrets Management

Secrets are managed using:

  • Azure Key Vault (to be configured)
  • External Secrets Operator for Kubernetes (to be configured)
  • SOPS for local development (optional)

State Management

Terraform state is stored in Azure Storage Account:

  1. First deployment creates storage account locally
  2. After creation, configure remote backend in versions.tf
  3. Re-initialize with terraform init -migrate-state

See EXECUTION_GUIDE.md for detailed instructions.

Outputs

Key outputs (see outputs.tf for complete list):

  • resource_group_name - Main resource group name
  • storage_account_name - Application data storage account
  • azure_region - Azure region being used

View outputs:

terraform output
terraform output resource_group_name

Best Practices

  1. Always review terraform plan before applying
  2. Use workspaces for multiple environments
  3. Never commit .tfstate files
  4. Use remote state backend
  5. Enable versioning on storage accounts
  6. Use .tfvars files for environment-specific values

Troubleshooting

Common issues and solutions:

Resource Provider Not Registered

./infra/scripts/azure-register-providers.sh

Quota Exceeded

./infra/scripts/azure-check-quotas.sh
# Request quota increase in Azure Portal

Invalid Region

  • Ensure region doesn't start with us
  • Default is westeurope
  • See validation in variables.tf

See EXECUTION_GUIDE.md for more troubleshooting tips.

Documentation

  • Execution Guide: EXECUTION_GUIDE.md - Step-by-step deployment instructions
  • Resource Providers: AZURE_RESOURCE_PROVIDERS.md - Required providers and registration
  • Setup Scripts: ../scripts/README.md - Azure CLI setup scripts
  • Deployment Review: ../../docs/reports/DEPLOYMENT_READINESS_REVIEW.md - Overall deployment status

Next Steps

  1. Run setup scripts to register providers
  2. Initialize Terraform
  3. Create initial infrastructure (resource groups, storage)
  4. Configure remote state backend
  5. Add additional resources (AKS, PostgreSQL, Key Vault, etc.)

See EXECUTION_GUIDE.md for detailed step-by-step instructions.