如何使 Azure 备份与 Terraform 一起使用?

Posted

技术标签:

【中文标题】如何使 Azure 备份与 Terraform 一起使用?【英文标题】:How do I make the Azure backup work with Terraform? 【发布时间】:2020-09-22 12:56:18 【问题描述】:

我正在尝试使用 terraform 为 Azure VM 启动备份,但它没有采用 source_vm_id 参数。我把它列在下面

#https://www.terraform.io/docs/providers/azurerm/r/backup_protected_vm.html
resource "azurerm_backup_protected_vm" "BackupProtected_app_vm_01" 
  resource_group_name = "$azurerm_resource_group.resource_group.name"
  recovery_vault_name = "z1-r-op-rsv-01"
  #source_vm_id        = "$azurerm_virtual_machine.app_vm_01[count.index].id"
  source_vm_id       = [element(azurerm_virtual_machine.app_vm_01.*.id, count.index)]
  backup_policy_id    = "$azurerm_backup_policy_vm.BackupPolicy_app_vm_01.id"

我收到以下错误: 错误:在非计数上下文中引用“计数”

在 AGC.tf 第 264 行,资源“azurerm_backup_protected_vm”“BackupProtected_app_vm_01”中: 264:source_vm_id = [元素(azurerm_virtual_machine.app_vm_01.*.id,count.index)]

“count”对象只能在“resource”和“data”块中使用,并且只能用于 当设置了“count”参数时。

我尝试在不使用“元素”的情况下更改它,但它仍然抛出错误。

这是我为 VM 定义的内容:

resource "azurerm_virtual_machine" "app_vm_01" 
  count                            = var.app_vm_01_count
  name                             = "$var.reg$var.dash$var.env$var.dash$var.app$var.dash$var.app_vm_01$var.dash$format("%02d", count.index+1)"
  location                         = var.location
  resource_group_name              = azurerm_resource_group.resource_group.name
  network_interface_ids            = [element(azurerm_network_interface.app_vm_01.*.id, count.index)]
  availability_set_id              = azurerm_availability_set.app_vm_01.id
  vm_size                          = "Standard_D2s_v3"
  license_type                     = "Windows_Server"
  delete_os_disk_on_termination    = true
  delete_data_disks_on_termination = true

  boot_diagnostics 
    enabled     = "true"
    storage_uri = var.dia_uri
  

【问题讨论】:

【参考方案1】:

我在没有括号的情况下实现了它

source_vm_id        = element(azurerm_virtual_machine.vm.*.id, count.index)

【讨论】:

以上是关于如何使 Azure 备份与 Terraform 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用服务托管标识在 Azure 中使用 Terraform 预配资源

使用 Azure 提供程序的 Terraform “AuthorizationFailed”

如何使用 Terraform 为 Azure 资源创建警报

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?

使用 Terraform 部署 Azure 资源时如何解决插件错误?

如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?