Terraform Best Practices
Terraform consultingTwitter @antonbabenkoTerraform Weekly
Português (Brazilian Portuguese)
Português (Brazilian Portuguese)
  • Seja Bem-Vindo(a)
  • Conceitos chave
  • Estrutura do código
  • Exemplos de estrutura de códigos
    • Terragrunt
    • Terraform
      • Infraestrutura pequena com o Terraform
      • Infraestrutura média com o Terraform
      • Infraestrutura grande com o Terraform
  • Convenções de nomenclatura
  • Estilo de código
  • FAQ
  • Referências
  • Escrevendo configurações do Terraform
  • Workshop
Powered by GitBook
On this page
  • Recursos
  • Módulo de Recursos
  • Módulo de infraestrutura
  • Composição
  • Fonte de Dados
  • Estado Remoto
  • Provedor, Aprovisionador, etc
  • Por que é tão difícil?
Export as PDF

Conceitos chave

PreviousSeja Bem-Vindo(a)NextEstrutura do código

Last updated 3 years ago

A documentação oficial do Terraform descreve. Leia-o com atenção para entender o restante desta seção.

Recursos

Um recurso é aws_vpc, aws_db_instance, etc. Um recurso pertence a um provedor, aceita argumentos, produz atributos e tem ciclos de vida. Um recurso pode ser criado, recuperado, atualizado e excluído.

Módulo de Recursos

O módulo de recursos é uma coleção de recursos conectados, que juntos, executam a ação comum (por exemplo, o cria VPC, sub-redes, gateway NAT, etc.). Depende da configuração do provedor, que pode ser definida nele, ou em estruturas de nível superior (por exemplo, no módulo de infraestrutura).

Módulo de infraestrutura

Um módulo de infraestrutura é uma coleção de módulos de recursos, que podem ser logicamente não conectados, mas na situação/projeto/configuração atual servem ao mesmo propósito. Ele define a configuração para provedores, passada para os módulos de recursos downstream e para os recursos. Normalmente é limitado a trabalhar em uma entidade por separar lógico (por exemplo, região da AWS, projeto do Google).

Por exemplo, o módulo utiliza módulo de recursos tais como o e para gerenciar infraestrutura necessária para executar o no .

Outro exemplo é o módulo , onde vários módulos do estão sendo utilizados juntos para gerenciar a infraestrutura, assim como utilizar recursos do Docker para criar, enviar e implantar imagens Docker. Tudo em um conjunto.

Composição

Composição é uma coleção de módulos de infraestrutura, que podem abranger várias áreas separadas logicamente (por exemplo, regiões da AWS, várias contas da AWS). A composição é usada para descrever a infraestrutura completa necessária para toda a organização ou projeto.

Uma composição consiste em módulos de infraestrutura, que consistem em módulos de recursos, que implementam recursos individuais.

Fonte de Dados

A fonte de dados executa uma operação somente leitura e é dependente da configuração do provedor, é também usada em um módulo de recursos e em um módulo de infraestrutura.

A fonte de dados terraform_remote_state atua como uma “cola” para módulos e composições de nível superior.

Estado Remoto

Provedor, Aprovisionador, etc

Provedores, provisionadores e alguns outros termos estão muito bem descritos na documentação oficial e não vale a pena repetir aqui. Na minha opinião, eles têm pouco a ver com escrever bons módulos Terraform.

Por que é tão difícil?

O acesso aos dados entre moléculas (módulos de recursos e módulos de infraestrutura) é realizado utilizando saídas e fontes de dados dos módulos.

Ao colocar os conceitos descritos acima em pseudo-relações, pode-se ficar assim:

composition-1 {
  infrastructure-module-1 {
    data-source-1 => d1

    resource-module-1 {
      data-source-2 => d2
      resource-1 (d1, d2)
      resource-2 (d2)
    }

    resource-module-2 {
      data-source-3 => d3
      resource-3 (d1, d3)
      resource-4 (d3)
    }
  }

}

Já uma fonte de dados , permite que um programa externo atue como fonte de dados, expondo informações arbitrários para uso em outro lugar na configuração do Terraform. Aqui está um exemplo do módulo , onde o nome do arquivo é calculado chamando um script Python externo.

A fonte de dados realiza uma solicitação HTTP GET para o URL fornecido e exporta informações sobre a resposta, o que geralmente é útil para obter informações de terminais onde um provedor Terraform nativo não existe.

Módulos de infraestrutura e composições devem manter seu em um local remoto, onde possam ser recuperados por outros de maneira controlável (por exemplo, especificar ACL, versionamento, logging).

Enquanto os recursos individuais são como átomos na infraestrutura, os módulos de recursos são moléculas. Um módulo é a menor unidade com versão e compartilhável. Possui uma lista exata de argumentos, implementa lógica básica para que tal unidade realize a função necessária. Por exemplo, o módulo cria recursos aws_security_group e aws_security_group_rule com base no input. Este módulo de recursos por si só pode ser usado em conjunto com outros módulos para criar o módulo de infraestrutura.

O acesso entre composições geralmente é realizado usando fontes de dados de estado remoto. .

externa
terraform-aws-lambda
http
estado Terraform
terraform-aws-security-group
Existem várias maneiras de compartilhar dados entre as configurações
todos os aspectos da configuração em detalhes
módulo AWS VPC Terraform
terraform-aws-atlantis
terraform-aws-vpc
terraform-aws-security-group
Atlantis
AWS Fargate
terraform-aws-cloudquery
terraform-aws-modules
Composição de infraestrutura simples