Перечень экземпляров Terraform - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь зарегистрировать перечисленные экземпляры виртуальных машин в службе резервного копирования Azure.Однако я получаю сообщение об ошибке:

* azurerm_recovery_services_protected_vm.consul_and_vault: source_vm_id must be a single value, not a list

Ниже приведен фрагмент моего кода, в котором я создаю экземпляры виртуальных машин в Azure:

###############################################################################
# Deploy VMs and Configure Consul and Vault Services
###############################################################################

resource "azurerm_virtual_machine" "consul" {
  name                             = "consul${count.index + 1}"
  #name                             = "${var.consul_cluster_prefix}-consul-${count.index + 1}"
  location                         = "${var.deployment_location}"
  resource_group_name              = "${var.resource_group_name}"
  availability_set_id              = "${azurerm_availability_set.consul.id}"
  network_interface_ids            = ["${element(azurerm_network_interface.consul_nic.*.id, count.index + 1)}"]
  vm_size                          = "${var.consul_vm_size}"
  delete_os_disk_on_termination    = true
  delete_data_disks_on_termination = true
  count                            = "${var.consul_instance_count}"
  tags {
    ownerinfo            = "${var.ownerinfo}"
    costcenter           = "${var.costcenter}"
    deploymenttype       = "${var.deploymenttype}"
    notificationdistlist = "${var.notificationdistlist}"
    env_info             = "${var.environmentinfo}"
    application_name     = "${var.applicationname}"
    platform             = "${var.platform}"
  }
  storage_image_reference {
    id  ="${var.consul_image_id}"
 }
...

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

##########################################################################################
# AzureRM Virtual Machine Into Azure Recovery Services Vault
##########################################################################################

resource "azurerm_recovery_services_vault" "backup2vault" {
    name    = "azurerecoveryvaulti1"
    location = "${var.deployment_location}"
    resource_group_name = "${var.resource_group_name}"
    sku     = "Standard"
}

resource "azurerm_recovery_services_protection_policy_vm" "consul_daily" {
  name                = "azurerecoveryvaultpolicy1"
  resource_group_name = "${var.resource_group_name}"
  recovery_vault_name = "${azurerm_recovery_services_vault.backup2vault.name}"

  backup = {
    frequency = "Daily"
    time      = "23:00"
  }

  retention_daily = {
    count = 1
  }
}

resource "azurerm_recovery_services_protected_vm" "consul_and_vault" {
  resource_group_name = "${var.resource_group_name}"
  recovery_vault_name = "${azurerm_recovery_services_vault.backup2vault.name}"
  source_vm_id        = "${azurerm_virtual_machine.consul.*.id}"
  backup_policy_id    = "${azurerm_recovery_services_protection_policy_vm.consul_daily.id}"
}

Кажется, проблема в том, как переменная source_vm_id ссылается на перечисленные экземпляры:

source_vm_id        = "${azurerm_virtual_machine.consul.*.id}"

..., что приводит к ошибке:

 azurerm_recovery_services_protected_vm.consul_and_vault: source_vm_id must be a single value, not a list

Вопрос в том, как я могу ссылаться на перечисленные экземпляры в моем случае?

Чрезвычайно признателен за любые отзывы.

A.

1 Ответ

0 голосов
/ 18 февраля 2019

Вам необходимо перечислить ресурс azurerm_recovery_services_protected_vm.consul_and_vault той же длины, что и ресурс azurerm_virtual_machine.consul.Затем вы можете ссылаться на каждый azurerm_virtual_machine.consul.id как элемент в count.index с тем же номером элемента, что и azurerm_virtual_machine.consul.Тогда это будет выглядеть следующим образом:

resource "azurerm_recovery_services_protected_vm" "consul_and_vault" {
  count               = "${var.consul_instance_count}"
  resource_group_name = "${var.resource_group_name}"
  recovery_vault_name = "${azurerm_recovery_services_vault.backup2vault.name}"
  source_vm_id        = "${azurerm_virtual_machine.consul.*.id[count.index]}"
  backup_policy_id    = "${azurerm_recovery_services_protection_policy_vm.consul_daily.id}"
}

Обратите также внимание, что синтаксис azurerm_virtual_machine.consul.*.id выводит id в виде списка.

...