繁体   English   中英

Azure DevOps Yaml:从变量 Azure KeyVault 任务中获取秘密变量

[英]Azure DevOps Yaml: Gaining secret variable out of Azure KeyVault Task from Variable

我正试图从我的 KeyVault 中获取一个秘密。 变量名是secretVar。

像这样获取秘密: $(secretVar) 工作正常,但是我想从这样的变量中检索它:

在此处输入图像描述

我不断收到找不到命令,我不知道为什么这不应该工作。

所以我要提取的秘密名称在 bash 变量中。 对于这个问题,我已经简化了问题,但在我的实际用例中,我有一个 bash for 循环,它遍历秘密名称,在 for 循环中,我想从具有相应秘密名称的 KeyVault 中提取适当的值,如下所示:

for secretname in secrets; do
  echo $($secretname) # This should contain the value of the secret but gives command not found
done

如果有人知道会发生什么,非常感谢任何帮助。

提前致谢!

查看您正在使用的语法。

variable=secretVar

您正在使用文字值secretVar创建环境变量

然后您尝试使用$($variable)执行变量$variable的值。 因此它尝试运行命令secretVar ,该命令显然不存在,并且您会收到一条错误消息。

您正在寻找的语法是

variable=$(secretVar)

就像您在脚本中的第一个echo命令中使用的一样。

如果您不想将变量值作为命令运行,则语法为$variable ,而不是$($variable)

$variable是 Bash 环境变量的语法。

$(variable)是引用 Azure DevOps 变量的语法。

首先, script关键字是命令行任务的快捷方式。 该任务在 Windows 和 Bash 上使用 cmd.exe 运行脚本。 您需要注意您正在使用的代理。

如果要在脚本中设置变量,可以使用 task.setvariable 日志命令。 例如:

- script: |
    echo $(secretvar)
    echo "##vso[task.setvariable variable=variable]$(secretvar)"
- script: |
    echo $(variable)

您可以在本文档中找到更详细的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM