Azure powershell脚本--创建具有不同所有者的多个资源组。

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

我试图创建一个循环脚本,以创建多个不同所有者的RG。我在添加不同的所有者到资源组中时遇到了问题,我需要为每个RG添加所有者。

$RGNamesUSE = "RG-01", "RG-02", "RG-03"
$Owner = "[email protected]","[email protected]", "[email protected]"

foreach($rg in $RGNamesUSE)
{
New-AzResourceGroup -Name $rg -Location westeurope
}

我需要为每个RG添加所有者。它应该像RG-01将有所有者用户1,RG-02将有所有者用户2等。我如何才能做到这一点?

azure powershell azure-powershell
1个回答
1
投票

你可以试试下面的脚本,它将创建一个资源组,并将用户指定为资源组的 "所有者"。

$RGNamesUSE = "RG-01", "RG-02", "RG-03"
$Owner = "[email protected]","[email protected]","[email protected]"

For ($i=0; $i -le ($RGNamesUSE.length - 1); $i++) {
    $rg = $RGNamesUSE[$i];
    $userName = $Owner[$i];

    New-AzResourceGroup -Name $rg -Location westeurope
    New-AzRoleAssignment -SignInName $userName -RoleDefinitionName "Owner" -ResourceGroupName $rg
}

0
投票

Jagrati发布了一个正确的答案,它符合你的要求。相反,我想挑战一下你的要求:)

我见过像你这样的代码。如果它是一个解决方案的一部分,而不是只是一次性运行,那么它们就会变得非常难以维护,而且非常容易犯错。

例如,如果有人在将来添加一个新的RG,他们需要记住在适当的地方添加所有者,否则一切都会被破坏,问题可能会更糟糕,因为你可能甚至没有注意到错误,无论是在构建时还是运行时。

这就是为什么我更喜欢这种类型的结构,所有的细节都在同一个地方,并且相互关联: (试试这里)

$ResourceGroups = @(
 @{
    "Name"="RG-01";
    "Owners"="[email protected]"
 },
 @{
    "Name"="RG-02";
    "Owners"="[email protected]"
 }
)

那么部署的代码就非常简单了,不需要任何索引或其他魔法就可以将多个数据源按位置关联起来。

foreach($rg in $ResourceGroups)
{
    Write-Host "Creating resource group Name: $($rg.Name) with Owners: $($rg.Owners)"

    # Create the Resource group 
    New-AzResourceGroup -Name $rg.Name -Location westeurope

    # Assign roles.
    New-AzRoleAssignment -SignInName $rg.Owners -RoleDefinitionName "Owner" -ResourceGroupName $rg.Name
}

在您需要为每个组添加更多的角色分配,或其他属性的情况下,如每个资源组在不同的区域,这也将更好地工作。

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