销毁供应商提供的参考无效

时间:2020-10-20 00:50:06

标签: terraform

我遇到以下错误:销毁供应商提供的引用无效。我不清楚为什么会发生此错误。

销毁时间供应商及其连接配置可能仅 通过“自身”,“ count.index”或“ “ each.key”。

在销毁阶段引用其他资源可能导致依赖性 循环并与create_before_destroy互动不良。

  provisioner "remote-exec" {
    when = destroy
    inline = [
      "java -jar /home/ec2-user/jenkins-cli.jar -auth @/home/ec2-user/jenkins_auth -s http://${aws_instance.jenkins-master.private_ip}:8080 delete-node ${self.private_ip}"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/id_rsa")
      host        = self.public_ip
    }
  }


Error: Invalid reference from destroy provisioner

  on instances.tf line 67, in resource "aws_instance" "jenkins-worker-oregon":
  67:     inline = [
  68:       "java -jar /home/ec2-user/jenkins-cli.jar -auth @/home/ec2-user/jenkins_auth -s http://${aws_instance.jenkins-master.private_ip}:8080 delete-node ${self.private_ip}"
  69:     ]

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,在我的案例中的解决方案是使用 null_resource,它会在特定值发生更改时触发。

就您而言,解决方案可能如下:

resource "null_resource" "register-to-master" {
  triggers = {
    jenkins-master-ip = aws_instance.jenkins-master.private_ip
    private_ip = some_value
  }

  provisioner "remote-exec" {
    when = destroy
    inline = [
      "java -jar /home/ec2-user/jenkins-cli.jar -auth @/home/ec2-user/jenkins_auth -s http://${self.triggers.jenkins-master-ip}:8080 delete-node ${self.triggers.private_ip}"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/id_rsa")
      host        = self.triggers.public_ip
    }
  }

  provisioner "remote-exec" {
    when = create
    inline = [ "echo 'create step'" ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/id_rsa")
      host        = self.triggers.public_ip
    }
  }
}

答案 1 :(得分:0)

如果您只能引用相关资源的属性,则“无效引用”可能是内联命令中对aws_instance.jenkins-master.private_ip的引用,该命令引用了相关资源之外的内容。

相关问题