У меня была рабочая настройка TF для раскрутки нескольких виртуальных машин Linux в Azure.Я запускал локальный exec-поставщик в null_resource для запуска Ansible playbook.Я извлекал частные IP-адреса из файла состояния TF.Файл состояния был сохранен локально.
Я недавно настроил бэкэнд Azure, и теперь файл состояния сохраняется в учетной записи хранения.
Я изменил локальный поставщик и пытаюсь получить всечастные IP-адреса для запуска Ansible playbook, как указано ниже:
resource "null_resource" "Ansible4Ubuntu" {
provisioner "local-exec" {
command = "sleep 20;ansible-playbook -i '${element(azurerm_network_interface.unic.*.private_ip_address, count.index)}', vmlinux-playbook.yml"
Я также пробовал:
resource "null_resource" "Ansible4Ubuntu" {
provisioner "local-exec" {
command = "sleep 20;ansible-playbook -i '${azurerm_network_interface.unic.private_ip_address}', vmlinux-playbook.yml"
Они оба отлично работают только с первой виртуальной машиной и игнорируют остальные.Я также пытался с count.index+1 and self.private_ip_address
, но не повезло.
Фактический результат: TF предоставляет частный IP только первой виртуальной машины для Ansible.
Ожидаемый результат: TF предоставляет списоквсе частные IP-адреса для Ansible, чтобы он мог запустить playbook для всех них.
PS: я также смотрю на использование структуры данных TF remote_state, но кажется, что файл состояния содержит IP-адреса из предыдущих сборок., затрудняя извлечение тех, которые хороши для текущей сборки.
Буду признателен за любую помощь.
Спасибо Асгар