我想用它来为gcp中的linux机器生成一个随机密码。
我的问题是我之后如何获得密码。 我应该使用输出还是存储在其他地方? 我在互联网上看到了这段代码,然后问自己,他们如何知道密码。
resource "random_string" "master_password" {
length = 16
special = true
}
resource "google_container_cluster" "test" {
name = "test"
zone = "europe-west1-d"
master_auth {
username = "client"
password = "${random_string.master_password.result}"
}
node_pool = [{
name = "pool"
autoscaling = {
min_node_count = 1
max_node_count = 3
}
node_config {
disk_size_gb = 100
machine_type = "n1-standard-2"
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only",
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
labels {
test = "true"
}
}
}]
}
答案 0 :(得分:4)
密码将存储在您的州档案中。您可以在那里进行挖掘,但完全有可能它在文件中的确切位置将在Terraform版本之间发生变化。
获得一致输出的最佳方法是,如您所述,使用输出块。然后当你执行terraform apply
时,会有一个很好的人类可读输出密码。请注意,任何可以访问您所在州的内容都可以访问该密码,因此请保持该州的安全。
如果您使用远程状态(例如在S3存储桶中),您还可以使用terraform_remote_state从另一个Terraform运行中获取对此的访问权限。您需要明确output
要terraform_remote_state
的{{1}}值。
最后,请注意,如果某些内容捕获了terraform apply
的输出,它还会捕获自terraform apply
写入STDOUT以来的输出。如果您使用CI工具,可能会发生这种情况。只是需要注意的事情。