我有一个ServiceBuswithQueue ARM模板,其输出部分如下所示:
"outputs": {
"serviceBusNamespaceName": {
"type": "string",
"value": "[parameters('serviceBusNamespaceName')]"
},
"namespaceConnectionString": {
"type": "string",
"value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryConnectionString]"
},
"sharedAccessPolicyPrimaryKey": {
"type": "string",
"value": "[listkeys(variables('authRuleResourceId'), variables('sbVersion')).primaryKey]"
},
"serviceBusQueueName": {
"type": "string",
"value": "[parameters('serviceBusQueueName')]"
}
}
为此,我在VSTS中创建了持续集成(CI)和持续部署(CD),在CD中,我使用PowerShell任务部署了上述ARM模板。但我想传递这个ARM模板的输出,如" $(serviceBusQueueName)"在Continuous Deployment中输入下一个ARM模板的参数。
知道上面的场景可以在连续部署中的两个ARM任务之间使用ARM输出来实现。但我不想要它,因为目前我正在使用PowerShell任务来部署ARM模板。
在发布此问题之前,我进行了研究并找到了以下链接,但这些链接无法解决我的问题。
Azure ARM templates - using the output of other deployments
How do I use ARM 'outputs' values another release task?
有人可以建议我如何解决上述问题吗?
答案 0 :(得分:1)
您可以通过指定相应的参数来覆盖参数。
答案 1 :(得分:1)
# Start the deployment
Write-Host "Starting deployment...";
$outputs = New-AzureRmResourceGroupDeployment -ResourceGroupName $resourceGroupName -Mode Incremental -TemplateFile $templateFilePath -TemplateParameterFile $parametersFilePath;
foreach ($key in $outputs.Outputs.Keys){
$type = $outputs.Outputs.Item($key).Type
$value = $outputs.Outputs.Item($key).Value
Write-Host "##vso[task.setvariable variable=$key;]$value"
}
您可以在后续脚本中显示所有环境变量:
Write-Host "Environment variables:"
gci env:* | sort-object name