Оценка списков атрибутов, в которых не удалось полностью создать некоторые ресурсы - PullRequest
0 голосов
/ 04 июня 2018

Итак ... У меня есть случай, когда я по существу делаю:

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...