【问题标题】:Terraform 14.2: 'Error: Invalid index: This value does not have any indices' on destroy-time provisioner on a destroy-time resourceTerraform 14.2:“错误:无效索引:此值没有任何索引”在销毁时间资源上的销毁时间供应商上
【发布时间】:2021-06-18 02:43:03
【问题描述】:

我有一个创建配置器和一个销毁配置器。我显然读过,触发器可能会解决这个问题,所以它们被集成在这里,但是虽然这成功地构建了资源,但它不会让它们破坏这个module.thingx.null_resource.script-stuff 资源。 我不确定我在这里是否正确使用了触发器,更令人困惑的是创建时间应用工作正常,但销毁时间应用失败并出现上述错误。

这是显然错误所指的模块空资源;包括创建和销毁时间供应商:

resource "null_resource" "script-stuff" {

### -- testing triggers
  triggers = {
     dns_zones = var.dns_zones[each.key]
     dnat_ip = google_compute_instance.server[each.key].network_interface.0.access_config.0.nat_ip
     pem = tls_private_key.node_ssh[each.key].private_key_pem
  } ### -- end testing
  
  depends_on = [google_compute_instance.server, google_project_iam_member.list-sa]
  for_each   = var.list_map

  provisioner "remote-exec" {
    when = create
    inline = [
      "cat ${var.dns_zones[each.key]} > /dev/null",
      "sensitive-script.sh --create"
    ]
    connection {
      type        = "ssh"
      host        = google_compute_instance.server[each.key].network_interface[0].access_config[0].nat_ip
      user        = "common-user"
      private_key = tls_private_key.node_ssh[each.key].private_key_pem
    }
  }

   provisioner "remote-exec" {
     when = destroy
     inline = [
      # "echo ${var.dns_zones[each.key]} > /dev/null", #<-- this doesn't work when terraform is destroying
      "echo ${self.triggers.dns_zones[each.key]} > /dev/null",
       "sensitive-script.sh --destroy"
     ]
     connection {
       type        = "ssh"
       #host        = google_compute_instance.server[each.key].network_interface[0].access_config[0].nat_ip #<-- this doesn't work when terraform is destroying
       host        = self.triggers.dnat_ip
       user        = "common-user"
       #private_key = tls_private_key.node_ssh[each.key].private_key_pem #<-- this doesn't work when terraform is destroying
       private_key = self.triggers.pem
     }
   }

 }

【问题讨论】:

  • 进展如何?仍然不清楚为什么你不能做你正在尝试的事情?
  • 创建阶段该行没有问题。抱怨上述错误的是销毁时间供应商。
  • 正如我在答案中所写 - 销毁不支持变量。详情请查看 github 问题链接。

标签: foreach terraform destroy terraform0.12+


【解决方案1】:

destroy 触发的配置器不支持变量,如此 GitHub 问题中所述:

所以"echo ${var.dns_zones[each.key]} &gt; /dev/null" 中不能有任何变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 2022-07-13
    • 2019-11-14
    • 2020-12-27
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    相关资源
    最近更新 更多