Azure 应用服务 JSON 使用 KeyVault 进行转换
Azure App Service JSON Transform using KeyVault
我正在考虑将 .Net Core WebApi 服务部署到 Azure 应用服务,作为部署的一部分,我很想用 CosmosDb 连接字符串更新 appsettings.json
中的连接字符串。我有一个 Azure KeyVault,其中将连接字符串作为秘密存储在其中。
为 CI/CD 使用 YAML 构建管道 我从我的管道中得到以下(片段)
- task: AzureKeyVault@1
inputs:
azureSubscription: '<service-principal>'
KeyVaultName: '<keyvault-name>'
SecretsFilter: '*'
RunAsPreJob: true
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-principal>'
appType: 'webApp'
WebAppName: '<ci-resource-group>'
VirtualApplication: '/'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
JSONFiles: '**/appsettings.json'
这两个任务处于从下载上一阶段发布的工件开始的阶段。
因此 Azure App Service Deploy 任务可以进行 JSON 转换,但我需要定义一个格式为 ConnectionStrings:CosmosDb
的变量,其值来自存储在密钥库中的秘密,而我不是一定要怎么做!
- 首先,这是正确的方法吗?我看过关于在密钥库中使用对秘密的引用的文章,这是正确的方法吗?
- keyvault 机密可用于使用
$(secret)
的管道,如何为上述 AzureRmWebAppDeployment@4
任务创建变量?
到目前为止我发现的所有内容都指向经典发布管道,并使用变量组,但这需要成为 YAML 管道的一部分。
关注docs
To substitute values in nested levels of the file, concatenate the names with a period (.) in hierarchical order.
但是你的秘密名称中不能有点,所以你必须在这两个步骤之间做一个小的重写:
- powershell: |
echo "##vso[task.setvariable variable=ConnectionStrings.CosmosDb;]$(ConnectionStrings-CosmosDb)"
你的秘密在哪里ConnectionStrings-CosmosDb
我正在考虑将 .Net Core WebApi 服务部署到 Azure 应用服务,作为部署的一部分,我很想用 CosmosDb 连接字符串更新 appsettings.json
中的连接字符串。我有一个 Azure KeyVault,其中将连接字符串作为秘密存储在其中。
为 CI/CD 使用 YAML 构建管道 我从我的管道中得到以下(片段)
- task: AzureKeyVault@1
inputs:
azureSubscription: '<service-principal>'
KeyVaultName: '<keyvault-name>'
SecretsFilter: '*'
RunAsPreJob: true
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: '<service-principal>'
appType: 'webApp'
WebAppName: '<ci-resource-group>'
VirtualApplication: '/'
packageForLinux: '$(System.DefaultWorkingDirectory)/**/*.zip'
JSONFiles: '**/appsettings.json'
这两个任务处于从下载上一阶段发布的工件开始的阶段。
因此 Azure App Service Deploy 任务可以进行 JSON 转换,但我需要定义一个格式为 ConnectionStrings:CosmosDb
的变量,其值来自存储在密钥库中的秘密,而我不是一定要怎么做!
- 首先,这是正确的方法吗?我看过关于在密钥库中使用对秘密的引用的文章,这是正确的方法吗?
- keyvault 机密可用于使用
$(secret)
的管道,如何为上述AzureRmWebAppDeployment@4
任务创建变量?
到目前为止我发现的所有内容都指向经典发布管道,并使用变量组,但这需要成为 YAML 管道的一部分。
关注docs
To substitute values in nested levels of the file, concatenate the names with a period (.) in hierarchical order.
但是你的秘密名称中不能有点,所以你必须在这两个步骤之间做一个小的重写:
- powershell: |
echo "##vso[task.setvariable variable=ConnectionStrings.CosmosDb;]$(ConnectionStrings-CosmosDb)"
你的秘密在哪里ConnectionStrings-CosmosDb