【发布时间】:2021-02-18 11:07:19
【问题描述】:
我有一个执行内联脚本的 yaml 管道,需要将该脚本的输出对象传递给 ARM 模板,但我找不到任何传递对象的示例,只有单个字符串。
yaml 脚本:
- task: AzurePowerShell@4
displayName: 'Get CosmosDB Consistency'
inputs:
azureSubscription: 'ado-test'
scriptType: 'inlineScript'
azurePowerShellVersion: LatestVersion
inline: |
Install-Module -Name Az.CosmosDB -RequiredVersion 0.1.6 -AllowClobber -Force
Import-Module Az.CosmosDB
$cosmosConsistency = (Get-AzCosmosDBAccount -ResourceGroupName $(domain)-${{ parameters.environment }} -Name $(domain)-${{ parameters.environment }}).ConsistencyPolicy
Write-Host "##vso[task.setvariable variable=cosmosConsistency;isOutput=true]$cosmosConsistency"
name: 'cosmosConsistency'
输出对象如下所示:{"DefaultConsistencyLevel":"Session","MaxStalenessPrefix":100,"MaxIntervalInSeconds":5}
带有参数覆盖的 ARM 部署:
- task: AzureResourceGroupDeployment@2
displayName: 'Deploy: Main resources'
inputs:
azureSubscription: 'ado-test'
resourceGroupName: '$(domain)-${{ lower(parameters.environment) }}'
location: 'West Europe'
csmFile: '$(Build.SourcesDirectory)/src/resources.json'
csmParametersFile: '$(Build.SourcesDirectory)/src/resources.parameters.json'
overrideParameters: '-cosmosConsistency $(cosmosConsistency))'
ARM模板中的参数定义:
cosmosConsistency": {
"type": "object",
"metadata": {
"description": "The Cosmos DB consistency parameters object"
}
},
我得到的错误是 param 是 string 但 object 是预期的,所以我的 overrideParameters 定义或 ARM 模板中的 param 定义有问题。
有人可以帮助使用正确的语法吗?
如果我将所有 3 个值分别作为 3 个不同的字符串参数传递,它可以工作但很混乱,我宁愿传递整个对象。
【问题讨论】:
-
未获得您的最新信息。只是想检查以下答案是否对您有帮助?如果是,您可以接受这个答案,这也可以使与您有相同困惑的其他人受益,我们可以存档此线程。另外,如果仍有任何疑问,请随时在下面发表评论:-)
标签: azure-devops azure-pipelines azure-pipelines-yaml