【问题标题】:Commands in user_data are not executed in terraformuser_data 中的命令不会在 terraform 中执行
【发布时间】:2019-01-23 16:59:21
【问题描述】:

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

我已将 Terraform 安装在 C 驱动器中,并且以下脚本存在于同一文件夹 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"
}
} 

【问题讨论】:

    标签: terraform terraform-provider-aws terraform-template-file


    【解决方案1】:

    我可以看到您发布的代码存在一个问题,user_data 变量应该是这样的

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

    此外,作为一项建议,我建议您尝试在脚本中创建一个日志文件,以检查所有步骤已执行。了解脚本是否完全运行也会对您有所帮助。

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

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

    希望这会有所帮助。

    【讨论】:

    • 你不需要单独的日志文件,cloud-init 已经在/var/log/cloud-init-output.log 下记录了东西。用户数据也以 root 身份运行,因此您不需要 sudo。
    • 首先我尝试不使用 sudo ,但仍然没有用
    • 我同意 @ydaetskcoR 的观点,即您不需要在脚本中指定 sudo。我最初错过了这一点。您能否分享一些日志等,以便我们进一步检查并提出建议,这可能是什么问题。
    • 大家好,谢谢。问题得到解决。我使用 .tpl 文件而不是 .sh。
    • 您能否提及您的整个解决方案并将其标记为答案?
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多