tiver uma pergunta, preciso implantar uma lista de instâncias de computação do GCP, como faço o loop for_each através dos "vms" nesta lista de objetos como este
"gcp_zone": "us-central1-a",
"image_name": "centos-cloud/centos-7",
"vms": [
{
"hostname": "test1-srfe",
"cpu": 1,
"ram": 4,
"hdd": 15,
"log_drive": 300,
"template": "Template-New",
"service_types": [
"sql",
"db01",
"db02"
]
},
{
"hostname": "test1-second",
"cpu": 1,
"ram": 4,
"hdd": 15,
"template": "APPs-Template",
"service_types": [
"configs"
]
}
]
}
if
,for
ouwhile
declarações. Você pode simular isso, no entanto, até certo ponto, em alguns casos, graças àcount
propriedade Leia este excelente artigo sobre como reproduzir condições ou loops com o Terraform : blog.gruntwork.io/…for_each
blocos: 0.12.6 Changelog . Para o que vale a pena de, se / condicionais mais tem sido em Terraform por um par de versões agora: docs Terraform: expressões condicionaisRespostas:
No Terraform 0.12, você pode usar o for_each com módulos como o seguinte:
modules / google_compute_instance / variables.tf
modules / google_compute_instance / main.tf
servers.tf
Obviamente, você pode adicionar quantas variáveis forem necessárias e usá-las no módulo.
fonte
Parece que eu achei o que fazer. Se você não passar os mapas de mapas, mas a lista de mapas, poderá usar esse código
Ele criará o número real de instâncias e quando você remover, por exemplo, um dos três do meio (se você criar três :)), o terraform removerá o que solicitamos.
fonte
O uso do
for_each
bloco é bastante novo e não há muita documentação. Algumas das melhores informações vêm de seu anúncio no blog: https://www.hashicorp.com/blog/hashicorp-terraform-0-12-preview-for-and-for-each/Verifique também a seção Dynamic Blocks da documentação: https://www.terraform.io/docs/configuration/expressions.html#dynamic-blocks
Pelo que parece o seu exemplo, você precisa ter um conjunto de valores para cada instância criada para ter um mapa de mapas:
Abaixo está um exemplo que eu criei usando o Terraform 0.12.12:
Saída do plano Terraform:
fonte