Criação Básica de Recursos com Terraform

LinuxBeginner
Pratique Agora

Introdução

Terraform é uma ferramenta de Infraestrutura como Código (IaC - Infrastructure as Code) de código aberto criada pela HashiCorp. Ela permite que você defina e provisione infraestrutura de data center usando uma linguagem de configuração declarativa. Isso significa que você descreve a infraestrutura desejada em arquivos de configuração, e o Terraform descobrirá como criar, atualizar ou excluir recursos para corresponder a esse estado.

O fluxo de trabalho central do Terraform consiste em três estágios principais:

  1. Escrever (Write): Criar a infraestrutura como código.
  2. Planejar (Plan): Visualizar as alterações antes de aplicá-las.
  3. Aplicar (Apply): Provisionar e gerenciar sua infraestrutura.

Neste laboratório, você percorrerá todo esse fluxo de trabalho criando um recurso muito simples: um arquivo local. Usar o provedor local é uma excelente maneira de aprender a mecânica do Terraform sem a necessidade de credenciais para um provedor de nuvem. Você definirá um arquivo, planejará sua criação, aplicará as alterações e verificará o resultado.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 98%. Recebeu uma taxa de avaliações positivas de 97% dos estudantes.

Definir um recurso local_file em main.tf

Nesta etapa, você começará definindo um recurso no seu arquivo de configuração do Terraform. Todas as configurações do Terraform são escritas em arquivos que terminam com a extensão .tf. O arquivo de configuração principal é comumente nomeado main.tf.

Um bloco resource é a sintaxe principal para declarar um objeto de infraestrutura. Ele define um recurso de um determinado tipo (ex: local_file) com um determinado nome local (ex: example). A combinação do tipo e do nome deve ser única dentro de um módulo.

Primeiro, abra o arquivo main.tf no seu diretório ~/project usando o editor de texto nano.

nano main.tf

Agora, adicione o seguinte código ao arquivo. Isso define um recurso do tipo local_file e lhe dá o nome local example. Por enquanto, o bloco de recurso está vazio.

resource "local_file" "example" {
}

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

Especificar nome do arquivo e conteúdo no bloco de recurso

Nesta etapa, você adicionará argumentos ao bloco de recurso para especificar as propriedades do arquivo que deseja criar. Argumentos são os pares chave-valor dentro de um bloco de recurso que definem sua configuração. Para um recurso local_file, os dois argumentos mais importantes são filename e content.

  • filename: O caminho para o arquivo que será criado.
  • content: O conteúdo a ser escrito no arquivo.

Abra o arquivo main.tf novamente com nano.

nano main.tf

Modifique o bloco de recurso local_file para incluir os argumentos filename e content conforme mostrado abaixo.

resource "local_file" "example" {
  content  = "Hello, Terraform!"
  filename = "${path.module}/hello.txt"
}

Aqui, estamos instruindo o Terraform a criar um arquivo chamado hello.txt no diretório atual do projeto. ${path.module} é uma expressão especial do Terraform que se resolve para o caminho do módulo atual, que neste caso é ~/project. O conteúdo do arquivo será a string "Hello, Terraform!".

Salve o arquivo e saia do nano pressionando Ctrl+X, Y e Enter.

Inicializar Terraform e Pré-visualizar Alterações

Nesta etapa, você primeiro inicializará seu projeto Terraform e, em seguida, executará o comando terraform plan para criar um plano de execução.

Antes de poder planejar quaisquer alterações, você deve inicializar o projeto. O comando terraform init escaneia sua configuração, baixa os provedores necessários (neste caso, para local_file) e configura o backend.

No seu terminal, execute primeiro terraform init:

terraform init

Após a inicialização ser bem-sucedida, execute terraform plan. Este comando é uma parte crucial do fluxo de trabalho do Terraform, pois fornece uma "execução de teste" (dry run) das alterações. Ele mostra o que o Terraform fará com sua infraestrutura sem realmente fazer nenhuma alteração. Isso permite que você revise e verifique as ações pretendidas antes que sejam aplicadas.

terraform plan

O Terraform lerá seu arquivo de configuração e o comparará com o estado atual da sua infraestrutura (que está atualmente vazia). Em seguida, ele exibirá um plano de ação. Você deverá ver uma saída semelhante à seguinte, indicando que um recurso será criado.

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "Hello, Terraform!"
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

O símbolo + ao lado de resource "local_file" "example" significa que este recurso será criado. A saída detalha todos os atributos que serão definidos no novo arquivo.

Executar terraform apply para criar o recurso

Nesta etapa, você aplicará as alterações usando o comando terraform apply para realmente criar o arquivo. Este comando executa as ações propostas na saída do terraform plan.

Por padrão, terraform apply mostrará o plano novamente e solicitará confirmação interativa antes de prosseguir. Para torná-lo não interativo, o que é útil para laboratórios e automação, você pode usar a flag -auto-approve.

Execute o seguinte comando no seu terminal:

terraform apply -auto-approve

O Terraform agora executará o plano. A saída primeiro mostrará o plano novamente, seguido pelo progresso da aplicação. Após a conclusão, você verá uma mensagem de confirmação.

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "Hello, Terraform!"
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=42086c02e03bf671ddf621ed9922f52f2c7a605c]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

A mensagem "Apply complete!" confirma que o Terraform criou com sucesso o recurso conforme definido na sua configuração.

Verificar se o arquivo criado existe no sistema de arquivos

Nesta etapa final, você verificará se o Terraform criou com sucesso o arquivo no seu sistema de arquivos local conforme especificado. Como você usou o recurso local_file, o resultado é um arquivo tangível no seu diretório de projeto.

Primeiro, use o comando ls para listar os arquivos no diretório atual. Você deverá ver hello.txt ao lado do seu arquivo de configuração do Terraform.

ls

Saída esperada:

hello.txt  main.tf  terraform.tfstate

Em seguida, use o comando cat para exibir o conteúdo do arquivo hello.txt recém-criado.

cat hello.txt

Você deverá ver o conteúdo que definiu em main.tf.

Hello, Terraform!

Isso confirma que sua configuração do Terraform foi aplicada com sucesso e o recurso foi criado exatamente como você o definiu no seu código.

Resumo

Parabéns! Você concluiu com sucesso seu primeiro projeto Terraform.

Neste laboratório, você aprendeu o fluxo de trabalho fundamental do Terraform:

  1. Escrever (Write): Você definiu um recurso local_file em um arquivo de configuração main.tf.
  2. Planejar (Plan): Você usou terraform plan para pré-visualizar a criação do arquivo sem fazer nenhuma alteração.
  3. Aplicar (Apply): Você usou terraform apply para executar o plano e criar o arquivo no seu sistema de arquivos local.

Este exemplo simples de criação de um arquivo local demonstra o poder central da Infraestrutura como Código (Infrastructure as Code). Você declarou o estado desejado de um recurso em um arquivo de configuração, e o Terraform cuidou da lógica para alcançar esse estado. Os mesmos princípios se aplicam ao gerenciar infraestruturas mais complexas, como máquinas virtuais, redes e bancos de dados na nuvem.