无法使用 ARM 模板和 Powershell 从 DevOps 部署 Azure 资源组

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

我正在尝试使用 ARM 模板和 Powershell 从 Devops 部署 azure 资源 [资源组]。下面是设置

  1. 创建了一个带有秘密的服务主体。
  2. 在服务主体的订阅级别分配贡献者角色。
  3. 使用该服务主体在 DevOps 中创建服务连接。
  4. 在Yaml管道中分配服务连接以进行订阅。 YAML code
  5. 使用 ARM 模板部署资源组的 Powershell 脚本。 Powershell scripts 但没有成功。 Azure 上下文已正确设置。

错误

error

azure powershell azure-devops yaml azure-pipelines
1个回答
0
投票

New-AzResourceGroupDeployment用于将部署添加到

pre-existing
资源组,如果资源组不存在,则会报告屏幕截图中的错误。

要创建资源组,您可以简单地使用New-AzResourceGroup,不需要ARM模板。然后就可以开始在这个资源组上部署了。

我这边的ARM模板用于在资源组上部署存储帐户,修复了管道和powershell,如下所示:

stages:
  - stage: Partner
    displayName: Dev
    jobs:
      - deployment: Dev_deployment
        displayName: Dev deployment
        pool:
          vmImage: Windows-latest
        environment: Dev
        strategy:
         runOnce:
           deploy:
             steps:
               - checkout: self
               - task: AzurePowerShell@5
                 displayName: Lab Dev Deployment
                 inputs:
                   azureSubscription: 'ARMConn4'
                   ScriptType: 'InlineScript'
                   Inline: |
                     Set-Location $(System.DefaultWorkingDirectory)
                     ./deployment/master.ps1 -environment "dev" -rgconfig @{"dev"=@{"rgname"="rg_DevOpsCICDNew"}}    # rgconfig is required as hashtable type in your powershell
                   azurePowerShellVersion: 'LatestVersion'

powershell:

    param
    (
        [Parameter(Mandatory=$true)][string] $environment,
        #[Parameter(Mandatory=$true)][hashtable] $commonconfig,
        [Parameter(Mandatory=$true)][hashtable] $rgconfig
    )
    
    $ARMTemplateFilePath = Resolve-Path -Path .\ARMtemplate\resourcegroup\resourcegroup.json
    $ARMTemplateParamFilePath = Resolve-Path -Path .\ARMtemplate\resourcegroup\parameters.json

    Write-Host $ARMTemplateFilePath
    Write-Host $ARMTemplateParamFilePath
    Write-Host $rgconfig[$environment].rgname

    # $Deployment = @{
    #     ResourceGroupName = $rgconfig[$environment].rgname
    #     TemplateFile = $ARMTemplateFilePath
    #     TemplateParameterFile = $ARMTemplateParamFilePath
    # }
    New-AzResourceGroup -Name $rgconfig[$environment].rgname -Location "East US"
    sleep 60   # add delay after resource group creation

    #New-AzResourceGroupDeployment @Deployment
    New-AzResourceGroupDeployment -ResourceGroupName $rgconfig[$environment].rgname -TemplateFile $ARMTemplateFilePath -TemplateParameterFile $ARMTemplateParamFilePath

    Write-Host "Deployment is complted for ResourceGroup :" $rgconfig[$environment].rgname

管道成功,创建资源组,在资源组上完成部署(存储帐户)。

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