Получить данные из вывода terraform и использовать их в качестве входных данных

Я использую Terraform для создания и автоматизации инфраструктуры, и у меня возникли проблемы с поиском решения для получения выходных данных веб-приложения Azure, в частности общедоступных IP-адресов, используемых этим веб-приложением, и использования их в качестве входных данных для обновления списка Cloudflare.

      output "webapp_ip" {
  value = azurerm_linux_web_app.lwa.outbound_ip_addresses
}

выведет что-то вроде этого:

webapp_ip = "ip-address-1,ip-address-2,ip-address-3,ip-address-4"

а ресурс Terraform Cloudflare_list получает данные в следующем формате:

      item {
    value {
      ip = "ip-address-1"
    }
    comment = "IP 1"}

item {
    value {
      ip = "ip-address-2"
    }
    comment = "IP 2"
}

Я думал о динамических списках, но не знаю, правильный ли это путь...

1 ответ

Динамические блоки — правильный путь. Ваш код должен выглядеть примерно так:

      resource "cloudflare_list" "example" {

  // some other attributes

  dynamic "item" {
    for_each = toset(split(",", azurerm_linux_web_app.lwa.outbound_ip_addresses)) // notice split
    content {
      value {
        ip = item.value
      }
      comment = "IP: ${item.value}"
    }
  }
}

Если Azure и Cloudflare находятся в двух разных рабочих областях (состояниях), вы можете использовать либо terraform_remote_state , либо tfe_outputs для передачи выходных данных Azure в Cloudflare.