Terraform - как использовать экспортированные атрибуты?

Я изучаю terraform, в примере ниже первый раздел помещает виртуальную машину и возвращает идентификатор этой виртуальной машины. Во втором разделе к vm добавляется дополнительный диск. Мне нужно ввести идентификатор в параметр virtual_machine_id, но я не знаю, как это сделать (cloudstack_instance.worker[$name].id не работает). Может у кого-нибудь есть подсказка?

2 ответа

Выходные данные могут содержать несколько элементов. Если имеется более одного выхода, потребуется некоторая логика. Но для этого варианта использования предположим, что вывод из cloudstack_instance это 1 элемент.

Попробуй это:

       virtual_machine_id = join(", ", cloudstack_instance.worker.*.id)

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

Эта ситуация хорошо подходит для объединения ресурсов в цепочку , что означает использование восходящего ресурса напрямую в качестве ресурса нисходящего и, таким образом, буквально заявляет, что диски коррелируют с виртуальными машинами:

      resource "cloudstack_disk" "worker" {
  for_each = cloudstack_instance.worker

  name               = "${var.prefix}-${each.key}"
  attach             = "true"
  disk_offering      = "Custom-RBD"
  size               = 50
  virtual_machine_id = each.value.id
  zone               = var.zone
  project            = var.project_id
}

Поскольку cloudstack_instanceресурс также объявлен, оценивает сопоставление от ключей экземпляра к объектам. Это означает, что в приведенном выше примере each.value относится к любому значению элемента в cloudstack_instance.worker соответствует ключу each.key.

Я также удалил depends_on аргумент, потому что он избыточен: Terraform уже видит эту зависимость, потому что for_each содержит ссылку на этот ресурс.

Другие вопросы по тегам