gpt4 book ai didi

azure - 如何使用 Terraform 更新 Azure 订阅标签?

转载 作者:行者123 更新时间:2023-12-02 08:11:05 25 4
gpt4 key购买 nike

我正在尝试在订阅级别(而不是资源或资源组)管理 Azure 标记。我们使用 Terraform 创建订阅,我们也不能。创建订阅后,我们为该订阅创建配置模板。在那里,我们管理访问控制和所有权记录等内容。以下是订阅的标准配置模板的样子。

module "subscription-project-pegasus" {
source = "./modules/subscription/"

subscription_access = [
{
aad_group = "all-employees-group"
role = "Reader"
},
{
spn = "spn-pegasus"
role = "Contributor"
}
]

ownership = {
team = "Team Pegasus",
pagerduty_id = "pegasus"
}
}

我想在此处添加另一个带有标签的对象,我可以在订阅级别应用它。

tags = {
owner = "pegasus"
environment = "nonprod"
}

该自定义模块 ./modules/subscriptions 使用 azurerm_role_assignment 模块配置角色分配。但是,除了主azurerm_subscription之外,我找不到可以做标记的模块。主要用于配置订阅的模块。如果我使用它,我相信 Terraform 将开始跟踪订阅的状态,但这并不理想。

我正在寻找一种在订阅级别添加这些标签的方法,而不使用 azurerm_subscription 模块。请指教!

最佳答案

I tried to add/update Azure subscription tags with Terraform without using the azurerm_subscription module and successfully provisioned the requirement.

如果您希望在订阅级别管理标签,而不使用 azurerm_subscription 模块(由于其状态跟踪),您可以使用 local-exec 配置程序来运行 Azure CLI 命令以将标签添加到订阅。

我的 Terraform 配置

main.tf

variable "subscription_id" {
description = "The ID of the Azure subscription."
type = string
}

variable "tags" {
description = "A map of tags to assign to the resource."
type = map(string)
default = {}
}


resource "null_resource" "subscription_tags" {
provisioner "local-exec" {
command = <<EOT
az account set --subscription "${var.subscription_id}"
az tag create --resource-id "/subscriptions/${var.subscription_id}" --tags ${join(" ", [for k, v in var.tags : "${k}=${v}"])}
EOT
}

triggers = {
tags = jsonencode(var.tags)
}
}

输出:

Here I was using the vinay as owner name and env as non prod

这里我使用 vinay 作为所有者名称,并将 env 作为non-prod

enter image description here

关于azure - 如何使用 Terraform 更新 Azure 订阅标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77119777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com