如何激发EC2实例,并在其中每个上传/运行启动脚本?
我想自动启动一组Linux EC2实例。
基本上,我想写一个脚本/程序,将:
- 实例化一个给定的AMI的N个事件。
- 对于每个启动的实例,它将上传一个自定义的脚本,并让脚本运行到实例中。
使用VMWare,我通常会使用vmrun或Vix SDK来做到这一点。
Amazon AWS / EC2中有哪些选项?
答案取决于您正在运行的AMI,因为所提供的function完全取决于AMI。
Amazon Linux AMIS和官方Ubuntu AMI安装了cloud-init软件包。 这有很多方法可以触发启动操作,但最符合您的请求的方式(以及我最喜欢的,因为我发明了它)是用户数据脚本的概念。
在启动EC2实例时,您只需传递任何脚本(以两个字符#!开头)作为用户数据。 它将在实例的第一次启动时以root身份运行。
有关如何工作的具体示例,我在最近的文章中使用了这种精确的技术: 在EC2用户数据脚本中上传已知的ssh主机密钥
您还希望使用相同的脚本运行多个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,或者
-
构build安装了cloud-init的AMI的自定义版本,或者
-
编写一个更复杂的包装脚本,logging所有实例标识,等待所有实例转移到运行状态,等待sshd接受连接,将启动脚本上传到每个实例,并在每个实例上运行启动脚本。
我有一个教程,在 AWS EC2启动时运行的“cloud-init”中运行脚本 。
设置configuration文件(AWS CentOS6)和
在启动EC2时运行脚本
要在Linux上设置configuration文件,您可以参考在AWS Linux上configurationcloud-init 。
我个人使用基于Linux AMI设置的AWS VPC / EBS ,我没有碰到configuration文件/etc/cloud/cloud.cfg
任何内容,但是我的引导脚本在cloud-init中运行良好。