No Terragrunt, voce pode chamar varios modulos Terraform de um unico arquivo de configuracao Terragrunt usando o bloco terraform em combinacao com configuracoes filhas. Isso normalmente e feito organizando sua configuracao Terragrunt em uma hierarquia onde cada modulo e referenciado em seu proprio arquivo Terragrunt, mas gerenciado centralmente usando um arquivo Terragrunt pai.

Aqui esta um esboco basico de como voce pode estruturar isso:

  1. Crie um Arquivo Terragrunt Pai: Este arquivo nao implantara diretamente recursos, mas sera usado para configurar definicoes comuns e orquestrar a implantacao dos modulos.
  2. Crie Arquivos Terragrunt Filhos para Cada Modulo: Cada modulo tera seu proprio arquivo de configuracao Terragrunt que especifica a fonte do modulo Terraform e quaisquer entradas necessarias.

Estrutura de Exemplo

Aqui esta uma estrutura de diretorio de exemplo:

/terraform-live
|-- terragrunt.hcl  # Configuracao pai
|-- network
|   |-- terragrunt.hcl  # Configuracao do modulo network
|-- app
|   |-- terragrunt.hcl  # Configuracao do modulo app

Terragrunt.hcl Pai

# /terraform-live/terragrunt.hcl
remote_state {
  backend = "s3"
  config = {
    bucket         = "my-terraform-state"
    key            = "${path_relative_to_include()}/terraform.tfstate"
    region         = "us-west-1"
    encrypt        = true
    dynamodb_table = "my-lock-table"
  }
}

Incluir todas as configuracoes filhas

include { path = find_in_parent_folders() }

Terragrunt.hcl Filho (ex.: para Network)

# /terraform-live/network/terragrunt.hcl
terraform {
  source = "git::https://example.com/network-module.git?ref=v1.0"
}

Entradas especificas do modulo network

inputs = { vpc_id = “vpc-123456” }

Uso

Para aplicar todos os modulos, voce normalmente navegaria ate cada diretorio de modulo e executaria comandos Terragrunt, como terragrunt apply. Voce tambem pode automatizar isso com scripts ou fluxos de trabalho CI/CD que percorrem os diretorios de modulos e executam comandos Terragrunt.

Esta configuracao permite manter uma clara separacao de responsabilidades, codigo reutilizavel e consistencia entre ambientes enquanto gerencia a implantacao de varios modulos a partir de uma configuracao centralizada.