Я пытаюсь заставить мое приложение .NET Core получать секретные значения из Azure KeyVault в конвейере DevOps.Я хочу отобразить их на переменные среды, которые можно использовать для переопределения настроек в файле appsettings.json.
Я сопоставил группу переменных в конвейере DevOps с KeyVault и настроил соответствующие переменные для конвейера.,Я добавил несколько задач для записи переменных в выходные переменные.
Я пытаюсь установить вложенное значение в файле JSON, и, кажется, существует некоторая путаница в отношении того, какой разделитель использовать: "-", "__" или "."
В yml у меня есть это, чтобы загрузить переменные из KV:
- task: AzureKeyVault@1
displayName: 'Load Secrets'
inputs:
azureSubscription: MySub
KeyVaultName: 'A-Vault'
И затем я пытаюсь отобразить переменные в выходные переменные следующим образом:
- powershell: echo "##vso[task.setvariable variable=ConnectionStrings.DbConnectionString;isOutput=true]$(ConnectionStrings--DbConnectionString)"
displayName: 'Set DbConnectionString'
Переменная окружения использует формат "-", используемый Azure KeyVault, и я пытаюсь сопоставить ее с переменной, используя "."формат, используемый в расширениях конфигурации .NET Core.Я также попытался использовать «__» в имени выходной переменной, но тот же результат.
Я добавил метод расширения конфигурации AddEnvironmentVariables () при запуске, и файл настроек JSON выглядит следующим образом:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DbConnectionString": "env:ConnectionStrings__DbConnectionString"
}
}
Ошибка при запуске теста показывает, что он использует значение по умолчанию из JSON выше, а не значение из переменной среды.Есть идеи, что я мог упустить, или есть лучший способ сделать это?