如何使用谷歌平台提供商的terraform我是否从使用google_compute_region_instance_group创建的实例中获取实例信息?

时间:2018-05-30 20:34:39

标签: google-cloud-platform terraform terraform-provider-gcp

我正在创建一个terraform文件,所以我可以在GCP中设置一些虚拟机来构建我自己的Kubernetes平台(是的google有自己的引擎,但我想使用一些自定义项目)。我已经能够创建.tf文件来创建整个堆栈,就像Kubespray项目中的其他设置一样。类似于您在AWS上对虚拟机进行操作的方法。

我需要自动化的最后一部分是为Ansible创建主机文件。

我使用名为google_compute_region_instance_group的资源创建了Masters and Workers,它将每个实例放在GCP中的不同AZ中。现在我需要获取主机名和IP给这些实例。我遇到的问题是它们是动态创建的资源。因此,为了获取这些信息,我使用数据源来获取信息。

这就是我现在所拥有的。

data.google_compute_region_instance_group.data_masters.instances
[
  {
    "instance" = "https://www.googleapis.com/compute/v1/projects/appportablityphase2/zones/us-east1-c/instances/k8-masters-4r2f"
    "named_ports" = []
    "status" = "RUNNING"
  },
  {
    "instance" = "https://www.googleapis.com/compute/v1/projects/appportablityphase2/zones/us-east1-d/instances/k8-masters-qh64"
    "named_ports" = []
    "status" = "RUNNING"
  },
  {
    "instance" = "https://www.googleapis.com/compute/v1/projects/appportablityphase2/zones/us-east1-b/instances/k8-masters-w9c8"
    "named_ports" = []
    "status" = "RUNNING"
  },
]

正如您所看到的,输出是列表和地图的混合。我能够通过这一行获得实例自我URL。

lookup(data.google_compute_region_instance_group.data_masters.instances[0], "instance")

https://www.googleapis.com/compute/v1/projects/appportablityphase2/zones/us-east1-c/instances/k8-masters-4r2f

然后我可以拆分并获取实例名称。这是Terraform无法解决的难点。在上面的代码中,我必须使用[0]来调用实例信息。然后我需要遍历所有可能超过3或3的实例。

我找不到使用此数据源类型执行此操作的方法。我尝试过count.index但它只支持资源类型而不是数据源。我也尝试过splat语法,但它没有用。

0 个答案:

没有答案