我正在努力实现以下目标:
- 使用生命周期命令忽略Azure策略应用于资源的标记。
背景我有一个将标记应用到资源组的平台模板,但同一模板中的资源没有应用标记。相反,我有一个强制从资源组继承标记的Azure策略。
当我对模板进行任何更改并运行terraform plan时,我得到了一个更改负载,它们将把标记从值更改为空。它只会给我的地形计划增加不必要的变动。
问题我已尝试使用lifecycle命令指示忽略更改并将值设置为标记,但似乎不起作用,计划仍显示标记将被删除.
下面是一个资源示例,该资源表示如果发生更改,则将删除标记。
示例代码
resource "azurerm_virtual_machine_extension" "ext_ade" {
depends_on = [azurerm_virtual_machine_extension.ext_domain_join, azurerm_virtual_machine_extension.ext_dsc]
count = var.session_hosts.quantity
name = var.ext_ade.name
virtual_machine_id = azurerm_windows_virtual_machine.vm.*.id[count.index]
publisher = "Microsoft.Azure.Security"
type = "AzureDiskEncryption"
type_handler_version = "2.2"
auto_upgrade_minor_version = true
settings = <<SETTINGS
{
"EncryptionOperation": "EnableEncryption",
"KeyVaultURL": "${data.azurerm_key_vault.key_vault.vault_uri}",
"KeyVaultResourceId": "${data.azurerm_key_vault.key_vault.id}",
"KeyEncryptionKeyURL": "${azurerm_key_vault_key.ade_key.*.id[count.index]}",
"KekVaultResourceId": "${data.azurerm_key_vault.key_vault.id}",
"KeyEncryptionAlgorithm": "RSA-OAEP",
"VolumeType": "All"
}
SETTINGS
lifecycle {
ignore_changes = [settings,tags]
}
}
1条答案
按热度按时间f4t66c6m1#
使用Azure Policy和Terraform模板进行标记,忽略标记
我已经在我的环境中尝试过,并且能够使用***lifecycle***命令成功部署它。
从@Jim Xu提供的SO解决方案中提取
Terraform
的片段,并对其进行修改以满足您的要求,如下所示:主文件格式
变量.tf:
注意:您可以修改
tfvars
档案以符合您的需求。已执行
terraform init
或terraform init -upgrade
:已执行
terraform plan
:在成功运行以上命令后,给予
terraform apply
*****:已从Portal创建密钥库,但未观察到密钥库发生任何变化:
x1c4d 1x指令集
部署在门户中的资源组(newtest):