【问题标题】:Azure DevOps Yaml: Gaining secret variable out of Azure KeyVault Task from VariableAzure DevOps Yaml:从变量的 Azure KeyVault 任务中获取秘密变量
【发布时间】:2021-01-09 14:51:31
【问题描述】:

我正试图从我的 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

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

提前致谢!

【问题讨论】:

标签: azure azure-devops azure-pipelines devops azure-pipelines-yaml


【解决方案1】:

看看你使用的语法。

variable=secretVar

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

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

您要查找的语法是

variable=$(secretVar)

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

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

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

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

【讨论】:

  • 嗨,我想要实现的是从密钥库中获取特定的秘密,这些秘密的名称是在 bash 变量中定义的。这就是我试图用一个简单的例子来说明的。如果我不清楚,我很抱歉。我并不完全清楚为什么 $($variable) 执行命令并且它没有使用存储在 $variable 中的文字引用 azure devops 变量。
【解决方案2】:

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

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

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

您可以在this document找到更多详细信息。

【讨论】:

  • 嗨,我想访问在 bash 变量中定义的名称的秘密的问题。尝试以下会出现同样的问题:code - script: | echo $(secretvar) bashvar=secretvar echo "##vso[task.setvariable variable=variable]$($bashvar)" - script: | echo $(variable)
  • 您不需要使用 bashvar=secretvar。请使用 task.setvariable 命令设置:code - script: | echo $(secretvar) echo "##vso[task.setvariable variable=bashvar]$(secretvar)" - 脚本:|回声 $(bashvar)
  • 对于我的特定需要,我确实需要访问在 bash for 循环中定义的秘密,我只是在问题中给出了一个简化的示例,其起点是在 bash 变量中定义一个变量。跨度>
  • 您还有设置变量的问题吗?您可以在问题中添加更多详细信息。如果您仍然被阻止,请随时告诉我,我会尽力提供帮助。
  • 您好,感谢您的帮助!我仍然卡住了我试图详细说明我的问题
猜你喜欢
  • 2020-10-14
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多