将多行变量导出到 azure-devops yaml 管道中的文件

Export a multi-line variable to a file in azure-devops yaml pipeline

我有一个名为 mySecret

的密钥保管库机密

我的秘密:

foo="val1"
bar="val2"
baz="val3"

我的管道将创建一个包含 mySecret 个值

的文件
variables:  
- group: myKeyVault

steps:
  - bash: |
      echo "##vso[task.setvariable variable=tfvars]$(mySecret)"
      cat <<< "$(tfvars)" > terraform.tfvars
    displayName: export mySecret

问题 1:cat <<< "$(tfvars)" > terraform.tfvars 不应在管道日志中回显 $tfvars。甚至 $mySecret 也没有任何秘密内容。

问题 2:terraform.tfvars 保持空白。

总体思路是 - 您猜对了 - 从密钥库创建 terraform.tfvars 文件。

通过 cli 读取 keyvault 值解决:

parameters:
  - name: environment
    default: 'production'
  - name: keyvault
    default: 'myKeyVault'

steps:
  - bash: |
      az keyvault secret show \
        --name "${{ parameters.environment }}-tfvars" \
        --vault-name "${{ parameters.keyvault }}" \
        --query "value" -otsv > ${{ parameters.environment }}.auto.tfvars
    displayName: Set Variables