我有一个EC2实例的脚本,远程启动另一个实例。
一旦这个实例已经完全加载(完成启动),我希望它自动运行一个bash脚本,那么最好的方法是什么?
我需要一切都完全开始,基本上bash脚本运行一个图像转换脚本(使用ImageMagick并执行几次“wget”命令)
目前,该脚本位于:
/home/root/beginProcess.sh
我可以通过执行手动启动它
bash beginProcess.sh
RHEL-6.2-育雏EBS-I386
还有一个EBS卷附加到这个,如果有帮助,谢谢!
我build议只使用ec2-run-instances的用户数据选项。 它可以让你给一个脚本的某种types的虚拟机将在第一次启动运行。 如果您使用的是Ubuntu或Debian,那么您可以使用cloud-init ,这可以为stream程提供一些不错的方法。 如果使用cloud-init,则可以使用configuration文件的[runcmd]部分来指定引导后运行的任意命令。
感谢SF用户Eric Hammond的用户数据页面。 查看他的网站 – 它拥有丰富的AWS信息。
编辑:重新阅读后,目前还不清楚是否要在初始启动或每次启动时运行命令。 以上说明仅适用于初始引导。 如果你想在每次启动时运行一个命令,你有几个选项 – 你可以通过@reboot cron指令运行一个命令,或者你可以添加脚本到/etc/rc.local ,每次运行系统启动。
如果您使用的是安装了cloud-init软件包的AMI(例如Amazon Linux或Ubuntu),那么您可以简单地将bash脚本(以#!开头)作为用户数据文件传递,它将自动运行启动过程结束。
例如,它可以像下面这样简单:
ec2-run-instances \ --user-data-file /home/root/beginProcess.sh \ --key $USER \ ami-XXXXXXXX
下面是我介绍用户数据脚本概念的文章,现在在Amazon Linux和Ubuntu等主要EC2 AMI中可用: http : //alestic.com/2009/06/ec2-user-data-scripts
不幸的是,它看起来像你想使用RHEL AMI。 我运行了一个副本,在第一次启动时找不到对cloud-init或运行用户数据脚本的任何引用,也没有对同样的工作进行testing。
我并不是说你应该为此转换Linux发行版,但是Amazon Linux是基于RHEL的,所以这可能适合你。
下面是我写的一篇文章,可能会帮助您在第一次运行时debugging用户数据脚本: http : //alestic.com/2010/12/ec2-user-data-output