Terraform 地形实例枚举
我正在尝试将枚举的VM实例注册到Azure备份服务。但是,我得到一个错误:Terraform 地形实例枚举,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,我正在尝试将枚举的VM实例注册到Azure备份服务。但是,我得到一个错误: * azurerm_recovery_services_protected_vm.consul_and_vault: source_vm_id must be a single value, not a list 以下是我在Azure中创建VM实例的代码片段: ###############################################################################
* azurerm_recovery_services_protected_vm.consul_and_vault: source_vm_id must be a single value, not a list
以下是我在Azure中创建VM实例的代码片段:
###############################################################################
# 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}"
}
...
稍后,在创建备份集时,我将尝试引用枚举的VM实例:
##########################################################################################
# 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 = "${azurerm_virtual_machine.consul.*.id}"
问题似乎在于变量source\u vm\u 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 = "${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.您需要将
azurerm\u恢复\u服务\u受保护的\u虚拟机.concur\u和\u保险库
资源枚举到与azurerm\u虚拟机.concur
资源相同的长度。然后,您可以引用每个azurerm\u虚拟机.consul.id
作为count.index
中的一个元素,其元素编号与azurerm\u虚拟机.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.consur.*.id
语法将id
作为列表输出。谢谢Matt,你太棒了!!