我想自动启动一组Linux EC2实例。
基本上,我想编写一个脚本/程序:
使用VMWare,我通常会使用 vmrun 或Vix SDK。
亚马逊AWS / EC2有哪些选项?
答案 0 :(得分:82)
答案取决于您正在运行的AMI,因为所提供的功能完全取决于AMI。
Amazon 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
如果您当前正在运行未安装cloud-init的AMI,您可以执行以下操作之一:
切换到安装了cloud-init的AMI,或
构建安装了cloud-init的AMI的自定义版本,或
编写一个更复杂的包装器脚本,该脚本在启动后记录所有实例ID,等待所有实例移动到运行状态,等待sshd接受连接,上传您的启动脚本到每个实例,并在每个实例上运行启动脚本。
答案 1 :(得分:1)
每次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运行良好。