我遇到以下错误:销毁供应商提供的引用无效。我不清楚为什么会发生此错误。
销毁时间供应商及其连接配置可能仅 通过“自身”,“ 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: ]
答案 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
的引用,该命令引用了相关资源之外的内容。