首页 > 解决方案 > 在创建 EC2 期间将 Terraform 实例属性引用到用户数据

问题描述

如何将资源的public_dns值传递给该部分?aws_instanceuser_data

resource "aws_instance" "app_server" {
  ami                    = "ami-04ad2567c9e3d7893"
  instance_type          = "t2.micro"
  vpc_security_group_ids = [aws_security_group.web-sg.name]


  user_data = <<-EOF
                  #!/bin/bash
                  sudo su
                  echo "<p> The Public DNS of instance: ${self.app_server.public_dns} </p>" >> index.html
                  python -m SimpleHTTPServer 80
                  EOF
  tags = {
    Name = "web_instance"
  }

}

我尝试使用self或使用aws_instance.app_server.public_dns声明,但没有一个可以解决以下错误。

在此处输入图像描述

在此处输入图像描述

标签: amazon-web-servicesterraform

解决方案


公共 dns 将在实例启动后可用。无法在用户数据中引用它。您可以使用以下命令阅读它:

curl http://169.254.169.254/latest/meta-data/public-hostname

推荐阅读