通过忽略现有资源组上的现有标签,在 Bicep 中的新资源组上标记创建日期

问题描述 投票:0回答:1

我有一个名为“RG1”的现有资源组,其标签为“creationDate”,“环境”的值为“15/05/2024”和“Dev”。 我想创建另一个名为“RG2”的资源组,其标签为“creationDate”,“环境”的值为“utc('d')”和“QA”。 创建“RG2”时,我不希望更改“RG1”的标签“creationDate”。如果有必要,我还希望更改“RG1”的标签“环境”。

总而言之,我想忽略特定标签的更改。在本例中,它是“RG1”上的标签“creationDate”。 我知道不可能忽视二头肌的变化。

我尝试使用部署脚本来完成此操作,因为使用二头肌中现有的关键字,我认为我们受到限制。

这是我现在得到的: enter image description here

这受到以下启发:bicep:如何仅在资源不存在时有条件地部署资源

对我来说,我收到错误资源组未找到,因为就像我上面所说的那样,我想创建一个名为“RG2”的新资源组,并且在检查是否存在时,它失败了。有没有办法获得我可以使用的答案(空或类似的东西)并且不会使我的管道失败。

最后,如果您有其他想法,我很乐意。

谢谢

azure powershell tags azure-bicep azure-resource-group
1个回答
0
投票

我想忽略特定标签的更改。在本例中,它是“RG1”上的标签“creationDate”。我知道不可能忽视二头肌的变化。

是的,正如您已经提到的,在二头肌中创建任何资源时不可能忽略特定的更改。在这个 GitHub 问题和 ARM 资源中,它返回了

GET
上的一个名为
systemData
的属性,其中包括
createdAt
,这在 GitHub 问题中也明确给出了。

而且,我在我的环境中尝试了与您相同的代码,我能够成功部署它并获得正确的输出,如下所示。这意味着您当前检查资源组是否存在的代码没有问题。

enter image description here

enter image description here

最后,如果您有其他想法,我很乐意。

如果您愿意接受其他想法,您可以使用以下 PowerShell 方法来检查资源组是否存在并详细更新

environment
标签。

  • 现有资源组检查:
$Rg1 = "caronew"
$Rg2 = "newresources"
$Location = "westeurope"

$resourcegroup1 = Get-AzResourceGroup -Name $Rg1
$resourcegroup1


#Get the tags from resourcegroup1
$Rg1Tags = $resourcegroup1.Tags
$Rg1Tags["environment"] = "QA" #Add the environment tag to the existing tags of Rg1
$Rg1Tags    #Check if it is applied

Set-AzResourceGroup -Name $Rg1 -Tag $Rg1Tags #Update the environment to "QA"

try {
    $resourcegroup2 = Get-AzResourceGroup -Name $Rg2 -ErrorAction Stop
    Write-Output "$Rg2 already exists."
} catch {
    New-AzResourceGroup -Name $Rg2 -Location $Location -Tag @{creationDate = (Get-Date -Format "yyyy-MM-dd"); environment = "QA"}
}

enter image description here

enter image description here

  • 资源组不存在并创建了新的RG:
$Rg1 = "caronew"
$Rg2 = "createnewrg"
$Location = "westeurope"

$resourcegroup1 = Get-AzResourceGroup -Name $Rg1
$resourcegroup1


#Get the tags from resourcegroup1
$Rg1Tags = $resourcegroup1.Tags
$Rg1Tags["environment"] = "QA" #Add the environment tag to the existing tags of Rg1
$Rg1Tags    #Check if it is applied

Set-AzResourceGroup -Name $Rg1 -Tag $Rg1Tags #Update the environment to "QA"

try {
    $resourcegroup2 = Get-AzResourceGroup -Name $Rg2 -ErrorAction Stop
    Write-Output "$Rg2 already exists."
} catch {
    New-AzResourceGroup -Name $Rg2 -Location $Location -Tag @{creationDate = (Get-Date -Format "yyyy-MM-dd"); environment = "QA"}
}

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.