控制台输出中的Terraform掩码变量可以输出吗?

Rob*_*rtE 7 terraform hashicorp-vault

我想将其发布为功能请求,但我想在发布之前先看看是否有人找到了某种巧妙的方法。也许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
Run Code Online (Sandbox Code Playgroud)

用例

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"]
  }  
Run Code Online (Sandbox Code Playgroud)

尝试的解决方案 我正在使用保管库将机密信息保存在Terraform文件中,因此我正在使用保管库提供程序并从中调用数据。我试图创建一个模块并输出带有sensitive = true值的机密信息,然后调用该模块以使用机密信息,但仍在控制台中显示。

提案

允许某种敏感值,就像将其输出到Terraform中的变量一样。因此,如果在控制台中调用了上述脚本,它们将不会显示敏感的变量信息。

参考 https://github.com/hashicorp/terraform/issues/16114 https://github.com/hashicorp/terraform/issues/16643

Rob*_*rtE 0

感谢您的反馈,密码不能设置为一次性使用,因为其中一些是 AD 中的服务帐户,它们执行其他操作,而这些应用程序无法处理不断的密码更改。

我们确实通过另一个产品找到了解决方案,即 Azure/Azure DevOps。我们将凭据存储在 Azure 中的密钥保管库中,Azure DevOps 可以访问该保管库,并使用 Azure DevOps 管道将 terraform 代码发送到我们的构建服务器。Azure DevOps 似乎充当了一个外壳,隐藏了控制台中的所有秘密,并且运行良好。我会向任何想要隐藏 terraform 文件/命令行秘密的人推荐它。