#azure-devops #azure-pipelines #azure-pipelines-yaml
#azure-devops #azure-конвейеры #azure-pipelines-yaml
Вопрос:
У меня есть конвейер 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"
}
},
Ошибка, которую я получаю, заключается в том, что параметр является строкой, но ожидался объект, поэтому либо что-то не так с моим определением overrideParameters, либо с определением параметра в шаблоне ARM.
Может кто-нибудь помочь с правильным синтаксисом?
Если я передаю все 3 значения отдельно как 3 разных строковых параметра, это работает, но беспорядочно, и вместо этого я передаю весь объект целиком.
Комментарии:
1. Не получить последнюю информацию. Просто хочу проверить, полезен ли для вас приведенный ниже ответ? Если да, вы можете принять ответ, который также может быть полезен для других, у кого такая же проблема с вами, и мы могли бы заархивировать эту тему. Кроме того, не стесняйтесь оставлять комментарии ниже, если у вас все еще есть какие-либо вопросы по этому поводу:-)
Ответ №1:
Для переопределения параметров типа объекта используйте строковые объекты JSON. Например, -options [«option1»] -map {«key1″:»value1» }.
Если между «key1» и «value1» есть пробел, например «key»: «value1», это выдаст сообщение об ошибке «сопоставление значений не разрешено в этом контексте». Таким образом, правильный синтаксис будет {«key1″:»value1»}