Como fazer um loop em Terraform

Como fazer um loop em Terraform
Terraform oferece um modelo de linguagem declarativa. Embora isso torne muito fácil e eficiente definir recursos, ele pode não ter alguns recursos fundamentais úteis nas operações diárias.

Por exemplo, idiomas declarativos específicos não suportam o fluxo de controle, como loops. Portanto, quando você precisar criar um pedaço de código repetidamente, você terá que padrão copiar e colar. Este não é um método muito eficiente para nenhum desenvolvedor.

Terraform entende isso e fornece alguns recursos que ajudam com recursos, como condicionais e loops. Neste artigo, você aprenderá a usar a contagem, for_each e para expressões em Terraform.

O básico

Terraform fornece três estruturas principais ao trabalhar com loops. Esses incluem:

  1. Contar
  2. Para cada
  3. Para

Vamos entender como usar cada uma dessas construções de loop.

Parâmetro da contagem

O bloco de recursos em Terraform define e gerencia principalmente um único objeto na nuvem. No entanto, pode ser necessário criar ou gerenciar vários objetos sem criar cada bloco para cada objeto. Fazer isso remove o código repetitivo, facilitando a leitura e operação.

Uma maneira de realizar isso é o uso do meta-argumento da contagem. Se você definir um bloco de recursos que inclua o parâmetro de contagem com o valor como um número inteiro, a Terraform executará as ações no número especificado de recursos.

Uso básico

O parâmetro da contagem, também conhecido como meta-argumento, pode ser usado nos blocos de recursos ou módulos.

Ele aceita um número inteiro ou todo e executará as ações especificadas nas muitas instâncias selecionadas. Por exemplo, se você definir a contagem para 5 em um bloco de recursos que cria baldes S3, a Terraform criará cinco instâncias de balde S3 S3.

No entanto, a Terraform criará um objeto de infraestrutura exclusivo para cada item. Portanto, cada item recebe operações de CRUD separadamente.

O exemplo a seguir mostra como usar o parâmetro de contagem em Terraform:

Terraform
requerir_providers
aws =
fonte = "Hashicorp/AWS"
versão = "-> 3.27 "


requerir_version = "> = 0.12 "

Provedor "AWS"
perfil = "padrão"
região = "US-leste-1"

Recurso "AWS_INSTANCE" "Web_server"
AMO = "AMI-234C45E2"
instance_type = "T1.micro "
contagem = 3
tags =
Nome = "Versão do servidor da web: $ contagem.índice"

O código de exemplo acima cria três instâncias da AWS do tipo T1.micro. Também usamos o método de contagem para criar tags com o número de instâncias.

O atributo de índice permite modificar a configuração para cada item. O índice de contagem é um valor distinto que descreve cada instância começando em 0.

Ao contrário da maioria dos meta-argumentos do Terraform, o valor do parâmetro da contagem deve ser conhecido de antemão.

Parâmetro for_each

O parâmetro for_each é intimamente semelhante ao argumento da contagem. Você pode usá -lo com um recurso e um bloco de módulo.

Uso básico

O parâmetro for_each aceita um conjunto de strings ou um mapa. Em seguida, ele cria uma instância específica para cada item da coleção. Semelhante à contagem, cada item possui um ID de infraestrutura de objeto exclusivo, permitindo que a Terraform execute operações CRUD individualmente em um objeto específico.

O snippet a seguir mostra como usar o item for_each para criar vários usuários:

Recurso "AWS_IAM_USER" "Web-managers"
for_each = Toset (["John", "Lucy", "Harley", "David"])
nome = cada.chave

O exemplo anterior mostra como usar o for_each com um conjunto de strings. Para usar um mapa, considere o código mostrado abaixo:

for_each =
grupo = "web"
group_b = "db"

nome = cada.chave
Localização = cada um.valor

Para parâmetro

O parâmetro for loop não é muito diferente da operação para a maioria das linguagens de programação. Ele permite que você pague uma lista de itens.

Por exemplo, suponha que você tenha uma lista de usuários e deseja converter os nomes de usuário em maiúsculas. Como caso, você pode usar um loop para o loop:

nomes de usuário = tolista (["nome de usuário1", "nome de usuário2", nome de usuário3])
[Foriinusernames.Lista: superior (s)]

O código anterior expande os itens na lista e converte cada um em maiúsculas. Saiba mais sobre o Terraform para expressões na documentação.

Conclusão

Este guia oferece o básico das operações de loop de execução em Terraform usando a contagem, for_each e para expressões. Esperamos que você tenha encontrado os exemplos usando os três parâmetros úteis. Confira o Linux Dint para obter mais dicas e informações.