_这个问题最初由@mtheus作为hashicorp/terraform#18718 打开。 由于提供者拆分,它被迁移到这里。 问题的原始正文如下。_
Terraform v0.11.8
resource "local_file" "kubeconfig" {
sensitive = true
content = "${data.terraform_remote_state.kubernetes.kubeconfig}"
filename = ".kube/config"
}
敏感信息似乎不在输出中
data.terraform_remote_state.kubernetes: Refreshing state...
local_file.kubeconfig: Creating...
content: "" => "\n\napiVersion: v1\nclusters:\n- cluster:\n server: https://**<SENSIVE>**.sk1.us-east-1.eks.amazonaws.com\n certificate-authority-data: LS0tLS1C**<SENSIVE>**\n name: kubernetes\ncontexts:\n- context:\n cluster: kubernetes\n user: aws\n name: aws\ncurrent-context: aws\nkind: Config\npreferences: {}\nusers:\n- name: aws\n user:\n exec:\n apiVersion: client.authentication.k8s.io/v1alpha1\n command: aws-iam-authenticator\n args:\n - \"token\"\n - \"-i\"\n - \"latam\"\n"
filename: "" => ".kube/config"
local_file.kubeconfig: Creation complete after 0s (ID: 73a74cc24de6ebfe8304a9b889415884fd819390)
terraform init
terraform apply
应该适用于所有打印输出的组件
master 的代码实现了一个解决方案: sensitve_content
。 这与其他 terraform 资源不一致,但至少它是一种解决方案。
然而,它似乎还没有在 Terraform v0.11.10 和 provider.local v1.1.0 中可用。
这在 2018 年 3 月的 #9 中实施,但尚未发布。
@alewando很抱歉这里的反应很慢! 核心团队一直在埋头研究 terraform 0.12 版本,不幸的是,有些事情(比如这个提供者!)因此被忽视了。
我会将其添加到书签中,以提醒自己通过待处理的 PR 并发布版本。 感谢您处理此特定问题,并感谢您的耐心等待!
@mildwonkey是否有机会获得发布削减? 我们可以分叉并发布一个新版本,但它需要在 Terraform 编排中加载大量样板才能引入自定义插件。
@mildwonkey再次,我呼吁释放。 这是一场轻松的胜利,可以帮助我们很多。
@mildwonkey我也认为这将是一个很棒的功能,并期待它的发布。 🙂
对于那些寻找临时替代方案的人,这就是我为多个 RDS 数据库导出凭据所做的(我有一个数据库/密码和主密码的映射):
locals {
databases = "${keys(var.shared_db_databases_passwords)}"
manual_output = {
endpoint = "${module.shared_database.database_endpoint}"
username = "myusername"
password = "${var.shared_db_master_password}"
port = 5432
databases = "${local.databases}"
passwords = "${values(var.shared_db_databases_passwords)}"
}
}
resource "null_resource" "manual_output" {
triggers {
databases = "${join(",", local.databases)}"
}
provisioner "local-exec" {
command = "echo $DATA > manual_output.json"
environment {
DATA = "${jsonencode(local.manual_output)}" # Necessary to hide outputs
}
}
}
https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0现已推出,增加了对sensitive_content
的支持,所以我认为这个问题现在可以关闭了。
谢谢@invidian !
local_file
数据源也应该支持sensitive_content
@ShahNewazKhan您是说local_file
数据源应该有一个属性sensitive_content
吗? 如果是这样,这将是什么用例?
@unacceptable想象一下,您正在通过与实际创建 local_file 资源不同的方式设置 local_file 资源的内容(或者您只想读取现有文件)。 如果该内容首先是敏感的,则您需要访问它而不直接在输出或 tfstate 中显示它。
我认为拥有这个功能是有意义的。 local_file
数据源可以有sensitive_filename
参数,这表明内容应该放在sensitive_content
属性而不是content
(和content_base64
)。 然而,这似乎是一个新的功能提议。 也许我们应该创建另一个问题来解决它?
我刚刚在这里创建了它:
https://github.com/terraform-providers/terraform-provider-local/issues/36
我相信该选项应该存在于数据结构中,因此不仅可以从通过 local_file 资源定义的文件中获取敏感内容,还可以从现有文件中获取它。
最有用的评论
https://github.com/terraform-providers/terraform-provider-local/releases/tag/v1.2.0现已推出,增加了对
sensitive_content
的支持,所以我认为这个问题现在可以关闭了。