【发布时间】:2019-05-19 03:59:21
【问题描述】:
我想将此作为功能请求发布,但我想看看是否有其他人在我发布之前找到了一些聪明的方法。或者也许 Hashicorp 的某个人可以告诉我这将是即将推出的功能
在运行terraform apply/show 时,我一直在寻找一些从控制台屏蔽变量的方法。在将变量传递给脚本时,最好尝试使用 local-exec 配置程序来屏蔽变量。
一个名为 Terrahelp 的工具是我能找到的唯一可以执行此操作的工具,但它仅适用于不允许插值的 tfvars 文件中的变量。这无济于事,因为我们正在尝试使用 Vault 将机密信息排除在 terraform 文件之外。
Current Versions
Terraform v0.11.7
provider.null v1.0.0
provider.template v1.0.0
provider.vault v1.3.1
provider.vsphere v1.8.1
用例
provisioner "local-exec" {
command = "&'${path.module}\\scripts\\script.ps1' -name ${var.node_name} -pass '${var.pass}' -user ${var.user} -server ${var.server}"
interpreter = ["Powershell", "-Command"]
}
尝试的解决方案
我正在使用 Vault 将机密信息排除在 Terraform 文件之外,因此我正在使用 Vault 提供程序并从中调用数据。我尝试创建一个模块并使用 sensitive = true 值输出机密,然后调用该模块以使用机密,但仍显示在控制台中。
提案
允许某种敏感值,就像输出到 Terraform 中的变量一样。因此,如果在控制台中调用上述脚本,它们将不会显示敏感的变量信息。
参考资料 https://github.com/hashicorp/terraform/issues/16114 https://github.com/hashicorp/terraform/issues/16643
【问题讨论】:
-
你试过资源
aws_ssm_parameter和它的输出了吗,它已经被标记了(value: <sensitive>),也许你可以从中得到一些提示。 -
如果您使用保险柜,您可以配置一次性密码。那么它们是否在日志中并不重要,因为一旦使用(或过期)它们就不是有效的密码。