azure - 有没有办法获取任务 : "Azure Resource Group Deployment" 中使用的 SubscriptionID

标签 azure azure-devops azure-pipelines-build-task

我正在 Azure DevOps 中使用Azure 资源组部署任务。一些覆盖模板参数包含 SubscriptionID。

-virtualNetworkId /subscriptions/53614803-d327-4397-bf55-8dedcc24be0d/resourceGroups/$(resourceGroup)/providers/Microsoft.Network/virtualNetworks/vnet 

是否需要使用 Azure 订阅连接中使用的 SubsciptionID?

原因: 构建管道中需要知道 subscriptionId。这也解决了 uniqueString 模板问题,我们需要知道 uniqueString,但 powershell 没有办法告诉你。

我的部署正在构建为在不同订阅的任何资源组中运行。我正在使用在门户中创建一台虚拟机时生成的 ARM 模板来部署多台虚拟机。其中一个参数嵌入了订阅 ID,如问题所示。由于变量是如何在门户构建的模板内计算的, [subscription.SubscriptionId] 不起作用:

  "variables": {
    "vnetId": "[parameters('virtualNetworkId')]",
    "subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]",

它在运行时最终为:

/subscriptions/$(subscription().subscriptionid)/resourceGroups/Dev1/providers/Microsoft.Network/virtualNetworks/vnet/subnets/default

我不想编辑模板,因为我需要对 future 的部署进行一些调整,并且可能会使用门户来制作新模板。构建管道中需要知道 subscriptionId。这也解决了 uniqueString 模板问题,我们需要知道 uniqueString,但 powershell 没有办法告诉你。

最佳答案

您可以使用此 YAML 管道从 Azure Cli 任务获取订阅并创建一个名为 subscriptionId 的管道变量

trigger:
- none

pool:
  vmImage: 'windows-latest'


stages:
- stage: Build
  displayName: Build stage

  jobs:
  - job: GetSubscription
    steps:
    - checkout: none
    - task: AzureCLI@2
      inputs:
        azureSubscription: 'CTP.AssuranceDW-Non-Production'
        scriptType: 'ps'
        scriptLocation: 'inlineScript'
        inlineScript: |
          $id = convertfrom-json (az account list --query "[?isDefault].id | [0]")
          Write-Host $id
          echo "##vso[task.setvariable variable=subscriptionId]$id"
    - powershell: Write-Host $(subscriptionId)

关于azure - 有没有办法获取任务 : "Azure Resource Group Deployment" 中使用的 SubscriptionID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56195642/

相关文章:

Azure 板 - 显示配置

testing - TFS 用户只允许创建错误

continuous-integration - 从触发Team Services构建的分支获取源

Azure 云服务 DNS 查找失败

git - Azure DevOps - 通过命令行将 git 提交或分支链接到工作项

azure - 将自定义 exe 上传到 Azure Devops 管道

azure-devops - 仅针对 VSTS 中的 PR 分支自动触发构建

azure - 我们可以在Azure网站或虚拟机中运行windowservice或EXE吗?

python - 从 python 脚本运行 Azure-cli 命令

linux - 插件错误 'run-sequence(run-internal)'