Introdução
Terraform é uma ferramenta poderosa para construir, alterar e versionar infraestrutura de forma segura e eficiente. Uma funcionalidade chave que torna as configurações do Terraform flexíveis e reutilizáveis é o uso de variáveis de entrada (input variables). As variáveis permitem parametrizar suas configurações, evitando a codificação rígida (hardcoding) de valores e facilitando a personalização de implantações sem alterar o código-fonte.
Neste laboratório, você aprenderá os fundamentos do uso de variáveis no Terraform. Você criará uma configuração simples que gera um arquivo local. O nome e o conteúdo deste arquivo serão determinados por variáveis que você definirá e passará durante a execução de seus comandos Terraform.
Ao final deste laboratório, você entenderá:
- Como declarar variáveis em um arquivo
.tf. - Como referenciar variáveis dentro de um bloco de recurso (resource block).
- Como fornecer valores para suas variáveis ao executar
terraform apply.
Criar o arquivo variables.tf para definições de variáveis
Nesta etapa, você criará um arquivo dedicado para armazenar suas declarações de variáveis. Embora você possa declarar variáveis em qualquer arquivo .tf, é uma convenção comum colocá-las em um arquivo chamado variables.tf. Essa prática ajuda a manter seu projeto organizado e facilita para outros entenderem quais valores de entrada sua configuração espera.
Todo o seu trabalho será realizado no diretório ~/project. Primeiro, crie o arquivo variables.tf usando o comando touch.
touch variables.tf
Você pode verificar se o arquivo foi criado listando o conteúdo do diretório:
ls
Você deverá ver variables.tf na saída.
variables.tf
Por enquanto, este arquivo está vazio. Nas etapas seguintes, você adicionará definições de variáveis a ele.
Definir variável de string para o nome do arquivo
Nesta etapa, você definirá sua primeira variável. Esta variável será usada para especificar o nome do arquivo que o Terraform criará.
As variáveis são declaradas usando um bloco variable. Cada bloco define uma única variável de entrada (input variable). Vamos definir uma variável chamada filename.
Abra o arquivo variables.tf que você criou na etapa anterior usando o editor nano.
nano variables.tf
Agora, adicione o seguinte código ao arquivo. Este código declara uma variável chamada filename, especifica seu tipo como string e inclui uma descrição útil.
variable "filename" {
description = "The name of the file to create."
type = string
}
variable "filename": Isso inicia a declaração de uma variável chamadafilename.description: Este argumento opcional fornece uma descrição legível da finalidade da variável.type: Este argumento especifica o tipo de dado para a variável. Aqui, usamosstringpara indicar que ela aceitará valores de texto.
Após adicionar o código, salve o arquivo e saia do nano pressionando Ctrl+X, seguido por Y e, em seguida, Enter.
Definir variável de string para o conteúdo
Nesta etapa, você definirá uma segunda variável para armazenar o conteúdo que será escrito no arquivo. Isso segue o mesmo padrão da etapa anterior.
Abra o arquivo variables.tf novamente com nano.
nano variables.tf
Adicione o seguinte bloco variable abaixo da definição da variável filename que você adicionou anteriormente.
variable "content" {
description = "The content to write into the file."
type = string
}
Seu arquivo variables.tf completo deve agora se parecer com isto:
variable "filename" {
description = "The name of the file to create."
type = string
}
variable "content" {
description = "The content to write into the file."
type = string
}
Isso define dois parâmetros de entrada (input parameters) para sua configuração do Terraform: um para o nome do arquivo e outro para o seu conteúdo.
Salve o arquivo e saia do nano (Ctrl+X, Y, Enter).
Referenciar variáveis no bloco de recurso local_file
Nesta etapa, você criará o arquivo de configuração principal do Terraform, main.tf, e usará as variáveis que acabou de definir. Você utilizará o recurso local_file, que faz parte do provedor hashicorp/local, para criar um arquivo no sistema de arquivos local.
Primeiro, crie um novo arquivo chamado main.tf.
nano main.tf
Agora, adicione a seguinte configuração ao arquivo main.tf.
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "2.4.0"
}
}
}
resource "local_file" "my_file" {
filename = var.filename
content = var.content
}
Vamos analisar esta configuração:
terraform { ... }: Este bloco configura as configurações do Terraform, incluindo os provedores necessários (required providers). Estamos dizendo ao Terraform que nossa configuração necessita do provedorlocal.resource "local_file" "my_file": Isso define um recurso do tipolocal_filee lhe atribui o nome localmy_file.filename = var.filename: É aqui que você referencia uma variável. O prefixovar.seguido pelo nome da variável (filename) instrui o Terraform a usar o valor da variávelfilenamepara este argumento.content = var.content: Da mesma forma, isso atribui o valor da variávelcontentao argumentocontentdo recurso.
Após adicionar o código, salve o arquivo e saia do nano (Ctrl+X, Y, Enter).
Executar terraform apply com valores de variáveis
Nesta etapa final, você executará sua configuração do Terraform e fornecerá valores para suas variáveis.
Primeiro, você precisa inicializar o diretório de trabalho do Terraform. O comando terraform init baixa e instala os provedores definidos na configuração (no nosso caso, o provedor local).
Execute o seguinte comando:
terraform init
Você deverá ver uma saída indicando que o Terraform foi inicializado com 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 been successfully initialized!
...
Agora, você pode aplicar a configuração. Para passar valores para suas variáveis, você pode usar a flag de linha de comando -var. Também usaremos a flag -auto-approve para pular o prompt de confirmação interativo.
Execute o comando terraform apply com valores para filename e content:
terraform apply -var="filename=hello.txt" -var="content=Hello, Terraform Variables." -auto-approve
O Terraform agora executará o plano e criará o arquivo. A saída será semelhante a esta:
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.my_file will be created
+ resource "local_file" "my_file" {
+ content = "Hello, Terraform Variables."
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "hello.txt"
+ id = "..."
}
Plan: 1 to add, 0 to change, 0 to destroy.
local_file.my_file: Creating...
local_file.my_file: Creation complete after 0s [id=...]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Para verificar se tudo funcionou, use o comando cat para exibir o conteúdo do arquivo recém-criado.
cat hello.txt
Você deverá ver o conteúdo que forneceu na variável:
Hello, Terraform Variables.
Parabéns! Você usou com sucesso as variáveis do Terraform para criar um arquivo.
Resumo
Neste laboratório (lab), você aprendeu o fluxo de trabalho fundamental para usar variáveis no Terraform. Você parametrizou com sucesso uma configuração, tornando-a mais dinâmica e reutilizável.
Você aprendeu a:
- Organizar as declarações de variáveis em um arquivo dedicado
variables.tf. - Declarar variáveis usando o bloco
variable, especificando seutype(tipo) edescription(descrição). - Referenciar variáveis dentro de blocos de recurso usando a sintaxe
var.<nome_da_variável>. - Inicializar um projeto Terraform com
terraform initpara baixar os provedores necessários. - Fornecer valores de variáveis em tempo de execução usando a flag
-varcom o comandoterraform apply.
Este conhecimento é um bloco de construção crucial para criar infraestrutura como código (Infrastructure as Code) mais complexa e modular com o Terraform.



