我想自动启动一组Linux EC2实例。如何启动EC2实例并在每个实例上载/运行启动脚本?
基本上,我想编写一个脚本/程序,将:
- 我的一个给定的AMI实例化的n次出现。
- 对于每个启动的实例,它都会上传一个自定义脚本并让脚本进入实例。
使用VMware,我通常会做,使用vmrun或波动率指数SDK。
Amazon AWS/EC2中有哪些选项?
我想自动启动一组Linux EC2实例。如何启动EC2实例并在每个实例上载/运行启动脚本?
基本上,我想编写一个脚本/程序,将:
使用VMware,我通常会做,使用vmrun或波动率指数SDK。
Amazon AWS/EC2中有哪些选项?
答案取决于您正在运行的AMI,因为所提供的功能完全取决于AMI。
亚马逊Linux AMIS和官方Ubuntu AMI安装了cloud-init软件包。这有很多方法可以触发启动操作,但最符合您要求的方式(以及我最喜欢的方式,因为我发明了它)是user-data script的概念。
启动EC2实例时,您可以简单地将任何脚本(以两个字符#!开头)作为用户数据传递。它将在实例的第一次启动时以root用户身份运行。
对于如何工作的一个具体的例子,我用这个确切的技术在我最近的一篇文章:Uploading Known ssh Host Key in EC2 user-data Script
你也想用相同的脚本运行一个以上的EC2实例。 ec2-run-instances命令以及相关的API和Web控制台允许您指定任意数量的实例以相同的用户数据开始。例如:
ec2-run-instances \
--instance-count 10 \
--user-data-file $MYSCRIPT \
--key $USER \
$SOMEAMI
如果您正在运行的AMI不具有云计算的初始化安装,你可以做的一个:
切换到一个AMI有云的初始化安装,或
建立自己的AMI的定制版本有云的初始化安装,或
写一个更复杂的包装脚本,使一个RECO所有实例id的rd,等待所有实例转移到运行状态,等待sshd接受连接,将启动脚本上传到每个实例,然后在每个实例上运行启动脚本。
我有每次AWS EC2启动时运行的a tutorial to run the script in the "cloud-init"。
设置配置文件(AWS CentOS6)和
运行脚本,当你启动的EC2
要设置的配置文件在Linux上,你可以参考configure cloud-init on AWS Linux 。
我个人使用的是基于Linux AMI的AWS VPC/EBS,我没有碰到任何配置文件/etc/cloud/cloud.cfg
,但我的boot script in the cloud-init运行良好。
一个与SO的好处之一是,通过你开始寻找一些指点的时候,他的名字开始的家伙出现在所有谷歌查询亲自解答您的问题。真棒:-) – 2012-04-13 06:56:56
我会避免上述答案的选项3。用这种方法我遇到了两个不同的陷阱。 1)一个实例有一个你以前见过的IP地址,而known_hosts条目不匹配。 2)机载和控制所有的实例和启动脚本超载,和东西打破 – Nate 2013-08-30 22:09:07
最佳的SO名言:“我最喜欢的,因为我发明了它” – 2013-09-06 23:33:56