gpt4 book ai didi

bash - 在 Azure DevOps 中通过 bash 访问 Azure KV 变量

转载 作者:行者123 更新时间:2023-12-03 00:00:58 28 4
gpt4 key购买 nike

我正在构建一个 azure 的 DevOps 模板,该模板是从不同团队的主管道触发的。在发布阶段,我们使用 AzureKeyVault@1 任务从 Azure Keyvault 获取 secret ,所有 secret 都会根据日志输出下载并存储为当前阶段的输出变量:

##[debug]set secretKey-blabla-password=********
##[debug]Processed: ##vso[task.setvariable variable=secretKey-blabla-password;issecret=true;]***

此任务完成后,我想在后续的 bash 任务中枚举以特定名称开头的所有变量(因为 secret 的数量将根据团队而变化,但将遵循特定的命名约定)。

然后我尝试使用以下方法检索下一个任务中的所有变量:

 - task: Bash@3
displayName: Generate deployment secrets
inputs:
targetType: "inline"
script: |
env | sort ##Tried also with compgen -v

当我运行管道时,KV secret 被正确获取,并且当下一个任务启动时,调试显示从 secret 检索到的所有变量都已加载

##[debug]loading SECRET_SECRETKEY-BLABLA-PASSWORD

但是当我尝试打印代理中的所有变量时,我只获得环境变量或生成的任何其他任务输出变量,而不是来自 KV 的变量。

我知道它可以在 bash 任务中使用该变量的显式输入定义,但我的问题是 secret 变量的名称和数量将取决于执行模板的团队。这就是为什么我想获取所有 secret 导出的变量,然后根据模式过滤将此值转储到特定的 k8s secret 部署文件中

如果可以像这样完成或使用替代方法,有什么想法吗?

谢谢

最佳答案

KV 中的所有变量都被视为 secret ,因此您不会将它们作为环境变量使用。要让它们作为环境变量使用,您必须将它们显式映射为:

- task: PowerShell@2
env:
PIPELINE_SCOPED_SECRET_VAR: $(secret1FromKV)
SECRET_VAR_IN_VARIABLE_GROUP: $(secret2FromKV)

因此,如果您有不同的变量集,则很难完成您的任务。我建议不要这样做,因为你泄露了一些本应保密的事情。但如果您需要这个,请考虑使用 azure cli 和 azure cli 任务来获取变量。

这是不可能定义它的 globally .

关于bash - 在 Azure DevOps 中通过 bash 访问 Azure KV 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64909574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com