EC2实例启动后运行bash脚本


19

我在EC2实例上有一个脚本,该脚本可以远程启动另一个实例。

一旦该实例完全加载(完成引导),我希望它自动运行bash脚本,那么执行此操作的最佳方法是什么?

我需要一切都完全启动,基本上bash脚本运行一个图像转换脚本(使用ImageMagick并执行几次“ wget”命令)

当前,脚本位于此处:

/home/root/beginProcess.sh

我可以通过执行手动启动

bash beginProcess.sh

RHEL-6.2-入门-EBS-i386

另外还有一个EBS卷,如果有帮助,谢谢!

Answers:


26

我建议只使用user-data选项ec2-run-instances。它使您可以给虚拟机提供某种脚本,该脚本将在首次启动时运行。如果您使用的是ubuntu或debian,则可以使用cloud-init,这会给处理过程带来一些好处。如果使用cloud-init,则可以使用[runcmd]配置文件的部分来指定引导后运行的任意命令。

感谢SF用户Eric Hammond提供的用户数据页面。查看他的网站 -它拥有有关AWS的大量信息。

编辑:重新读取后,不清楚是要在初始引导还是在每次引导中运行命令。以上说明仅适用于初始引导。如果要在每次引导时运行命令,则有两种选择-您可以通过@rebootcron指令运行命令,或者可以将脚本添加到中/etc/rc.local,该脚本将在每次系统引导时运行。


1
非常感谢您的回复,澄清一下,我希望系统每次启动时/etc/rc.local都运行它,运转得很好,欢呼
SSH

9

如果您使用的是已cloud-init安装软件包的AMI (例如Amazon Linux或Ubuntu),则可以简单地将bash脚本(以#!开头)作为用户数据文件传递,并且它将在运行末尾自动运行。引导过程。

例如,它可能很简单:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

这是我介绍用户数据脚本概念的文章,该概念现在可在主要的EC2 AMI(如Amazon Linux和Ubuntu)中使用:http : //alestic.com/2009/06/ec2-user-data-scripts

不幸的是,您似乎想要使用RHEL AMI。我运行了一个副本,第一次启动时找不到任何对cloud-init或运行用户数据脚本的引用,也没有对相同的工作进行测试。

我并不是说您应该为此而切换Linux发行版,但是Amazon Linux是基于RHEL的,因此这可能对您有用。

这是我写的一篇文章,如果它第一次无法使用,可能会帮助您调试用户数据脚本:http : //alestic.com/2010/12/ec2-user-data-output


题外话,但也感谢您创造了如此宝贵的资源。三声欢呼。
danieljimenez 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.