通过Azure DevOps管道在Azure Webapp上部署容器映像时,如何传递动态变量/机密?

通过Azure DevOps管道在Azure Webapp上部署容器映像时,如何传递动态变量/机密?,azure,azure-devops,dockerfile,azure-pipelines,azure-web-app-service,Azure,Azure Devops,Dockerfile,Azure Pipelines,Azure Web App Service,我正在部署docker映像,希望在运行时修改一些应用程序设置。我正在使用Azure DevOps构建和发布我的docker映像 生成管道:能够使用默认应用程序设置创建生成映像 发布管道:希望使用更新的应用程序设置部署生成映像。(要修改某些变量) 这是否可行?执行此操作的最佳方法是什么?您应该使用要设置的值创建库变量: 之后,您将能够使用以下方法检索值: $(customer) 我建议您将机密内容存储到Azure Key Vault中,并从中检索机密(也使用库变量) 最后,您需要做的就是获取这

我正在部署docker映像,希望在运行时修改一些应用程序设置。我正在使用Azure DevOps构建和发布我的docker映像

生成管道:能够使用默认应用程序设置创建生成映像

发布管道:希望使用更新的应用程序设置部署生成映像。(要修改某些变量)


这是否可行?执行此操作的最佳方法是什么?

您应该使用要设置的值创建库变量:

之后,您将能够使用以下方法检索值:

$(customer)
我建议您将机密内容存储到Azure Key Vault中,并从中检索机密(也使用库变量)

最后,您需要做的就是获取这些值并设置应用程序服务设置(我通过powershell任务来实现这一点):


谢谢你,蒂亚戈。我也有同样的想法。只是有一个疑问,如果在Azure web app服务应用程序设置中发布诸如密钥库URL之类的变量是最佳做法,那就没有问题了,因为只有您功能的托管标识才能访问它(以及您授予访问权限的其他标识)
$myResourceGroup = 'PartsUnlimitedMRP'
$mySite = 'centpartsunlimited'

$webApp = Get-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup -Name $mySite -Slot production
$appSettingList = $webApp.SiteConfig.AppSettings

$hash = @{}
ForEach ($kvp in $appSettingList) {
    $hash[$kvp.Name] = $kvp.Value
}

$hash['customer'] = $(customer)

Set-AzureRMWebAppSlot -ResourceGroupName $myResourceGroup -Name $mySite -AppSettings $hash -Slot production