Introdução
O Terraform é uma ferramenta popular de código aberto de Infraestrutura como Código (IaC), 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 é o terraform init. Este comando é crucial, pois prepara seu diretório de trabalho para uso com o Terraform. Ele realiza várias ações fundamentais:
- Inicialização do Backend: Configura o backend de armazenamento de estado.
- Instalação de Plugins de Provedores: Analisa seus arquivos de configuração, determina quais provedores são necessários e faz o download deles a partir do Terraform Registry.
- Instalação de Módulos: Faz o download de quaisquer módulos referenciados em sua configuração.
Neste laboratório, você aprenderá o processo fundamental de inicialização de um novo projeto Terraform. Você criará um diretório de projeto, definirá um arquivo de configuração simples e usará o 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 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 serão realizadas dentro do diretório ~/project.
Primeiro, crie um novo diretório chamado terraform-init-lab.
mkdir terraform-init-lab
Em seguida, navegue para o diretório recém-criado. Este será seu diretório de trabalho durante 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 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 chamado de main.tf.
Dentro 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 no main.tf
Nesta etapa, você adicionará o código de configuração ao seu arquivo main.tf. Este código dirá 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 excelente provedor para aprendizado, pois 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 precisa.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 utilizada.
Após colar o código, salve o arquivo e saia do nano pressionando Ctrl+O, depois Enter e, finalmente, Ctrl+X.
Executar o 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 fará o download da versão especificada do provedor hashicorp/local a partir do Terraform Registry.
Certifique-se de que você ainda está no diretório terraform-init-lab e execute o comando de inicialização.
terraform init
Você verá uma saída indicando que o Terraform está inicializando o backend e os plugins de provedores. 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 quanto aos plugins baixados
Nesta etapa, você verificará se o terraform init baixou o plugin do provedor com sucesso. O comando cria um diretório oculto chamado .terraform na pasta do seu 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 dos provedores 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 do 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 seu projeto com sucesso com o provedor necessário.
Resumo
Parabéns! Você concluiu com sucesso este laboratório sobre 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 initpara preparar o projeto. - Verificar se os plugins dos provedores foram baixados para o diretório
.terraform.
Com seu projeto inicializado, você está pronto para seguir para as próximas etapas do fluxo de trabalho do Terraform, como escrever definições de recursos e usar o terraform plan e o terraform apply para gerenciar sua infraestrutura.



