Как указать openstack_blockstorage_volume_attach_v2.host_name? - PullRequest
0 голосов
/ 05 июля 2018

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

  • идентификатор ресурса,
  • openstack_compute_instance_v2.name и
  • имеет прикрепленный том.

Соответствующие биты файла .tf:

resource "openstack_compute_instance_v2" "foo_1" {
  name            = "foo_1"
  image_name      = "…"
  flavor_name     = "…"
  key_pair        = "${var.key_pair}"
  security_groups = […]
}

resource "openstack_blockstorage_volume_v2" "foo_volume_1" {
  name = "foo_volume_1"
  size = 100
}

resource "openstack_blockstorage_volume_attach_v2" "foo_volume_1_attachment" {
  volume_id = "${openstack_blockstorage_volume_v2.foo_volume_1.id}"
  host_name = "${openstack_compute_instance_v2.foo_1.name}"
}

Когда я пытаюсь TF_LOG=TRACE terraform apply -target=openstack_compute_instance_v2.foo_1, я получаю следующий соответствующий вывод:

[TRACE] root: eval: *terraform.EvalWriteState
[TRACE] root: eval: *terraform.EvalApplyProvisioners
[TRACE] root: eval: *terraform.EvalIf
[TRACE] root: eval: *terraform.EvalWriteState
[TRACE] root: eval: *terraform.EvalWriteDiff
[TRACE] root: eval: *terraform.EvalApplyPost
[ERROR] root: eval: *terraform.EvalApplyPost, err: 1 error(s) occurred:

* openstack_compute_instance_v2.foo_1: Error creating OpenStack server: Invalid request due to incorrect syntax or missing required parameters.
[ERROR] root: eval: *terraform.EvalSequence, err: 1 error(s) occurred:

* openstack_compute_instance_v2.foo_1: Error creating OpenStack server: Invalid request due to incorrect syntax or missing required parameters.
[TRACE] [walkApply] Exiting eval tree: openstack_compute_instance_v2.foo_1
[TRACE] dag/walk: upstream errored, not walking "openstack_blockstorage_volume_attach_v2.foo_volume_1_attachment"
[TRACE] dag/walk: upstream errored, not walking "provider.openstack (close)"
[TRACE] dag/walk: upstream errored, not walking "meta.count-boundary (count boundary fixup)"
[TRACE] dag/walk: upstream errored, not walking "root"
[…]
[DEBUG] plugin: waiting for all plugin processes to complete...
Error: Error applying plan:

1 error(s) occurred:

* openstack_compute_instance_v2.foo_1: 1 error(s) occurred:

* openstack_compute_instance_v2.foo_1: Error creating OpenStack server: Invalid request due to incorrect syntax or missing required parameters.

Поскольку другой экземпляр был успешно создан с практически идентичным объявлением openstack_compute_instance_v2, я подозреваю, что проблема на самом деле связана с действительно плохо документированным host_name. Это должно указывать на имя экземпляра, как в этом случае? Если нет, на что он должен указывать?

1 Ответ

0 голосов
/ 05 июля 2018

Сообщение об ошибке оказалось красной сельдью - я обновил вопрос с соответствующей информацией. Проблема заключается в том, что при указании целевого экземпляра, который зависит от пары ключей, зависимость не разрешается, поэтому пара ключей не создается. Поскольку пара ключей относится только к учетной записи , а не к арендатору, поэтому terraform пытается создать экземпляр, ссылающийся на несуществующую пару ключей.

Интересно, что эта команда работала бы для человека, который уже применил остальную часть схемы, потому что их пара ключей уже была бы создана.

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