Files
the_order/infra/terraform
defiQUG 8649ad4124 feat: implement naming convention, deployment automation, and infrastructure updates
- Add comprehensive naming convention (provider-region-resource-env-purpose)
- Implement Terraform locals for centralized naming
- Update all Terraform resources to use new naming convention
- Create deployment automation framework (18 phase scripts)
- Add Azure setup scripts (provider registration, quota checks)
- Update deployment scripts config with naming functions
- Create complete deployment documentation (guide, steps, quick reference)
- Add frontend portal implementations (public and internal)
- Add UI component library (18 components)
- Enhance Entra VerifiedID integration with file utilities
- Add API client package for all services
- Create comprehensive documentation (naming, deployment, next steps)

Infrastructure:
- Resource groups, storage accounts with new naming
- Terraform configuration updates
- Outputs with naming convention examples

Deployment:
- Automated deployment scripts for all 15 phases
- State management and logging
- Error handling and validation

Documentation:
- Naming convention guide and implementation summary
- Complete deployment guide (296 steps)
- Next steps and quick start guides
- Azure prerequisites and setup completion docs

Note: ESLint warnings present - will be addressed in follow-up commit
2025-11-12 08:22:51 -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.