问题描述
我正在使用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
}
但是,当我导航到公共IP时,我看不到“ hello world”消息,也没有从服务器获得响应。我在这里缺少什么吗?我尝试直接通过aws控制台,但那里的用户数据不成功。
解决方法
我验证了我在centos实例上的用户数据,并且您的脚本是正确。但是,该问题可能是由于两件事造成的:
-
subnet_id = aws_subnet.private.id
这表明您已将实例放置在专用子网中。要通过Internet连接到您的实例,它必须位于公共子网 -
没有指定
vpc_security_group_ids
,这导致使用VPC中的默认SG,默认情况下,该SG的互联网流量被阻止。
我也不知道您想对private_ip = var.web-private-ip
做些什么。令人困惑。