为什么用户数据在我的 Terraform 代码中不起作用?

Why is userdata not working in my Terraform code?

我正在使用 Terraform 并尝试使用用户日期执行 bash 脚本。下面是我的代码:

    resource "aws_instance" "web_server" {
  ami           = var.centos
  instance_type = var.instance-type
  subnet_id     = aws_subnet.private.id
  private_ip    = var.web-private-ip
  associate_public_ip_address = true

  user_data = <<-EOF
          #!/bin/bash 
          yum install httpd -y
          echo "hello world" > /var/www/html/index.html
          yum update -y
          systemctl start httpd
          firewall-cmd --zone=public --permanent --add-service=http
          firewall-cmd --zone=public --permanent --add-service=https
          firewall-cmd --reload
          EOF
}

但是,当我导航到 public IP 时,我没有看到“hello world”消息,也没有得到服务器的响应。我在这里缺少什么吗?我试过直接通过 aws 控制台,但用户数据在那里不成功。

验证 你在我的 centos 实例上的用户数据,你的脚本正确。然而,这个问题可能是因为两件事:

  1. subnet_id = aws_subnet.private.id 这表明您已将实例置于私有子网中。要从 Internet 连接到您的实例,它必须位于 public 子网

  2. 没有指定 vpc_security_group_ids,这导致使用 VPC 中的默认 SG,默认情况下互联网流量被阻止。

另外我不确定你想用 private_ip = var.web-private-ip 做什么。令人困惑。