azure - 用于检查条件的 Terraform 脚本

标签 azure terraform

我有一个大的地形脚本。在脚本末尾有一个代码块,用于备份虚拟机,但我不想备份测试虚拟机。我只需要主虚拟机备份。 terraform 中是否有任何脚本可以检查虚拟机然后继续备份脚本。

resource "Azurerm_backup_protected_vm" "db"
  Count                          = var.db-nodecount
  resource_group_name            = var.mgmtrg.name
  recovery_vault_name            = var.mgmtrv.name
  source_vm_id                   = element(azurerm_virtual_machine.db.*.id, count.index)
  backup_policy_id               = var.db-policy.id
  lifecycle{
    ignore_changes = [
      backup_policy_id,
      recovery_vault_name,
      tags
     ]
  }
} 

日志图像[![日志图像][1]][1]

最佳答案

不幸的是,需要backup_policy_id:
https://www.terraform.io/docs/providers/azurerm/r/backup_protected_vm.html#backup_policy_id

在这种情况下,我会添加更多变量来解决您对测试虚拟机的担忧
类似于:

resource "azurerm_backup_protected_vm" "db"
  count               = var.db-nodecount
  resource_group_name = var.mgmtrg.name
  recovery_vault_name = var.mgmtrv.name
  source_vm_id        = element(azurerm_virtual_machine.db.*.id, count.index)
  backup_policy_id    = var.env == "tst" ? var.db-tst-policy.id : var.db-policy.id
}

只需创建一个测试 backup_policy (azurerm_backup_policy_vm),大约每 100 年进行一次备份

<小时/>

另一个选项可能是根本不创建 azurerm_backup_protected_vm:

resource "azurerm_backup_protected_vm" "db"
  count                = var.env == "tst" ? 0 : var.db-nodecount
  resource_group_name  = var.mgmtrg.name
  recovery_vault_name  = var.mgmtrv.name
  source_vm_id         = element(azurerm_virtual_machine.db.*.id, count.index)
  backup_policy_id     = var.db-policy.id
}

关于azure - 用于检查条件的 Terraform 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61617841/

相关文章:

azure - Azure 函数参数中的 DocumentClient 绑定(bind)

c# - 如何使用 MS Graph 将 Azure 门户注册应用程序的范围限制为只能访问 sharepoint 中的特定日历

azure - 将版本化 api 与 Azure API 管理结合使用时,版本在 url 中出现两次

Terraform 获取列表的长度

azure - Terraform 是否有 Azure ARM "complete"模式?

google-cloud-platform - 在计数条件中使用多个列表在 Terraform 中创建资源

azure - 无法为 cosmos db 分配 Azure 角色

c# - 如何跟踪程序集的多个版本?

amazon-web-services - Terraform 多状态文件最佳实践示例

docker - docker swarm join token 是私有(private)的吗?