Gostaria de preencher o template por valores, mas tenho o conteúdo idêntico ao do template.
O resultado deve ser algo assim no arquivo hosts.yaml
. O modelo ainda não está concluído e será editado.
rnd_hetzner:
hosts:
rnd.test:
ansible_port: 22
ansible_host: 1.1.2.3
Modelo:
# Ansible Inventory
---
all:
hosts:
{% for instance, details := instances_ips.value %}
{{ instance }}:
ansible_host: {{ details.external_ip }}
{% endfor %}
children:
all_servers:
hosts:
{% for instance, _ := instances_ips.value %}
{{ instance }}
{% endfor %}
Terraforma
locals {
instances_ips = {
"value" : {
"app-server" : {
"external_ip" : "1.27.1.1"
},
"db-server" : {
"external_ip" : "1.24.9.1"
}
}
}
}
resource "local_file" "ansible_inventory" {
content = templatefile("${path.module}/templates/ansible_inventory.tpl",
{
instances_ips = jsonencode(local.instances_ips)
}
)
filename = "${path.module}/templates/hosts.yaml"
}