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

使用azurerm后端存储状态时Terraform null_resource未触发如何调整配置

问题修复方案

1. 修正变量定义的类型不匹配问题

你当前变量定义的object结构和实际传入的属性不一致,先调整变量类型定义,匹配你实际使用的name和programme属性,避免潜在的类型校验失败:

variable "MyProj" {
  type = map(object({
    name     = string
    programme = string
  }))
  default = {
    "Proj1" = {
      name      = "Proj1"
      programme = "java"
    },
    "Proj2" = {
      name       = "Proj2"
      programme  = "npm"
    }
  }
}

2. 为null_resource添加triggers触发条件

null_resource默认不会因为关联变量变化自动触发执行,必须显式通过triggers参数指定触发重建的条件。你需要把MyProj中每个对象的属性值加入triggers,只要对应属性发生变更,就会自动触发null_resource重建,执行local-exec脚本,远程后端和本地后端都会遵循这个触发规则。

同时修正你原来代码中的两处语法错误:progrmme拼写错误、command末尾缺少闭合双引号:

resource "null_resource" "nullr" {
  for_each = var.MyProj

  # 触发条件:只要当前遍历的project配置发生变化就触发执行
  triggers = {
    name      = each.value.name
    programme = each.value.programme
    # 如果你需要整个map的任意变化都触发所有项目的脚本执行,可以取消下面一行的注释
    # all_proj_hash = jsonencode(var.MyProj)
  }

  provisioner "local-exec" {
    command = "bash /home/myscript.sh ${each.value.name} ${each.value.programme}"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:45:02