可以在控制台输出中使用Terraform屏蔽变量吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以在控制台输出中使用Terraform屏蔽变量吗?相关的知识,希望对你有一定的参考价值。
我想将此作为功能请求发布,但我想看看是否有其他人在我发布之前找到了一些聪明的方法。或者也许来自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
感谢您的反馈,密码不能设置为一次性使用,因为其中一些是AD中的服务帐户,这些服务帐户执行其他应用程序无法处理不断更改密码的其他事项。
我们确实通过另一个Azure / Azure DevOps产品找到了解决方案。我们将凭据存储在Azure中的密钥保管库中,Azure DevOps可以访问Azure,并使用Azure DevOps管道将terraform代码发送到Build Server。 Azure DevOps似乎充当了一个shell,它隐藏了控制台的任何秘密,它运行良好。我会推荐给任何想要隐藏terraform文件/命令行秘密的人。
以下是我为一些内部部署服务的方法:
1 - var.password
实际上并不存储密码。相反,它存储环境变量的名称。
2 - 我的脚本从这些环境变量中获取密码。
3 - 我有一个小程序,它可以将秘密加载到环境中并为terraform apply
清除它们。
所以最后我绕过Terraform获取脚本使用的秘密。不理想,但我也找不到更好的解决方案。
以上是关于可以在控制台输出中使用Terraform屏蔽变量吗?的主要内容,如果未能解决你的问题,请参考以下文章