将random_string作为linux机器的密码

时间:2018-04-05 12:23:44

标签: google-cloud-platform terraform

我想用它来为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"
      }
    }
  }]
}

1 个答案:

答案 0 :(得分:4)

密码将存储在您的州档案中。您可以在那里进行挖掘,但完全有可能它在文件中的确切位置将在Terraform版本之间发生变化。

获得一致输出的最佳方法是,如您所述,使用输出块。然后当你执行terraform apply时,会有一个很好的人类可读输出密码。请注意,任何可以访问您所在州的内容都可以访问该密码,因此请保持该州的安全。

如果您使用远程状态(例如在S3存储桶中),您还可以使用terraform_remote_state从另一个Terraform运行中获取对此的访问权限。您需要明确outputterraform_remote_state的{​​{1}}值。

最后,请注意,如果某些内容捕获了terraform apply的输出,它还会捕获自terraform apply写入STDOUT以来的输出。如果您使用CI工具,可能会发生这种情况。只是需要注意的事情。