Terraform 是否可以在资源本身中引用资源名称

Terraform 是否可以在资源本身中引用资源名称,terraform,Terraform,我希望在资源本身内部使用资源名称,以避免字符串重复和复制/粘贴错误 resource "aws_instance" "bastion-euw3-infra-01" { ami = "ami-078db6d55a16afc82" instance_type = "t2.micro" key_name = "sylvain" user_data = te

我希望在资源本身内部使用资源名称,以避免字符串重复和复制/粘贴错误

resource "aws_instance" "bastion-euw3-infra-01" {
  ami           = "ami-078db6d55a16afc82"
  instance_type = "t2.micro"
  key_name      = "sylvain"

  user_data = templatefile("./scripts/cloudinit.yaml", {
    hostname          = "bastion-euw3-infra-01"
    tailscale_authkey = var.tailscale_authkey
  })

  network_interface {
    device_index         = 0
    network_interface_id = aws_network_interface.bastion-euw3-infra-01.id
  }

  tags = {
    Name        = "bastion-euw3-infra-01"
    Environment = "infra"
  }

  lifecycle {
    ignore_changes = [user_data]
  }
}
基本上,我想用某种var替换资源中的
“bastion-euw3-infra-01”
,例如:

resource "aws_instance" "bastion-euw3-infra-01" {
  ...

  user_data = templatefile("./scripts/cloudinit.yaml", {
    hostname          = ___name___
    tailscale_authkey = var.tailscale_authkey
  })

  ...

  tags = {
    Name        = ___name___
    Environment = "infra"
  }

  ...
}

terraform是否提供了一种实现这一点的方法?

这正是它的用途。我想在它自己的定义中使用terraform资源的名称。我不知道输入变量在这里如何帮助我。这在目前是不可能的-请参阅。如果你真的需要做这样的事情,考虑创建一个本地值并在标签和主机名字段中使用它。这正是要做的。我想使用它自己定义中的TrRAFRATE资源的名称。我不知道输入变量在这里如何帮助我。这在目前是不可能的-请参阅。如果你真的需要这样做,考虑创建一个本地值并在标签和主机名字段中使用它。