将变量组中的变量标记为秘密会使它们不可见

时间:2019-03-07 00:08:32

标签: terraform terraform-provider-azure azure-pipelines-release-task

在某些情况下,将变量标记为机密会在Release任务中失去其价值,请允许我进一步阐述。

请在下面找到Terraform Service主体的屏幕截图

enter image description here

以上这些作为变量可以在管道中使用。

以方案为例,其中它们是秘密的并且被锁定。

enter image description here

现在,运行管道并报告未设置必需的变量。

enter image description here

我添加了一个步骤来回显这些变量,以查看是否可以看到它们,这是Release任务: enter image description here

我“假设” ***表示实际的回显,因此它们在echo语句中用词表示。

无法理解行为为何不同:

  1. 以纯文本格式显示时,它们可以在管道中使用
  2. 标记为秘密时,它们将不可用。

如何使它们在管道中可用?

更新

做这样的事情:

Terraform plan -out main.plan -var "ARM_SUBSCRIPTION_ID=$(TF_VAR_ARM_SUBSCRIPTION_ID)" "ARM_CLIENT_ID=$(TF_VAR_ARM_CLIENT_ID)" "ARM_CLIENT_SECRET=$(TF_VAR_ARM_CLIENT_SECRET)" "ARM_TENANT_ID=$(TF_VAR_ARM_TENANT_ID)" It reports: 2019-03-07T00:21:19.7692360Z ##[command]"terraform" plan -out main.plan -var "ARM_SUBSCRIPTION_ID=***" "ARM_CLIENT_ID=***" "ARM_CLIENT_SECRET=***" "ARM_TENANT_ID=***" -input=false -no-color 

获取错误

2019-03-07T00:21:19.8504985Z Too many command line arguments. Configuration path expected. 

1 个答案:

答案 0 :(得分:0)

因此,要继续进行下去,如果将变量设为秘密,则不能直接从任何脚本访问它。我要做的是将我需要解密的任务转到任务的环境变量部分,然后输入以下内容。

enter image description here

这是对变量进行解密并设置相同名称的变量,以便Terraform之类的工具可以访问它。