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

Terraform新手求助:如何引用random_shuffle生成的随机值?

在Terraform中引用random_shuffle生成的随机值并传递给其他资源

1. 确认random_shuffle配置的正确性

你的random_shuffle配置是有效的:

  • input传入本地列表local.dslist,指定了随机数据源
  • result_count = 1表示从输入列表中随机选出1个元素,最终result属性会返回一个长度为1的列表(即便只选1个元素,result依然保持列表类型)

2. 正确传递随机值给其他资源

你当前错误使用了var.random_dslist(这是引用输入变量的语法),实际应该直接引用random_shuffle资源的输出属性。

由于random_shuffle.random_dslist.result是列表类型,而vsphere_datastore的name参数需要单个字符串,所以要通过索引[0]取出列表里的唯一元素。另外Terraform 0.12+版本支持直接引用资源属性,无需${}插值语法,写法更简洁。

修改后的完整代码如下:

locals {
  dslist = [
    "Datastore1",
    "Datastore2",
    "Datastore3"
  ]
}

resource "random_shuffle" "random_dslist" {
  input        = local.dslist
  result_count = 1
}

output "random_dslist" {
  value = random_shuffle.random_dslist.result[0] # 改为直接输出单个值,更直观
}

data "vsphere_datastore" "datastore" {
  name          = random_shuffle.random_dslist.result[0]
  datacenter_id = data.vsphere_datacenter.dc.id
}

补充说明

  • 如果需要随机多个元素,只需调整result_count的值,引用时按需取对应索引的元素即可
  • 每次执行terraform apply时,random_shuffle会重新生成随机值(若要固定结果,可设置keepers参数绑定特定条件)

内容的提问来源于stack exchange,提问作者vespavbb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:40:31