graph TD
%% Define the environments
subgraph "Development Environment"
dev_ec2[EC2 Instance]
dev_s3[S3 Bucket]
dev_dynamo[DynamoDB Table]
end
subgraph "Staging Environment"
stg_ec2[EC2 Instance]
stg_s3[S3 Bucket]
stg_dynamo[DynamoDB Table]
end
subgraph "Production Environment"
prod_ec2_1[EC2 Instance 1]
prod_ec2_2[EC2 Instance 2]
prod_ec2_3[EC2 Instance 3]
prod_s3_1[S3 Bucket 1]
prod_s3_2[S3 Bucket 2]
prod_dynamo[DynamoDB Table]
end
%% Define relationships
dev_ec2 --> dev_s3
dev_ec2 --> dev_dynamo
stg_ec2 --> stg_s3
stg_ec2 --> stg_dynamo
prod_ec2_1 --> prod_s3_1
prod_ec2_2 --> prod_s3_1
prod_ec2_3 --> prod_s3_2
prod_ec2_1 --> prod_dynamo
prod_ec2_2 --> prod_dynamo
prod_ec2_3 --> prod_dynamo
This project uses Terraform workspaces to manage multiple environments (Dev, Stg, Prod).
main.tf- Main configuration file with resource definitionsvariables.tf- Input variableslocals.tf- Local variables for environment configurationsoutputs.tf- Output values
-
Initialize Terraform:
terraform init -
Create and select a workspace:
terraform workspace new dev terraform workspace new stg terraform workspace new prod terraform workspace select dev -
Deploy resources:
terraform plan terraform apply -
To switch environments:
terraform workspace select stg terraform apply
