jlo*_*ail 4 azure azure-devops azure-pipelines-build-task
我正在 Azure Devops 中使用Azure 资源组部署任务。一些Override 模板参数包括 SubscriptionID。
-virtualNetworkId /subscriptions/53614803-d327-4397-bf55-8dedcc24be0d/resourceGroups/$(resourceGroup)/providers/Microsoft.Network/virtualNetworks/vnet
Run Code Online (Sandbox Code Playgroud)
是否可以使用Azure 订阅连接中使用的 SubsciptionID ?
原因:在构建管道中需要知道 subscriptionId。这也解决了uniqueString模板问题,我们需要知道uniqueString,但是powershell没有办法告诉你。
我的部署正在构建为在不同订阅的任何资源组中运行。我正在使用在门户中创建一台虚拟机时生成的 ARM 模板来部署多台虚拟机。其中一个参数嵌入了订阅 ID,如问题所示。由于变量在门户构建的模板内计算的方式,[subscription.SubscriptionId] 不起作用:
"variables": {
"vnetId": "[parameters('virtualNetworkId')]",
"subnetRef": "[concat(variables('vnetId'), '/subnets/', parameters('subnetName'))]",
Run Code Online (Sandbox Code Playgroud)
它在运行时最终为:
/subscriptions/$(subscription().subscriptionid)/resourceGroups/Dev1/providers/Microsoft.Network/virtualNetworks/vnet/subnets/default
Run Code Online (Sandbox Code Playgroud)
我不想编辑模板,因为我需要对未来的部署进行一些调整,并且可能会使用门户来制作新模板。构建管道中需要知道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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13294 次 |
| 最近记录: |