_Эта проблема была первоначально открыта @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
Должен применяться во всех компонентах, выводящих на печать
Код на мастере реализует решение: sensitve_content
. Что не согласуется с остальными ресурсами терраформирования, но, по крайней мере, это решение.
Однако кажется, что он еще не доступен в Terraform v0.11.10 и provider.local v1.1.0.
Это было реализовано в #9 еще в марте 2018 года, но еще не выпущено.
@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 Вы говорите, что должен быть атрибут sensitive_content
для источника данных local_file
? Если да, то какой вариант использования для этого?
@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
, поэтому я думаю, что теперь эту проблему можно закрыть.