我需要使用terraform在我的gcp实例的用户数据中设置主机名和默认网络(用户数据模板yml如下)
serverInfo:
serverId: 1
hostname: ${hostname}
defaultNetwork: ${defaultNetwork}
但是,经过一番调查,我意识到这是非常困难的。据我了解,用户数据在实际实例创建之前就已经竞争过(如果出错,请更正)。但是在实例创建之后,主机名和网络详细信息将变得可用。您能否建议我一种更好的方式来捕获该信息并在用户数据中对其进行更新?
答案 0 :(得分:1)
google_compute_instance.name_of_your_instance.network_interface.0.network_ip
google_compute_instance.name_of_your_instance.self_link
terraform_remote_state
检索详细信息(请参见https://www.terraform.io/docs/providers/terraform/d/remote_state.html中的更多内容)。令人高兴的是,此远程状态为只读,因此您对其执行的任何操作均不会影响您的gcp实例。答案 1 :(得分:0)
我找到了一种解决此问题的方法,因此,在网络详细信息的情况下,我们可以按以下方式获取网络,然后提取有关其的详细信息(例如cidr等)。但是,对于主机名,我们可以指定用户数据中的名称,然后cloud-init将为我们设置名称。
data "google_compute_subnetwork" "default-subnetwork" {
project = "my-project"
name = "my-subnetwork"
region = "us-central1"
}