azure - 如何在 Azure DevOps 中的另一个变量中使用一个变量

标签 azure azure-devops azure-keyvault

在 Azure DevOps YAML 中,是否可以在 get 中使用一个变量作为另一个变量。

我的具体问题与使用 Azure Key Vault 任务有关。 使用此任务如下:

  - task: AzureKeyVault@1
    displayName: 'Get Secrets $(KeyVault_Key) from ${{parameters.KeyVaultName}}'
    inputs:
     azureSubscription: ${{parameters.azureSubscription}}
     KeyVaultName: ${{parameters.KeyVaultName}}
     SecretsFilter: '$(KeyVault_Key)'
     RunAsPreJob: true

我在库中有一个名为 KeyVault_Key 的变量,并将其传递到过滤器中。 Key Vault 任务将使用此变量的值创建一个新变量。

例如如果 KeyVault_Key = "mySecretKey" 那么它会创建一个变量,您可以通过 $(mySecretKey)

访问

但是,当尝试使用变量命令访问所有这些时,它不起作用。

例如$($(KeyVault_Key))

我也尝试过变量,例如

例如$(${{variables.KeyVault_Key}})

** 更新 **

这是使用建议的变量解决方案的示例。

  - stage: 'Deploy'
displayName: 'Deploy Application'
variables:
  - name: "sqlConnectionNameKey"
    value: '$(TF_VAR_MYSQL_SERVER_USERNAME_KEY)'
  - name: "sqlConnectionPwdKey"
    value: '$(TF_VAR_MYSQL_SERVER_PASSWORD_KEY)'
jobs:
  - deployment: DeployApiDatabase
    pool:
      name: Default
    environment:
      name: Azure
    strategy:
      runOnce:
        deploy:
          steps:
            - task: AzureKeyVault@1
              displayName: 'Get Secrets'
              inputs:
                azureSubscription: ${{parameters.azureSubscription}}
                KeyVaultName: '$(TF_VAR_RESOURCE_PREFIX)-kv'
                SecretsFilter: '${{variables.sqlConnectionNameKey}}, ${{variables.sqlConnectionPwdKey}}'
                RunAsPreJob: true
            - task: AzureMysqlDeployment@1
              displayName: 'Deploy ApplicationConfigurationDbContext DB'
              inputs:
                azureSubscription: ${{parameters.azureSubscription}}
                ServerName: '$(sqlServerName).mysql.database.azure.com'
                DatabaseName: 'DatabaseName'
                SqlUsername: '$(sqlConnectionNameKey)@$(sqlServerName)' 
                SqlPassword: '$(sqlConnectionPwdKey)' 
                TaskNameSelector: 'SqlTaskFile'
                SqlFile: '${{variables.mySqlLocation}}DbContext.sql'
                IpDetectionMethod: 'AutoDetect'

最佳答案

不,这是不可能的。你不能嵌套它们。因此,如果您想立即使用您的 secret 值,您可以尝试使用 Azure Cli task

  - task: AzureCLI@2
    inputs:
      azureSubscription: '${{parameters.azureSubscription}}'
      scriptType: 'pscore'
      scriptLocation: 'inlineScript'
      inlineScript: |
        $secretValue =  az keyvault secret show --vault-name ${{parameters.KeyVaultName}} --name $(KeyVault_Key) --query value  -o tsv
        echo $secretValue

但是,如果这不能解决您的问题,恐怕您将被迫重新设计您的想法。

关于azure - 如何在 Azure DevOps 中的另一个变量中使用一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64229812/

相关文章:

php - 如何使用 PHP 将 Azure 存储 blob 下载为本地文件?

linux - 使用 VSO RM 通过 PS/DSC 部署到 Azure Linux

node.js - Azure Key Vault 上的回调

json - Powershell 中的 Microsoft Azure 配置 JSON 模板输出

git - 有没有办法从现有的 YAML 自动设置 azure devops 管道?

c# - 诊断更新 Azure 表的 C# 程序中的内存泄漏的策略

azure - 在azure构建管道中,一旦推送,如何从自托管代理清理docker镜像(作为管道的一部分创建)?

azure - 在 Azure Devops SSH 任务中运行 `sudo` 命令的安全方法

powershell - Azure key 保管库 : Secret not found error

node.js - 使用 DirectLine JS 在 NodeJs 中自定义 Azure 机器人框架