"vmstorage01" = { hostname = "vmstorage01" }
......
# "vminsert01" = { hostname = "vminsert01" }
Пытаюсь сделать inventory
resource "local_file" "host_ini" {
filename = "host.ini"
content = <<-EOT
%{ for node in yandex_compute_instance.victoriametrics_cluster ~}
${ node.name } ansible_host=${ yandex_compute_instance.victoriametrics_cluster.${ node.name }.network_interface.0.nat_ip_address }
%{ endfor ~}
EOT
}
Можно ли как то переменную использовать внутри другой переменной ${yandex_compute_instance.victoriametrics_cluster.${ node.name }.network_interface.0.nat_ip_address }
?
Квадратные скобки?
зачем вам использовать переменную в переменной, если node in yandex_compute_instance.victoriametrics_cluster уже фактически равно yandex_compute_instance.victoriametrics_cluster.${ node.name }? Я наизусть синтаксис не помню и могу ошибаться, но вы пробовали сделать так? %{ for node in yandex_compute_instance.victoriametrics_cluster ~} ${ node.name } ansible_host=${ node.network_interface.0.nat_ip_address } %{ endfor ~}
Заработало! Спасибо!
а вы не думали в сторону dynamic inventory?
Думал. Но сначала хотел разобраться с более простыми конструкциями в Terraform. Вообще хочу всю инфраструктуру поднимать из кода и думаю там нужен будет dynamic inventory
Обсуждают сегодня