Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Explorando Variáveis e Outputs no Terraform

No Terraform, variáveis e outputs são componentes essenciais que ajudam a tornar o código mais modular, reutilizável e fácil de gerenciar. Este post irá detalhar como definir e utilizar variáveis e outputs, proporcionando flexibilidade e eficiência na gestão de infraestrutura.

Como Funcionam Variáveis no Terraform

Input Variables

As variáveis de entrada (input variables) permitem a parametrização do código Terraform, tornando-o mais flexível. Aqui estão os principais argumentos usados em input variables:

  • default: Valor padrão da variável.
  • type: Tipo da variável.
  • description: Descrição da variável.
  • validation: Regras de validação.
  • sensitive: Indica se a variável deve ser tratada como sensível.
  • nullable: Indica se a variável pode ser nula.
Tipos Suportados
  • Simples: string, number, bool
  • Complexos: list(<tipo>), set(<tipo>), map(<tipo>), object({nome_de_atributo = <tipo>}), tuple([<tipo>, ...])
Exemplo de Definição de Variáveis
// variables.tf
variable "ami_id" {
  description = "ID da AMI para a instância"
  type        = string
  default     = "ami-12345678"
}

variable "instance_type" {
  description = "Tipo da instância"
  type        = string
  default     = "t2.micro"
}

variable "instance_name" {
  description = "Nome da instância"
  type        = string
  default     = "MinhaInstancia"
}
Utilizando Variáveis no Código
// main.tf
provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = var.ami_id
  instance_type = var.instance_type
  tags = {
    Name = var.instance_name
  }
}

Outputs no Terraform

Outputs são usados para expor informações sobre a infraestrutura provisionada pelo Terraform, facilitando o compartilhamento de dados entre diferentes partes do código ou mesmo com outras ferramentas.

Definindo Outputs
// outputs.tf
output "instance_id" {
  description = "ID da instância EC2"
  value       = aws_instance.example.id
}

output "instance_public_ip" {
  description = "Endereço IP público da instância EC2"
  value       = aws_instance.example.public_ip
  sensitive   = true
}
Utilizando Outputs

Os outputs definidos podem ser acessados utilizando o comando terraform output:

terraform output instance_id
terraform output -raw instance_public_ip

Exemplos de Configuração e Uso

Arquivo variables.tf
variable "location" {
  description = "Localização dos recursos"
  type        = string
  default     = "us-east-1"
}

variable "account_tier" {
  description = "Nível da conta de armazenamento"
  type        = string
  default     = "Standard"
}

variable "account_replication_type" {
  description = "Tipo de replicação da conta de armazenamento"
  type        = string
  default     = "LRS"
}
Arquivo main.tf
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg_storage" {
  name     = "myResourceGroup"
  location = var.location
}

resource "azurerm_storage_account" "storage_account" {
  name                     = "mystorageaccount"
  resource_group_name      = azurerm_resource_group.rg_storage.name
  location                 = var.location
  account_tier             = var.account_tier
  account_replication_type = var.account_replication_type
}
Arquivo outputs.tf
output "storage_account_id" {
  description = "ID da Storage Account criada na Azure"
  value       = azurerm_storage_account.storage_account.id
}

output "sa_primary_access_key" {
  description = "Primary Access Key da Storage Account criada na Azure"
  value       = azurerm_storage_account.storage_account.primary_access_key
  sensitive   = true
}

Benefícios dos Outputs

  • Compartilhamento de Informações: Permitem compartilhar dados entre diferentes partes do código ou módulos.
  • Integração: Facilitam a integração com outras ferramentas e scripts.
  • Segurança: A utilização do atributo sensitive ajuda a proteger informações confidenciais.

Com esses conceitos e exemplos, você estará pronto para utilizar variáveis e outputs no Terraform de forma eficiente, tornando seu código mais modular, seguro e fácil de manter.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima