Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Multiple provider configurations
📖 Scenario: You are managing infrastructure across two different cloud providers: AWS and Azure. You want to configure Terraform to connect to both providers in the same project.
🎯 Goal: Create a Terraform configuration that sets up two provider blocks: one for AWS and one for Azure, each with an alias. Then create a resource in each provider using the correct provider alias.
📋 What You'll Learn
Configure the AWS provider with alias aws_east and region us-east-1
Configure the Azure provider with alias azure_west
Create an AWS S3 bucket resource named aws_bucket using the aws_east provider
Create an Azure resource group named azure_group using the azure_west provider
💡 Why This Matters
🌍 Real World
Many companies use multiple cloud providers. Knowing how to configure Terraform to manage resources across them is essential.
💼 Career
Cloud engineers and DevOps professionals often manage multi-cloud environments and need to write Terraform code that handles multiple providers.
Progress0 / 4 steps
1
Set up AWS provider with alias
Write a Terraform provider block for AWS with the alias aws_east and set the region to us-east-1.
Terraform
Hint
The alias attribute lets you name this provider configuration so you can use it later.
2
Add Azure provider with alias
Add a Terraform provider block for Azure with the alias azure_west and include the required features {} block.
Terraform
Hint
Azure provider requires a features {} block even if empty.
3
Create AWS S3 bucket using aliased provider
Create a resource block for an AWS S3 bucket named aws_bucket. Use the provider alias aws_east by specifying provider = aws.aws_east.
Terraform
Hint
Use provider = aws.aws_east to tell Terraform which provider alias to use for this resource.
4
Create Azure resource group using aliased provider
Create a resource block for an Azure resource group named azure_group. Use the provider alias azure_west by specifying provider = azurerm.azure_west. Set the resource group name to myResourceGroup and location to westus.
Terraform
Hint
Use provider = azurerm.azure_west to assign the resource to the Azure provider alias.
Practice
(1/5)
1. What is the main purpose of using multiple provider configurations in Terraform?
easy
A. To reduce the size of Terraform state files
B. To speed up Terraform plan execution
C. To manage resources in different cloud accounts or regions
D. To automatically backup Terraform configurations
Solution
Step 1: Understand provider role
Providers in Terraform define where resources are created, such as cloud accounts or regions.
Step 2: Purpose of multiple providers
Using multiple providers allows managing resources across different accounts or regions simultaneously.
Final Answer:
To manage resources in different cloud accounts or regions -> Option C
bucket2 uses provider = aws.east, which refers to the aliased provider with region us-east-1.
Step 2: Confirm region of aliased provider
The alias "east" is set with region = "us-east-1".
Final Answer:
us-east-1 -> Option D
Quick Check:
Aliased provider region = us-east-1 [OK]
Hint: Resource uses aliased provider region [OK]
Common Mistakes:
Assuming default provider region applies
Ignoring provider alias in resource
Confusing region names
4. What is wrong with this Terraform configuration snippet?
provider "aws" {
region = "us-west-2"
}
provider "aws" {
alias = "east"
region = "us-east-1"
}
resource "aws_instance" "example" {
provider = aws.east
ami = "ami-123456"
instance_type = "t2.micro"
}
resource "aws_instance" "example2" {
provider = aws.west
ami = "ami-654321"
instance_type = "t2.micro"
}
medium
A. The provider alias 'east' is missing region
B. The alias 'west' is not defined for any provider
C. The resource 'example' is missing provider assignment
D. The provider block syntax is invalid
Solution
Step 1: Check provider aliases defined
Only alias 'east' is defined; no alias 'west' exists.
Step 2: Identify usage of undefined alias
Resource 'example2' uses provider = aws.west, which is undefined and causes an error.
Final Answer:
The alias 'west' is not defined for any provider -> Option B
Quick Check:
Undefined alias causes error [OK]
Hint: Check all provider aliases are defined before use [OK]
Common Mistakes:
Assuming default provider applies to aliased names
Missing alias attribute in provider block
Incorrect provider block syntax
5. You want to deploy resources to two AWS accounts: Account A in us-west-2 and Account B in us-east-1. You have two provider blocks with aliases west and east. How do you ensure that an S3 bucket resource is created in Account B using Terraform?
hard
A. Set provider = aws.east in the S3 bucket resource block
B. Set region = "us-east-1" inside the S3 bucket resource block
C. Use alias = "east" inside the S3 bucket resource block
D. Create a new provider block inside the S3 bucket resource
Solution
Step 1: Understand provider alias usage
To deploy to Account B, the resource must use the provider with alias 'east'.
Step 2: Assign provider alias to resource
Setting provider = aws.east in the resource block directs Terraform to use that provider configuration.
Final Answer:
Set provider = aws.east in the S3 bucket resource block -> Option A
Quick Check:
Resource provider = aliased provider [OK]
Hint: Assign provider alias in resource block to target account [OK]
Common Mistakes:
Trying to set region inside resource instead of provider
Using alias attribute inside resource block incorrectly