Inicialização de Projeto Terraform

LinuxBeginner
Pratique Agora

Introdução

Terraform é uma popular ferramenta de Infraestrutura como Código (IaC - Infrastructure as Code) de código aberto, criada pela HashiCorp. Ela permite definir e provisionar recursos de infraestrutura usando uma linguagem de configuração declarativa.

O primeiro comando que você executará em qualquer novo projeto Terraform é terraform init. Este comando é crucial, pois prepara seu diretório de trabalho para uso com o Terraform. Ele executa várias ações principais:

  • Inicialização do Backend: Configura o local de armazenamento do estado (state storage backend).
  • Instalação de Plugins de Provedor (Provider Plugin Installation): Escaneia seus arquivos de configuração, determina quais provedores são necessários e os baixa do Terraform Registry.
  • Instalação de Módulos (Module Installation): Baixa quaisquer módulos referenciados em sua configuração.

Neste laboratório, você aprenderá o processo fundamental de inicializar um novo projeto Terraform. Você criará um diretório de projeto, definirá um arquivo de configuração simples e usará terraform init para baixar o plugin de provedor necessário.

Criar um novo diretório para o projeto Terraform

Nesta etapa, você criará um diretório dedicado para o seu novo projeto Terraform. É uma boa prática manter cada projeto Terraform em seu próprio diretório para evitar conflitos e manter as configurações organizadas. Todas as suas operações ocorrerão dentro do diretório ~/project.

Primeiro, crie um novo diretório chamado terraform-init-lab.

mkdir terraform-init-lab

Em seguida, navegue até o diretório recém-criado. Este será o seu diretório de trabalho para o restante do laboratório.

cd terraform-init-lab

Seu prompt de terminal agora deve indicar que você está dentro do diretório ~/project/terraform-init-lab.

Criar o arquivo main.tf no diretório do projeto

Nesta etapa, você criará o arquivo de configuração principal para o seu projeto. Os arquivos de configuração do Terraform usam a extensão .tf e são escritos na HashiCorp Configuration Language (HCL). Por convenção, o arquivo de configuração principal é frequentemente nomeado como main.tf.

A partir do seu diretório terraform-init-lab, crie um arquivo vazio chamado main.tf usando o comando touch.

touch main.tf

Você pode verificar se o arquivo foi criado listando o conteúdo do diretório.

ls

Você deverá ver o arquivo main.tf na saída.

main.tf

Definir a configuração do provedor local em main.tf

Nesta etapa, você adicionará código de configuração ao seu arquivo main.tf. Este código informará ao Terraform qual provedor ele precisa baixar e usar. Um provedor é um plugin que permite ao Terraform interagir com uma API específica, como um provedor de nuvem ou um serviço SaaS.

Para este laboratório, usaremos o provedor local, que permite gerenciar arquivos locais. É um ótimo provedor para aprendizado porque não requer credenciais de nuvem.

Abra o arquivo main.tf usando o editor de texto nano.

nano main.tf

Agora, copie e cole o seguinte bloco de código no editor nano. Este bloco terraform especifica os provedores necessários para o projeto.

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "2.4.0"
    }
  }
}

Esta configuração informa ao Terraform:

  • required_providers: Estamos declarando os provedores que este projeto necessita.
  • local: O nome local que estamos dando ao provedor.
  • source: O endereço global do provedor no Terraform Registry, que é hashicorp/local.
  • version: A versão específica do provedor a ser usada.

Após colar o código, salve o arquivo e saia do nano pressionando Ctrl+O, depois Enter, e finalmente Ctrl+X.

Executar terraform init para inicializar o projeto

Nesta etapa, você executará o comando terraform init. Com a configuração do provedor definida, o Terraform agora sabe o que precisa fazer para inicializar o projeto. Ele lerá o arquivo main.tf, encontrará o bloco required_providers e baixará a versão especificada do provedor hashicorp/local do Terraform Registry.

Certifique-se de que você ainda está no diretório terraform-init-lab e, em seguida, execute o comando de inicialização.

terraform init

Você verá uma saída indicando que o Terraform está inicializando o backend e os plugins do provedor. Uma inicialização bem-sucedida terminará com uma mensagem de sucesso.

Initializing the backend...

Initializing provider plugins...
- Finding hashicorp/local versions matching "2.4.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)

Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Verificar o diretório .terraform para plugins baixados

Nesta etapa, você verificará se o terraform init baixou com sucesso o plugin do provedor. O comando cria um diretório oculto chamado .terraform na sua pasta de projeto para armazenar esses plugins e outros dados de inicialização.

Primeiro, liste todos os arquivos e diretórios, incluindo os ocultos, para ver os novos artefatos criados pelo comando init.

ls -a

Você deverá ver o diretório .terraform e um arquivo .terraform.lock.hcl na saída. O arquivo de bloqueio (lock file) registra as versões do provedor selecionadas durante a inicialização.

.  ..  main.tf  .terraform  .terraform.lock.hcl

Agora, vamos inspecionar o conteúdo do diretório .terraform para ver o provedor baixado. Você pode usar o comando tree para uma visualização hierárquica clara.

tree .terraform

A saída mostrará a estrutura de diretórios onde o plugin do provedor está armazenado. Você pode ver o arquivo executável para o provedor local baixado do registro.

.terraform
└── providers
    └── registry.terraform.io
        └── hashicorp
            └── local
                └── 2.4.0
                    └── linux_amd64
                        └── terraform-provider-local_v2.4.0_x5

6 directories, 1 file

Isso confirma que o terraform init configurou com sucesso seu projeto com o provedor necessário.

Resumo

Parabéns! Você concluiu com sucesso este laboratório sobre a inicialização de projetos Terraform.

Neste laboratório, você aprendeu os primeiros passos essenciais para iniciar um novo projeto Terraform. Você praticou:

  • Criar um diretório dedicado para um projeto Terraform.
  • Definir os provedores necessários em um arquivo de configuração main.tf.
  • Executar o comando terraform init para preparar o projeto.
  • Verificar se os plugins do provedor foram baixados para o diretório .terraform.

Com seu projeto inicializado, você está agora pronto para prosseguir para as próximas etapas no fluxo de trabalho do Terraform, como escrever definições de recursos e usar terraform plan e terraform apply para gerenciar sua infraestrutura.