Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模块生命周期内的Terraform忽略标记(时间戳)上的更改,而不是忽略_Terraform_Terraform Provider Azure - Fatal编程技术网

模块生命周期内的Terraform忽略标记(时间戳)上的更改,而不是忽略

模块生命周期内的Terraform忽略标记(时间戳)上的更改,而不是忽略,terraform,terraform-provider-azure,Terraform,Terraform Provider Azure,Terraform v0.12.13和provider.azurerm v1.36.1 我有许多模块将公共标记作为var.default.tags合并到本地标记中,其中一个是timestamp()。我的模块中通常会列出多个要更改的资源 这是工作正常,一切标签正确 但是,在随后的terraform apply中,每个资源上的标记都会得到更新,例如时间戳,即使更改没有影响模块中的特定资源 我理解,根据下面的代码示例,我可以使用lifecycle忽略更改。一切都验证并应用正常,但是生命周期似乎被忽略了

Terraform v0.12.13和provider.azurerm v1.36.1

我有许多模块将公共标记作为
var.default.tags
合并到本地标记中,其中一个是
timestamp()
。我的模块中通常会列出多个要更改的资源

这是工作正常,一切标签正确

但是,在随后的
terraform apply
中,每个资源上的标记都会得到更新,例如
时间戳
,即使更改没有影响模块中的特定资源

我理解,根据下面的代码示例,我可以使用lifecycle
忽略更改。一切都验证并应用正常,但是
生命周期
似乎被忽略了

有什么想法吗

tags = "${merge(
      var.default-tags,
      map(
        "Name", "${local.nameprefix}-this",
        "TF-last-modified", "${timestamp()}"
        )
      )}"
    lifecycle {
      ignore_changes = [
        tags["TF-last-modified"]
    ]
  }

我还应该补充一点,我曾尝试将时间戳作为全局变量(我更喜欢),但我仍然看到了相同的问题。我感觉,
ignore\u changes
旨在忽略资源本身的更改,而不是脚本中的更改。根据文档,您在问题中编写的内容应该有效。因此,最有可能的解释是,要么是提供的信息之外的东西导致了问题,要么是您遇到了一个bug,应该在Terraform tracker上提交一个问题。我确实注意到,
ignore\u changes
对特定键执行
update
操作,而不是
create/destroy
,因此可能是这里的动态生成导致了这个问题。@JamesThorpe,Ye,这就是它应该做的-每次都会自动更改资源的时间戳标记,因此,需要忽略该更改,只在其他值更改时更新。不过,这就是问题所在——就Terraform而言,您希望更改资源,因为您正在为其提供一个新的时间戳
ignore\u changes
使terraform忽略它没有做的事情,而不是忽略它想要做的事情。我还应该补充一点,我已经尝试将时间戳作为一个全局变量(我更喜欢),但我仍然看到同样的问题。我有一种感觉,
ignore\u changes
旨在忽略资源本身的更改,不是脚本内的更改。根据文档,您在问题中所写的内容应该有效。因此,最有可能的解释是,要么是提供的信息之外的东西导致了问题,要么是您遇到了一个bug,应该在Terraform tracker上提交一个问题。我确实注意到,
ignore\u changes
对特定键执行
update
操作,而不是
create/destroy
,因此可能是这里的动态生成导致了这个问题。@JamesThorpe,Ye,这就是它应该做的-每次都会自动更改资源的时间戳标记,因此,需要忽略该更改,只在其他值更改时更新。不过,这就是问题所在——就Terraform而言,您希望更改资源,因为您正在为其提供一个新的时间戳<代码>忽略更改
使terraform忽略它没有做的事情,而不是忽略它想做的事情。