You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:35:14