У меня есть файл appsettings.json
, в который я хочу преобразовать значение, расположенное по адресу:
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true"
},
Я нашел следующий ответ, поэтому я знаю, что служба приложения может получать значения непосредственно из хранилища ключей:
{ ссылка }
Это не причина спрашивать. Поскольку Microsoft предлагает JSON variable substitution
, я все еще думаю, что это должно быть возможным, поскольку единственная проблема - это вложенное значение. Вышеупомянутый вопрос похож, но я хотел бы указать немного больше, что уже было проверено и где я застрял.
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/transforms-variable-substitution?view=azure-devops&tabs=Classic#json -вариабельная замена
Для получения секретного значения можно использовать Конвейеры -> Библиотека -> Группа переменных
или Azure Key Vault Task.
Проблема в том, что секретное значение не может содержать точек:
Пожалуйста, укажите действительное секретное имя. Секретные имена могут содержать только буквенно-цифровые символы c и тире.
Ни в связанной группе переменных, ни в задаче Azure Key Vault Мне разрешено переписывать секретное имя в другое имя переменной .
Глядя на пример ниже, если секретное имя было ConnectionStringsDefaultConnection
, я мог получить доступ к значению, как это $(ConnectionStringsDefaultConnection)
, но я не знаю, как его переименовать.
https://azuredevopslabs.com/labs/vstsextend/azurekeyvault/
Я нашел задачу, которая могла бы выполнить работу, но она требует сторонней задачи выпуска. Это неприемлемо, поскольку в проекте разрешены только задачи, написанные Microsoft.
https://daniel-krzyczkowski.github.io/How-to-inject-Azure-Key-Vault-secrets-in-the-Azure-DevOps-CICD-pipelines/
Я также знаю, что переменную Pipeline можно использовать для хранения значения но у нас не будет единого источника правды, и это будет Azure Key Vault Secret.