Convert Terraform Provider Configuration to JSON
Convert Terraform provider blocks with regions, credentials, aliases, and feature flags from HCL to JSON format.
Detailed Explanation
Terraform Provider Configuration
Provider blocks configure the cloud provider plugins that Terraform uses to manage infrastructure. Multi-region and multi-account setups use provider aliases.
HCL Provider Configuration
terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
random = {
source = "hashicorp/random"
version = "~> 3.5"
}
}
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
}
}
provider "aws" {
region = "us-east-1"
default_tags {
tags = {
ManagedBy = "terraform"
}
}
}
provider "aws" {
region = "eu-west-1"
}
JSON Structure
The terraform block contains required_version, required_providers, and backend as nested structures. Provider blocks are keyed by provider name:
{
"terraform": {
"required_version": ">= 1.5",
"required_providers": {
"aws": {
"source": "hashicorp/aws",
"version": "~> 5.0"
}
},
"backend": {
"s3": {
"bucket": "my-terraform-state",
"key": "prod/terraform.tfstate",
"region": "us-east-1"
}
}
},
"provider": {
"aws": {
"region": "us-east-1"
}
}
}
Provider Aliases
Multiple provider configurations for the same provider use aliases. In HCL:
provider "aws" {
alias = "eu"
region = "eu-west-1"
}
Version Constraints
The ~> 5.0 version constraint means "any 5.x version". Other operators include >=, <=, !=, and exact version pins.
Use Case
Setting up multi-region or multi-account AWS deployments, configuring Terraform state backends, or generating provider configurations from infrastructure catalogs.