DevOps

Terraform Multi-Cloud Infrastructure: AWS, Azure, and GCP from One Codebase

10 min read PCCVDI Editorial Team

Managing infrastructure across multiple cloud providers without a unified IaC approach leads to configuration drift, manual toil and security gaps. Terraform's provider-agnostic model makes true multi-cloud infrastructure-as-code achievable.

1 Structuring Your Terraform Repository

The root module pattern doesn't scale for multi-cloud. Use a monorepo with modules/ for reusable components, environments/ for environment-specific state (dev/staging/prod), and a providers/ folder for per-cloud provider configurations. Each environment folder contains main.tf, variables.tf, outputs.tf and a backend.tf pointing to remote state. This gives you clear boundaries and enables teams to own their cloud resources independently.

2 Provider Configuration

Configure all three providers in a single root configuration using provider aliases. AWS provider with a cross-account IAM role, Azure provider with a service principal, and GCP provider with a service account key stored in Vault. Use variable interpolation for region selection and avoid hard-coding credentials anywhere in code — use environment variables or a secrets manager.

3 Remote State Management

Multi-cloud state requires a cloud-neutral backend or one backend per cloud. We recommend Terraform Cloud or S3 with DynamoDB locking as the primary state backend. For teams with strict data sovereignty requirements, use Azure Blob Storage with state locking. Never store state files locally — a lost state file is a catastrophic event requiring manual import of every resource.

4 Modules for Cloud Abstraction

Write a network module that accepts cloud_provider = "aws" | "azure" | "gcp" and provisions equivalent networking resources on each. A compute module that provisions EC2, Azure VM or Compute Engine based on provider. This abstraction layer lets you express intent (I need a VPC with 3 subnets) without cloud-specific syntax. The tradeoff: modules become complex; only abstract what you genuinely need across all three providers.

5 CI/CD for Terraform

Use Atlantis or Terraform Cloud for PR-based workflows. Every pull request runs terraform plan and posts the plan as a PR comment. Merging requires team approval of the plan diff. Apply runs automatically on merge to main. Add tflint, tfsec and Checkov to your pipeline for static analysis and security scanning before any infrastructure change reaches production.

P
PCCVDI Editorial Team
Our articles are written and reviewed by practising engineers delivering enterprise IT solutions from New Delhi.
Free Consultation

Transform Your IT Infrastructure Today

A complimentary 30-minute strategy call with certified engineers — no sales pitch, just straightforward technical guidance.

No credit card required Response within 24 hours Speak directly with engineers