0

我正在使用 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]
}`

我收到一个错误

“错误:缺少资源实例键

在 image-provisioning.tf 第 33 行,在资源“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

4

1 回答 1

0

能够使用 terraform 中的 for_each 选项解决:

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
}
于 2020-04-03T08:47:32.510 回答