BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Terraform 0.12 será lançado com Loops e First-Class Expressions

Terraform 0.12 será lançado com Loops e First-Class Expressions

A Hashicorp lançará o Terraform 0.12. Esta versão inclui uma série de novas melhorias muito solicitadas para o Terraform com base no feedback e ideias da comunidade. As mudanças mais notáveis são: expressões first-class, a expressão for e condicionais. A atualização para a nova versão pode causar quebras de compatibilidade para alguns usuários.

Expressões first-class simplificaram a escrita de scripts Terraforms e também adicionaram benefícios para a linguagem. Na versão atual, as expressões precisam estar entre aspas e são tratadas como sequências de interpolação. Com o lançamento da versão 0.12, as expressões agora são uma parte nativa da linguagem e podem ser escritas diretamente:

variable "ami" {}

# Terraform 0.11 and earlier
resource "aws_instance" "example" {
   ami = "${var.ami}"
}

# Terraform 0.12
resource "aws_instance" "example" {
   ami = var.ami
}

Esta mudança também permite o uso da sintaxe list e map via [...] e {...} diretamente dentro das expressões. Juntando isto à nova expressão for permite filtragem dinâmica e transformações de list e maps dentro de suas configurações. Uma cláusula if opcional pode ser adicionada para permitir a filtragem do resultado:

# Terraform 0.12

output "instance_public_ip_addresses" {
   value = {
      for instance in aws_instance.example:
         instance.id => instance.public
         if instance.associate_public_ip_address
   }
}

Enquanto o operador condicional ( … ? … : …) tem estado no Terraform há algum tempo, seu uso era limitado, pois ambas as partes do valor de retorno sempre seriam avaliadas. Com a nova versão, isso foi corrigido e o operador condicional agora se comporta como se espera. Outra grande melhoria é que o operador condicional pode ser aproveitado com qualquer tipo.

# Terraform 0.12

locals {
   first_id = length(azurerm_virtual_machine.example) > 0 ? azurerm_virtual_machine.example[0].id : ""
}

Na versão atual do Terraforms o exemplo acima falharia, pois ambos os valores de retorno são avaliados independentemente do que a expressão resolve.

A introdução dessas mudanças no Terraform exigiu a reformulação da linguagem de configuração. Enquanto o Terraform Core Team afirma que eles trabalharam para minimizar as quebras de compatibilidades, um guia de mudanças foi preparado para ajudar na mudança para a versão 0.12. Recomenda-se que você restrinja a versão do Terraform em seus scripts antes do lançamento. Eles acreditam que o foco nas alterações de configuração para esta versão minimizará as quebras de compatibilidade no futuro, além de permitir mudanças mais rápidas em funcionalidades futuras.

A equipe do Terraform sempre posta sobre as próximas mudanças e está procurando por feedbacks sobre estas e futuras e melhorias.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT