Criação de Recursos Básicos com Terraform

LinuxBeginner
Pratique Agora

Introdução

O Terraform é uma ferramenta de Infraestrutura como Código (IaC) de código aberto criada pela HashiCorp. Ele permite definir e provisionar a infraestrutura de um 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 descobre como criar, atualizar ou excluir recursos para corresponder a esse estado.

O fluxo de trabalho central do Terraform consiste em três etapas principais:

  1. Write (Escrever): Criar a infraestrutura como código.
  2. Plan (Planejar): Visualizar as alterações antes de aplicá-las.
  3. Apply (Aplicar): 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 precisar de credenciais para um provedor de nuvem. Você definirá um arquivo, planejará sua criação, aplicará as alterações e verificará o resultado.

Definir um recurso local_file no main.tf

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

Um bloco resource é a sintaxe primária para declarar um objeto de infraestrutura. Ele define um recurso de um determinado tipo (por exemplo, local_file) com um determinado nome local (por exemplo, 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 atribui a ele 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 o 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 dizendo ao Terraform para criar um arquivo chamado hello.txt no diretório atual do projeto. O ${path.module} é uma expressão especial do Terraform que é resolvida 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 o Terraform e visualizar as 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 planejar qualquer alteração, você deve inicializar o projeto. O comando terraform init verifica sua configuração, baixa os provedores necessários (neste caso, para local_file) e configura o backend.

No seu terminal, execute primeiro o terraform init:

terraform init

Após a inicialização bem-sucedida, execute terraform plan. Este comando é uma parte crucial do fluxo de trabalho do Terraform, pois fornece uma "simulação" das alterações. Ele mostra o que o Terraform fará na 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 atualmente está 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 criar o arquivo de fato. Este comando executa as ações propostas na saída do terraform plan.

Por padrão, 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 executará o plano agora. A saída mostrará o plano novamente, seguido pelo progresso da aplicação. Uma vez concluído, 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 o recurso com sucesso conforme definido em sua configuração.

Verificar se o arquivo criado existe no sistema de arquivos

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

Primeiro, use o comando ls para listar os arquivos no diretório atual. Agora você deve ver o 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ê deve ver o conteúdo que definiu no main.tf.

Hello, Terraform!

Isso confirma que sua configuração do Terraform foi aplicada com sucesso e o recurso foi criado exatamente como você 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. Write (Escrever): Você definiu um recurso local_file em um arquivo de configuração main.tf.
  2. Plan (Planejar): Você usou o terraform plan para visualizar a criação do arquivo sem fazer nenhuma alteração.
  3. Apply (Aplicar): Você usou o 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. Você declarou o estado desejado de um recurso em um arquivo de configuração, e o Terraform lidou com a lógica para atingir esse estado. Os mesmos princípios se aplicam ao gerenciar infraestruturas mais complexas, como máquinas virtuais, redes e bancos de dados na nuvem.