как связать плавающий IP-адрес с экземпляром в openstack с помощью terraform

Я использую terraform для создания нескольких экземпляров в openstack, и я хотел бы автоматически назначать им плавающий IP-адрес без какого-либо ручного вмешательства.

Мой файл .tf выглядит следующим образом:

resource "openstack_networking_floatingip_v2" "floating-ip" {
 count  = 4
 pool = "floating-ip-pool" 
}

resource "openstack_compute_floatingip_associate_v2" "fip-associate" {
floating_ip = openstack_networking_floatingip_v2.floating-ip.address[count.0]
instance_id = openstack_compute_instance_v2.terraform-vm.id[count.0]
}`

Я получаю сообщение об ошибке

"Ошибка: отсутствует ключ экземпляра ресурса.

в строке 33 image-provisioning.tf в ресурсе "openstack_compute_floatingip_associate_v2" "fip-associate": 33: instance_id = openstack_compute_instance_v2.terraform-vm.id [count.0] "

Моя версия terraform: Terraform v0.12.24 + provider.openstack 1.26.0


person opensource engineer    schedule 30.03.2020    source источник


Ответы (1)


может разрешить использование опции for_each в terraform:

resource "openstack_compute_instance_v2" "terraform_vm" {

  image_id        = "f8b9189d-2518-4a32-b1ba-2046ea8d47fd"
  for_each        =  var.instance_name
  name            =  each.key
  flavor_id       = "3"
  key_pair        = "openstack vm key"
  security_groups = ["default"]

 network {
  name = "webapps-network"
 }
 }

resource "openstack_networking_floatingip_v2" "floating_ip" {
pool = "floating-ip-pool"
for_each        =  var.instance_name

}

resource "openstack_compute_floatingip_associate_v2" "fip_associate" {
for_each        =  var.instance_name
floating_ip = openstack_networking_floatingip_v2.floating_ip[each.key].address
instance_id = openstack_compute_instance_v2.terraform_vm[each.key].id
}
person opensource engineer    schedule 03.04.2020