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

如何在每次运行Terraform时生成新的随机数字或随机字符串

Terraform每次运行生成新random_integer随机值的解决方案

默认情况下random_integer资源生成的值会持久化存储在Terraform状态文件中,只要资源配置未发生变更,Terraform就不会重建该资源,因此会一直复用首次生成的数值,你可以通过以下三种方式调整行为:

  • 方案1:强制重建资源
    每次执行apply前标记资源需要重建,即可生成新的随机值:

    • 旧版本Terraform:先执行terraform taint random_integer.你的资源名,再执行terraform apply
    • Terraform 0.15.2及以上版本:直接执行单条命令terraform apply -replace="random_integer.你的资源名"
      该方案的优势是你可以自主控制什么时候需要生成新随机值,不会每次运行都强制变更。
  • 方案2:配置keepers参数自动触发重建
    给random_integer资源添加keepers参数,绑定每次运行都会变化的属性,Terraform检测到属性变更就会自动重建资源生成新值,示例配置:

    resource "random_integer" "example" {
      min = 1
      max = 1000
    
      keepers = {
        # 绑定时间戳,每次运行配置都会变化触发重建
        run_timestamp = timestamp()
      }
    }
    

    注意:该配置会导致每次执行terraform plan都会提示需要重建该随机数资源,所有依赖该随机值的关联资源也会同步触发重建,如果你不希望影响其他关联资源不推荐使用该方案。

  • 方案3:使用external数据源生成临时随机值
    如果你不需要把随机值持久化存入状态文件,可以调用本地命令临时生成,每次运行都会自动获取新值,示例配置:

    data "external" "random_num" {
      program = ["sh", "-c", "echo \"{\\\"num\\\": $RANDOM}\""]
    }
    # 取值方法:data.external.random_num.result.num
    

    该方式生成的随机值不会存入状态文件,仅当前运行生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:00:07