Заменить параметры приложения Service Fabric во время развертывания - PullRequest
0 голосов
/ 30 января 2019

Я настраиваю производственную среду и хочу защитить переменные, связанные с окружением.На данный момент каждая среда имеет свой собственный файл параметров приложения, который работает хорошо, но я не хочу, чтобы каждый разработчик в моей команде знал строки производственного соединения и другие важные материалы, которые могли там появляться.

ИтакЯ ищу любую доступную возможность.Я видел, что в DevOps Azure, который я сейчас использую для своего CI / CD, существует некоторая возможная подстановка переменных (преобразование xml).Это можно использовать в проекте SF?Я видел в другом проекте нечто подобное через Octopus.Существуют ли другие инструменты, которые помогли бы мне безопасно и легко управлять своими переменными по среде?Могу ли я сделать это с моим KeyVault в конце концов?Любые рекомендации?Спасибо

РЕДАКТИРОВАТЬ: пример того, как я хотел бы управлять этими значениями;это скриншот от осьминога: enter image description here

, поэтому мне нужно что-то похожее на то, что разделяет и вводит значения.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете выполнить преобразование XML в файл ApplicationParameter, чтобы обновить значения в нем перед его развертыванием.

Другой вариант - использовать Powershell для обновления приложения и передачи параметров в качестве аргумента скрипту.

Команда Start-ServiceFabricApplicationUpgrade принимает в качестве параметра хеш-таблицу спараметры, технически встроенная задача в VSTS \ DevOps преобразует параметры приложения в хеш-таблицу, сценарий будет выглядеть примерно так:

#Get the existing parameters
$app = Get-ServiceFabricApplication -ApplicationName "fabric:/AzureFilesVolumePlugin"

#Create a temp hashtable and populate with existing values
$parameters = @{ } 
$app.ApplicationParameters | ForEach-Object { $parameters.Add($_.Name, $_.Value) }

#Replace the desired parameters
$parameters["test"] = "123test" #Here you would replace with your variable, like  $env:username 

#Upgrade the application
Start-ServiceFabricApplicationUpgrade -ApplicationName "fabric:/AzureFilesVolumePlugin" -ApplicationParameter $parameters -ApplicationTypeVersion "6.4.617.9590" -UnmonitoredAuto

Имейте в виду, что существующая задача VSTS также имеет другие операции, такие какскопируйте пакет в SF и зарегистрируйте версию приложения в хранилище изображений, вам нужно будет скопировать его.Вы можете скопировать полный сценарий из файла Deploy-FabricApplication.ps1 в проекте сервисной фабрики и заменить его своими изменениями.Другой подход - получить исходный текст для задачи VSTS здесь и добавить свои изменения.

Если вы планируете использовать KeyVault, я бы порекомендовал приложению обращаться к значениям непосредственно в KeyVault вместопередавая его SF, вы можете изменить значения в KeyVault без повторного развертывания приложения.При развертывании вы только передаете учетные данные KeyVault \ configuration.

...