Files
the_order/infra/terraform/README.md
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

191 lines
4.7 KiB
Markdown

# 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):
```bash
./infra/scripts/azure-setup.sh
./infra/scripts/azure-register-providers.sh
```
2. **Verify Azure CLI is installed and logged in**:
```bash
az --version
az account show
```
3. **Ensure required resource providers are registered**:
See `AZURE_RESOURCE_PROVIDERS.md` for complete list.
## Quick Start
```bash
# 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
```bash
# 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:
```bash
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:
```bash
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
```bash
./infra/scripts/azure-register-providers.sh
```
### Quota Exceeded
```bash
./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.**