【发布时间】:2021-12-07 14:32:02
【问题描述】:
我有一个 terraform 对象的变量映射,如下所示
variable "MyProj" {
type = map(object({
name = string
type = string
}))
default = {
"Proj1" = {
name = "Proj1"
programme = "java"
},
"Proj2" = {
name = "Proj2"
programme = "npm"
}
}
}
我还有一个空资源代码,只要根据上面的 map(objects()) 和所需状态识别出更改,它就会运行一个批处理脚本。
resource "null_resource" "nullr" {
for_each = var.MyProj
provisioner "local-exec" {
command = "bash /home/myscript.sh ${each.value.name} ${each.value.progrmme}
}
}
我的意图是,只要在上面的 map() 中识别出更改,则应该运行 null 资源。
当我在本地机器中保持 terraform 状态时,这会按预期运行。但是,当我使用 azurem 后端将 terraform 状态保存在 Azure blob 容器中时,它并没有运行 null_resource。 即使我将后端用于 terraform 状态,我应该在配置中做哪些更改
【问题讨论】:
-
您当然需要指定
triggers属性。否则 null_resource 永远不会再次运行。 -
@luk2302 谢谢。但是当我将状态保存在本地时,它运行良好。唯一的问题是当我将状态保留在 azurerm 后端时。我不想总是运行 null_resource 。由于我使用的是 for_each ,因此它的运行方式将根据以下链接 stackoverflow.com/questions/69349022/… 有所不同