如何在Terraform数据源中传递count.index获取正确IP
解决方案
要将count.index传递到数据块中,你需要给数据源也添加count参数,让它和你的实例资源保持相同的数量,这样每个数据源实例就能对应到一个服务器实例的私有IP。具体修改如下:
修改后的数据源配置
data "oci_resourcemanager_private_endpoint_reachable_ip" "config_server_reachable_ip_address" { count = var.config_server_count private_endpoint_id = oci_resourcemanager_private_endpoint.rms_pe.id private_ip = oci_core_instance.config_server[count.index].private_ip }
修改后的null_resource配置
resource "null_resource" "provisioning_disk_config_server" { count = var.config_server_count depends_on = [oci_core_volume_attachment.ISCSIDiskAttachment_config_server] connection { type = "ssh" host = data.oci_resourcemanager_private_endpoint_reachable_ip.config_server_reachable_ip_address[count.index].ip_address user = "opc" private_key = file(var.ssh_private_key) } // 后续配置... }
关键说明
- 给数据源添加
count = var.config_server_count,让Terraform为每个服务器实例创建对应的数据源实例。 - 在数据源中用
count.index索引到对应服务器的private_ip,确保每个数据源获取的是对应实例的IP。 - 在
null_resource的connection块中,同样用count.index索引到对应数据源的ip_address,建立正确的SSH连接目标。
内容的提问来源于stack exchange,提问作者Glyn Jackson
相关产品推荐
相关产品推荐

