为什么用户数据在我的 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 实例上的用户数据,你的脚本正确。然而,这个问题可能是因为两件事:
subnet_id = aws_subnet.private.id
这表明您已将实例置于私有子网中。要从 Internet 连接到您的实例,它必须位于 public 子网
没有指定 vpc_security_group_ids
,这导致使用 VPC 中的默认 SG,默认情况下互联网流量被阻止。
另外我不确定你想用 private_ip = var.web-private-ip
做什么。令人困惑。
我正在使用 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 实例上的用户数据,你的脚本正确。然而,这个问题可能是因为两件事:
subnet_id = aws_subnet.private.id
这表明您已将实例置于私有子网中。要从 Internet 连接到您的实例,它必须位于 public 子网没有指定
vpc_security_group_ids
,这导致使用 VPC 中的默认 SG,默认情况下互联网流量被阻止。
另外我不确定你想用 private_ip = var.web-private-ip
做什么。令人困惑。