Modules Templates

Dada a estrutura de diretórios abaixo:

├── network
│ ├── data.tf
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── ec2
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── user
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── groups
│ ├── main.tf
│ ├── output.tf
│ └── variables.tf
├── autoscale
│ ├── main.tf
│ ├── outputs.tf
│ ├── user_data.sh
│ └── variables.tf
├── main.tf
├── providers.tf
├── variables.tf
├── locals.tf
├── terraform.tfvars
├── my_variables.json
├── terraform.tfstate
├── terraform.tfstate.backup
└── terraform.tfstate.d

Percebemos uma certa recorrência dos arquivos:

em pastas separadas e na raíz do projeto.

Isso ocorre para que possamos reaproveitar os módulos em outros projetos, e também para que possamos ter uma melhor organização do código, já que o conteudo de cada arquivo main.tf poderia estar em um único arquivo, por exemplo.

main.tf

O arquivo main.tf é o arquivo principal de cada módulo, onde ficam as configurações de cada recurso que será criado.

outputs.tf

O arquivo outputs.tf é onde ficam as saídas de cada módulo, ou seja, os valores que serão retornados para o arquivo main.tf do projeto principal.

variables.tf

O arquivo variables.tf é onde ficam as variáveis de cada módulo, ou seja, os valores que serão passados para o arquivo main.tf do projeto principal.

Arquivos extras

Além dos arquivos acima, também podemos ter outros arquivos, como por exemplo:

  • providers.tf - onde ficam as configurações dos providers
  • locals.tf - onde ficam as variáveis locais
  • data.tf - onde ficam as configurações dos data sources
📝

Nota:
Os arquivos providers.tf, locals.tf e data.tf podem ser criados na raíz do projeto, assim como podem ser criados dentro de cada módulo.

Nas proximas sessões veremos como foram criados os arquivos de cada módulo para o projeto.