我们正在尝试构建一个在AWS中配置弹性负载均衡器(例如ELB)的自动缩放组(简称AS)。自动扩展组本身配置了启动配置(比方说LC)。据我所知,从AWS文档中,在启动配置的用户数据部分中按原样粘贴脚本将为启动到与该自动缩放组关联的自动缩放组的每个实例运行该脚本。
例如,在用户数据中粘贴此文件将在t2 micro ubuntu映像的主文件夹中有一个名为configure的文件:
#!/bin/bash
cd
touch configure
我们的最终目标是: 增加自动缩放组中的实例,它们使用我们的启动脚本启动,并且这个新实例将添加到使用自动缩放组标记的负载均衡器后面。但是脚本没有在实例启动时执行。我的问题是: 我错过了什么吗? 2.在自动缩放组中启动任何新实例时,我应该怎么做才能运行启动脚本? 3.有没有办法验证用户数据是否真的被启动了?
答案 0 :(得分:4)
您关注的方向是正确的。你的用户数据脚本有什么问题。
问题1:
您必须记住的是,用户数据将以用户root
执行,而不是ubuntu
。因此,如果您的脚本运行正常,您会在/root/configure
中找到您的文件,而不是/home/ubuntu/configure
。
问题2:
您的脚本实际上正在执行,但它不正确并且在cd
命令失败,因此不会创建文件。
cd
内置命令将尝试执行cd $HOME
,但是在cloud-init运行期间未设置$HOME
,所以你必须在这里明确。
将您的脚本更改为以下内容,它将起作用:
#!/bin/bash
cd /root
touch configure
您还可以通过检查/var/log/cloud-init.log
日志文件来调试用户数据脚本的问题,特别是检查其中的错误:grep -i error /var/log/cloud-init.log
希望它有所帮助!