JSON / YAML → Terraform HCL
Engenharia de infraestrutura Terraform HCL

Gerador de variáveis e locals do Terraform HCL a partir de JSON / YAML

Converta estruturas JSON e YAML em restrições de tipo de variáveis Terraform HCL (type = object({...})), valores padrão, blocos locals e definições terraform.tfvars.

Zero transmissão ao servidor
Terraform 1.3+ optional()
Predefinições:
Payload de entrada (JSON / YAML)yaml
variable "app_config" {
  description = "Auto-generated Terraform variable constraint for app_config"
  type = object({
    cidr_block           = string
    enable_dns_hostnames = bool
    enable_dns_support   = bool
    max_azs              = number
    nat_gateways         = list(string)
    subnets              = list(object({
      az             = string
      cidr           = string
      is_public      = bool
      name           = string
      route_table_id = string
    }))
    tags                 = map(string)
    vpc_name             = string
  })
  default = {
    cidr_block           = "10.100.0.0/16"
    enable_dns_hostnames = true
    enable_dns_support   = true
    max_azs              = 3
    nat_gateways         = ["nat-08127394821a", "nat-09823412344b"]
    subnets              = [
      {
        az             = "us-east-1a"
        cidr           = "10.100.1.0/24"
        is_public      = true
        name           = "public-1a"
        route_table_id = "rtb-01a9b2c3d4"
      },
      {
        az             = "us-east-1b"
        cidr           = "10.100.2.0/24"
        is_public      = true
        name           = "public-1b"
        route_table_id = "rtb-01a9b2c3d4"
      },
      {
        az             = "us-east-1a"
        cidr           = "10.100.10.0/24"
        is_public      = false
        name           = "private-app-1a"
        route_table_id = "rtb-09f8e7d6c5"
      },
      {
        az             = "us-east-1b"
        cidr           = "10.100.11.0/24"
        is_public      = false
        name           = "private-app-1b"
        route_table_id = "rtb-09f8e7d6c5"
      }
    ]
    tags                 = {
      CostCenter  = "infra-0091"
      Environment = "production"
      ManagedBy   = "terraform"
      Owner       = "cloud-platform-team"
    }
    vpc_name             = "prod-useast1-vpc"
  }
}
Complexidade do esquema
13 Campos inferidosProfundidade 2
Atributos opcionais
0 Opcionais detectadosv1.3+ Ativado
Dialetos de exportação
4 Formatos de saída.tf / .tfvars / .json

Síntese AST 100% no lado do cliente

Toda a análise de JSON e YAML, a travessia da árvore AST e a síntese de tipos do Terraform HCL são executadas localmente na memória do navegador, sem solicitações de rede ou telemetria.

Conformidade com Terraform 1.3+ e opcionais

Detecta automaticamente campos ausentes ou anuláveis e os envolve na sintaxe padrão optional(type, default), prevenindo erros de tipo em tempo de execução durante o terraform plan.

Exportação de infraestrutura multidialeto

Exporta facilmente restrições de tipo para variables.tf, definições de valor para terraform.tfvars, blocos de configuração para locals.tf e arquivos tfvars.json prontos para produção.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Variáveis e Locals Terraform HCL a partir de JSON / YAML — Guia de referência

Converta estruturas JSON e YAML em restrições de tipo de variáveis Terraform HCL (type = object({...})), valores padrão, blocos locals e definições terraform.tfvars.

Parâmetros principais e controles

source_formatstring

Define o analisador da carga útil de entrada ('json' ou 'yaml').

Padrão: "json"
target_modestring

Determina o formato HCL de saída: 'variable' (com restrição de tipo e default), 'locals' (expressão computada interna) ou 'tfvars' (atribuição direta de valores).

Padrão: "variable"
variable_namestring

Nome do identificador atribuído ao bloco de variável HCL ou chave de locals.

Padrão: "app_config"
use_optional_attributesboolean

Habilita a sintaxe optional() do Terraform 1.3+ com valores de fallback para atributos anuláveis ou opcionais.

Padrão: true
indent_spacesnumber

Quantidade de espaços aplicados na indentação dos blocos HCL gerados.

Padrão: 2

Dicas profissionais e melhores práticas

Em objetos aninhados

Em objetos aninhados, defina campos opcionais com optional(tipo, valor_padrao). Isso evita erros de ponteiro nulo em tempo de execução e dispensa o uso repetitivo da função coalesce() nos módulos filhos.

Mapeie arrays heterogêneos com tuple

Listas com tipos uniformes convertem-se diretamente em list(string). Para arrays com dados mistos ou estruturas variáveis, declare tuple([tipo1, tipo2]) em vez de list(any), assegurando validação rigorosa.

Se suas automações geram configurações

Se suas automações geram configurações JSON em tempo de execução, salve o arquivo como terraform.auto.tfvars.json. O Terraform faz a leitura nativa sem necessidade de conversão prévia para sintaxe HCL.

Envolva chaves com hífen entre aspas

No HCL, identificadores sem aspas contendo hífens são interpretados como operações de subtração. Chaves com hífens ou pontos devem ser delimitadas por aspas: "service-name" = string.

Problemas comuns e solução de problemas

Erro: Invalid attribute name por hífens em identificadores HCL

Chaves sem aspas contendo hífens geram falhas de sintaxe. Adicione aspas duplas à chave do objeto, por exemplo: "cluster-name" = object({...}).

Incompatibilidade de tipo ao atribuir null a atributos não anuláveis

Por padrão, atributos de objetos não aceitam null no Terraform. Use optional(tipo) no esquema ou configure nullable = true no bloco de declaração da variável.

Erro de leitura devido à indentação incorreta em blocos multilinhas YAML

Certifique-se de que escalares multilinhas (| ou >) utilizem recuo consistente de 2 espaços e não contenham caracteres de tabulação (\t).

Perguntas frequentes (FAQ)

Como este gerador mapeia tipos JSON/YAML para tipos Terraform HCL?▼

Strings tornam-se string, números tornam-se number e booleanos tornam-se bool. Arrays homogêneos viram list(tipo), arrays com tipos variados viram tuple([...]), mapas regulares viram map(tipo) e objetos com chaves fixas viram estruturas tipadas object({...}).

Qual a diferença entre gerar um bloco variable e um bloco locals?▼

O bloco variable estabelece um contrato de entrada externo com restrições de tipo e valores padrão. O bloco locals é reservado para expressões internas calculadas que não podem ser sobrescritas fora do módulo.

Por que devo preferir type = object({...}) a type = any?▼

O tipo any desativa a validação estática no comando terraform validate, adiando a descoberta de erros para a execução. Esquemas de objetos explícitos fornecem autocompletar em IDEs e protegem contra regressões.

O código gerado é compatível com Terraform Cloud e Terragrunt?▼

Sim. Os blocos de variáveis podem ser adicionados ao arquivo variables.tf e os valores podem ser fornecidos via terraform.tfvars ou nos blocos inputs do terragrunt.hcl.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor: Conversor de OpenAPI / Swagger para GraphQL SDLDesenvolvimento

Converta endpoints REST, corpos de requisição e esquemas JSON de OpenAPI 3.0/3.1 e Swagger 2.0 em tipos, consultas, mutações e definições de entrada GraphQL SDL.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Schemas TypeScript TypeBox a partir de DDL SQLDesenvolvimento

Converta instruções SQL CREATE TABLE em esquemas de validação em tempo de execução @sinclair/typebox usando Type.Object, Type.String, Type.Number e Type.Optional.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Rust (reqwest e tokio)Desenvolvimento

Converta comandos cURL em requisições HTTP idiomáticas e assíncronas em Rust utilizando reqwest, serde_json, cabeçalhos customizados e runtime Tokio.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Ruby (Net::HTTP e Faraday)Desenvolvimento

Converta comandos cURL em código Ruby limpo e idiomático utilizando Net::HTTP, URI, Faraday e manipulação nativa de JSON.

Abrir ferramenta→
Gerador de NetworkPolicy K8S Referência para DesenvolvedoresDesenvolvimento

Referência de engenharia para gerar manifestos declarativos de NetworkPolicy no Kubernetes, isolamento zero-trust de pods, regras de ingress/egress, blocos CIDR e múltiplas portas.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de YAML Kubernetes RBAC Role & ClusterRoleBindingDesenvolvimento

Crie manifestos Kubernetes RBAC para Role, ClusterRole, RoleBinding e ClusterRoleBinding com grupos de API, verbos de recursos e contas de serviço.

Abrir ferramenta→