user_data中的命令不会在terraform中执行

2024-04-10

您好,EC2 实例已创建,但作为 userdata.sh 一部分的命令未执行。当我通过putty手动连接EC2时,我发现EC2实例中没有安装nginx。为了验证脚本是否正在执行,我添加了回显消息,但当我运行 terraform apply 时,命令提示符中没有显示任何输出。我如何验证用户数据是否正在执行?

我已经在 C 驱动器中安装了 Terraform,下面的脚本存在于同一文件夹 C:/Terraform/userdata.sh、C:/Terraform/main.tf 中,我尝试将路径指定为 ${file("./userdata.sh") }”但它仍然不起作用。

请建议,因为我刚刚学习 terraform。谢谢。

#!/bin/bash -v
echo "userdata-start"
sudo apt-get update -y
sudo apt-get install -y nginx > /tmp/nginx.log
sudo service nginx start
echo "userdata-end"

这在我的 terraform 程序 [main.tf] 中被调用,如下所示:

# resource "template_file" "user_data" {
#    template = "userdata.sh"
# }

data "template_file" "user_data" {
template = "${file("userdata.sh")}"
}

resource "aws_instance" "web" {
instance_type = "t2.micro"

ami = "ami-5e8bb23b"

key_name = "sptest"

vpc_security_group_ids = ["${aws_security_group.default.id}"]
subnet_id              = "${aws_subnet.tf_test_subnet.id}"

user_data               = "${data.template_file.user_data.template}"
#user_data              = "${template_file.user_data.rendered}"
#user_data              = "${file("userdata.sh")}"
#user_data              = "${file("./userdata.sh")}"


tags {
Name = "tf-example-ec2"
}
} 

我可以看到您发布的代码存在一个问题, user_data 变量应该类似于

user_data = "${data.template_file.user_data.rendered}"

此外,作为建议,我建议您尝试在脚本中创建一个日志文件来检查所有步骤都已执行。了解脚本是否运行也对您有好处。

我们代码中的一个示例,您可以根据您的标准进行修改

logdir=/var/log
logfile=${logdir}/mongo_setup.log
exec >> $logfile 2>&1

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

user_data中的命令不会在terraform中执行 的相关文章

随机推荐