Configuração e script do Terraform
Nesta unidade, vamos examinar a configuração e o script do Terraform.
Por que usar o Terraform?
Como gerente de infraestrutura, você precisa ter uma ferramenta para provisionar e gerenciar a infraestrutura do Azure. O ideal também será usar uma infraestrutura como código nos arquivos de configuração que descrevem a topologia dos recursos do Azure.
O Terraform da HashiCorp é ótimo na implantação de uma infraestrutura entre provedores de nuvem. Ele oferece aos desenvolvedores ferramentas consistentes para gerenciar cada definição de infraestrutura.
Automatizar o gerenciamento de infraestrutura
Usando arquivos de configuração do Terraform baseados em modelo, você pode definir, provisionar e configurar recursos do Azure de maneira repetível e previsível. Essa automação oferece vários benefícios:
- Reduz o potencial de erro humano, pois ele implanta e gerencia a infraestrutura.
- Implanta o mesmo modelo várias vezes para criar ambientes idênticos de desenvolvimento, teste e produção.
- Reduz o custo de ambientes de desenvolvimento e teste criando-os sob demanda.
Entender as alterações de infraestrutura antes que elas sejam aplicadas
À medida que uma topologia de recursos se torna cada vez mais complexa, pode ser difícil entender o significado e o efeito das alterações de infraestrutura.
Usando o Terraform, você pode validar e visualizar as alterações de infraestrutura antes de aplicá-las. Os membros da equipe podem colaborar com mais eficiência, compreendendo as alterações propostas e o efeito delas logo no início do processo de desenvolvimento.
Arquivos de configuração do Terraform
Os arquivos de configuração geram um plano de execução, além de informar de que modo ele alcançará o estado desejado. Em seguida, o Terraform poderá criar a infraestrutura descrita. Conforme a configuração é alterada, o Terraform poderá determinar alterações e criar planos de execução incrementais.
Os arquivos de configuração do Terraform usam uma linguagem de configuração própria, semelhante ao YAML, projetada para permitir uma descrição da infraestrutura.
Crie arquivos de configuração usando a sintaxe do HCL (Linguagem de Configuração HashiCorp). O HCL é declarativo. Ele descreve uma meta desejada em vez de etapas para alcançar essa meta. A sintaxe do HCL permite que você especifique o provedor de nuvem, como o Azure, bem como os elementos que compõem sua infraestrutura de nuvem.
Os arquivos de configuração são armazenados como arquivos de texto sem formatação com uma extensão de arquivo .tf. Eles são:
- main.tf: (obrigatório) define a estrutura principal, implantando a infraestrutura completa diretamente ou por meio de chamadas aos módulos
- outputs.tf: identifica cada valor retornado de um módulo do Terraform
- variables.tf: define as variáveis em main.tf, sendo elas obrigatórias ou não
Módulos
Os recursos do Terraform podem ser agrupados em um módulo, o que cria uma unidade maior de configuração. Esses módulos são conjuntos de arquivos de configuração que são armazenados em um só diretório. Uma configuração simples consiste em um diretório individual com um ou mais arquivos .tf.
Os módulos oferecem muitos benefícios. Por exemplo, eles:
- Ajudam a organizar seu projeto.
- Encapsulam a complexidade.
- Permitem reutilizar tarefas comuns.
- Fornecem consistência e verificam se você está seguindo boas práticas.
O arquivo main.tf
O arquivo main.tf contém o conjunto principal de detalhes de configuração do módulo. Esse arquivo com frequência é chamado de plano do Terraform. O plano do Terraform especifica os recursos necessários de infraestrutura. Você pode nomear esse arquivo como preferir, mas ele costuma ser chamado de main.tf.
Fluxo de trabalho do Terraform
O Terraform recomenda o próprio fluxo de trabalho básico de “inicialização, planejamento e aplicação” para automação. Esse fluxo de trabalho executa todas as ações da CI/CD do Terraform em solicitações de pull novas e atualizadas do Git.
As principais ações desse fluxo de trabalho são:
- Inicializar: inicialize um diretório de trabalho usando arquivos de configuração do Terraform
- Planejar: elabore um plano para alterar recursos a fim de obter uma correspondência com a configuração atual
- Aplicar: aplique as alterações descritas no plano
Estado
O estado permite que o Terraform saiba quais recursos do Azure serão adicionados, atualizados ou excluídos.
O Terraform usa o estado para criar planos e fazer alterações na infraestrutura. Antes de uma operação, o Terraform executa uma atualização a fim de atualizar o estado usando a infraestrutura real.
O estado é armazenado por padrão em um arquivo de texto local chamado terraform.tfstate. O Terraform gerencia esse arquivo usando as ações de fluxo de trabalho que você define nos módulos.
Armazene também o estado remotamente, uma abordagem que funciona melhor em um ambiente de equipe. Para obter mais informações sobre como gerenciar o estado remotamente, confira a unidade Resumo no final deste módulo.
Próximas etapas
Na próxima unidade, vamos abordar como usar o GitHub Actions ou o Azure Pipelines para provisionar e implantar aplicativos.