Получить данные из вывода 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.