Gerenciamento de Saídas (Outputs) do Terraform

LinuxBeginner
Pratique Agora

Introdução

No Terraform, os valores de saída (output values) são uma forma de expor dados significativos sobre seus recursos após a implantação. Eles são como os valores de retorno de um módulo Terraform e podem ser usados para consultar facilmente informações como o endereço IP de um servidor, uma string de conexão de banco de dados ou um caminho de arquivo. Isso torna a informação facilmente acessível a partir da linha de comando e permite que outras configurações do Terraform a utilizem.

Neste laboratório, você aprenderá a definir, aplicar e visualizar valores de saída. Começaremos com uma configuração básica do Terraform que cria um arquivo local e, em seguida, adicionaremos um bloco de saída (output block) para expor o caminho do arquivo.

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 95%. Recebeu uma taxa de avaliações positivas de 85% dos estudantes.

Criar o arquivo outputs.tf para definições de saída

Nesta etapa, criaremos um arquivo dedicado para nossas definições de saída. Embora você possa colocar blocos de saída (output blocks) em qualquer arquivo .tf, é uma convenção comum e uma boa prática colocá-los em um arquivo separado chamado outputs.tf. Isso mantém sua configuração organizada e facilita a localização de todas as saídas do seu projeto.

Todo o seu trabalho será realizado no diretório ~/project, que é o diretório padrão no seu terminal.

Primeiro, vamos verificar o arquivo main.tf que foi pré-criado para você.

ls -l

Você deverá ver o arquivo main.tf e um diretório .terraform.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf

Agora, crie o arquivo outputs.tf usando o comando touch.

touch outputs.tf

Este comando cria um arquivo vazio chamado outputs.tf no diretório atual. Você pode verificar sua criação listando os arquivos novamente.

ls -l

Você verá agora outputs.tf na lista de arquivos.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex   0 Oct 15 12:39 outputs.tf

Definir saída para o nome do arquivo local_file

Nesta etapa, você definirá um bloco de saída (output block) no arquivo outputs.tf. Um bloco de saída declara um único valor de saída para sua configuração Terraform.

A sintaxe básica para um bloco de saída é:

output "NAME" {
  ## Arguments go here
}

Aqui, NAME é uma string que fornece um nome para a saída, que você usará posteriormente para consultar seu valor.

Vamos abrir o arquivo outputs.tf com o editor nano e adicionar nosso primeiro bloco de saída.

nano outputs.tf

Agora, adicione o seguinte código ao arquivo. Nomearemos nossa saída como file_path.

output "file_path" {

}

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

Este bloco ainda não faz muita coisa, pois está faltando o argumento value. Adicionaremos isso na próxima etapa.

Referenciar atributo de recurso no bloco de saída

Nesta etapa, tornaremos nossa saída útil informando qual valor ela deve exibir. Isso é feito usando o argumento value dentro do bloco de saída (output block). O valor é tipicamente uma referência a um atributo de um recurso definido em sua configuração.

A sintaxe para referenciar um atributo de recurso é <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>.

Em nosso arquivo main.tf, temos um recurso definido como:

resource "local_file" "example" {
  ## ...
}

O recurso local_file possui um atributo chamado filename, que armazena o caminho para o arquivo que ele gerencia. Para referenciar este atributo, usamos local_file.example.filename.

Vamos adicionar esta referência ao nosso bloco de saída. Abra outputs.tf novamente com nano.

nano outputs.tf

Modifique o arquivo para incluir o argumento value conforme mostrado abaixo:

output "file_path" {
  value = local_file.example.filename
}

Isso informa ao Terraform que a saída file_path deve ter o valor do atributo filename do recurso local_file chamado example.

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

Executar terraform apply para atualizar a configuração

Nesta etapa, você aplicará as alterações de configuração. Sempre que você adicionar, remover ou modificar saídas (outputs), você deve executar terraform apply para que o Terraform reconheça as alterações e atualize o arquivo de estado (state file). O arquivo de estado é onde o Terraform armazena os valores de suas saídas.

Execute o comando terraform apply no seu terminal.

terraform apply

O Terraform primeiro mostrará um plano de execução. Ele detectará que você adicionou uma saída e planejará adicioná-la. Como o recurso local_file ainda não existe, ele também planejará criá-lo.

Você será solicitado a confirmar a ação. Digite yes e pressione Enter.

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              = "This is an example file managed by 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             = "./example.txt"
      + id                   = (known after apply)
    }

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

Changes to Outputs:
  + file_path = "./example.txt"

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]

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

Outputs:

file_path = "./example.txt"

Como você pode ver na saída, o apply foi bem-sucedido, e o Terraform agora exibe a saída file_path com seu valor.

Executar terraform output para visualizar o nome do arquivo

Nesta etapa, você usará o comando terraform output para visualizar os valores de saída (output values) do seu arquivo de estado (state file). Isso é útil para recuperar informações sobre sua infraestrutura sem precisar analisar o arquivo de estado manualmente ou executar novamente o terraform apply.

Para ver todas as saídas definidas em sua configuração, basta executar o comando sem argumentos.

terraform output

Isso exibirá todas as saídas em um formato legível por humanos.

file_path = "./example.txt"

Você também pode consultar um valor de saída específico fornecendo seu nome como argumento. Isso é útil em scripts ou quando você precisa apenas de uma única informação.

terraform output file_path

Este comando imprimirá apenas o valor bruto (raw value) da saída especificada.

"./example.txt"

Isso facilita o uso da saída em scripts de shell, por exemplo, atribuindo-a a uma variável: FILE=$(terraform output -raw file_path). O flag -raw remove as aspas.

Resumo

Parabéns por concluir o laboratório!

Neste laboratório, você aprendeu os fundamentos do gerenciamento de saídas (outputs) no Terraform. Você realizou com sucesso:

  • Organizou sua configuração criando um arquivo dedicado outputs.tf.
  • Definiu um bloco output para declarar um valor de saída.
  • Referenciou um atributo de recurso dentro de um bloco de saída para expor seu valor.
  • Aplicou a configuração usando terraform apply para disponibilizar a saída.
  • Consultou o valor da saída a partir da linha de comando usando terraform output.

As saídas do Terraform são um recurso poderoso para extrair informações importantes da sua infraestrutura e integrar seus fluxos de trabalho do Terraform com outras ferramentas e scripts.