评估某些资源无法完全创建的属性列表

时间:2018-06-04 07:43:55

标签: terraform

所以...我有一个案例,我基本上这样做:

resource "openstack_compute_instance_v2" "foo" {
  count = N
  ...
  network {
    ...
  }
  network {
    ...
  } 
}

resource "ovh_domain_zone_record" "foo" {
  count = N
  ...
  target = "${openstack_compute_instance_v2.foo.*.network.1.fixed_ip_v4[count.index]}"
}

一切都很棒......直到它没有。

如果实例的资源创建失败且部分状态,实例已创建但未启动,则在network.1.fixed_ip_v4

下也未分配任何内容。
* ovh_domain_zone_record.foo: 1 error(s) occurred:

* ovh_domain_zone_record.foo[2]: index 2 out of range for list openstack_compute_instance_v2.foo.*.network.1.fixed_ip_v4 (max 2) in:

${openstack_compute_instance_v2.foo.*.network.1.fixed_ip_v4[count.index]}

因此,这里的问题似乎是,如果带有计数的资源在整个实例中导致不连贯状态(某些实例具有值,有些则没有),并且该属性稍后被引用具有相同计数的另一个资源,以创建适当的"兄弟"资源(在我的情况下,主机的DNS名称)然后由$ {resource。*。attribute}插值产生的列表将不包含主资源失败的空条目。相反,它会因计数失败而缩短,因此,由于兄弟资源的最后一个实例无法获取其信息,因此terraform将因失败资源的数量而失败。

其次,这意味着如果第二个实例的主要资源的创建失败,则第三个实例的相关资源的创建将失败。因为整个TF会抱怨并且根本不会进行,所以它不会被错误地创建,并且不是真正的问题。

问题是,如何在使用count = N时创建相关资源集?

0 个答案:

没有答案