将多行变量导出到 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
我有一个名为 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