55

I want to automate the launch of a set of Linux EC2 instances.

Basically, I want to write a script/program that would :

  • Instantiate N occurrences of a given AMI of mine.
  • For each started instance, it would upload a customized script and let the script run into the instance.

Using VMWare, I would typically do that using vmrun or the Vix SDK.

What are the options in Amazon AWS/EC2?

4

2 回答 2

86

答案在一定程度上取决于您正在运行的 AMI,因为所提供的功能完全依赖于 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,或

  • 构建安装了 cloud-init 的自定义 AMI 版本,或

  • 编写一个更复杂的包装脚本,记录所有实例启动后的 id,等待所有实例进入运行状态,等待 sshd 接受连接,将启动脚本上传到每个实例,并在每个实例上运行启动脚本。

于 2012-04-12T16:55:09.280 回答
2

我有一个教程可以在每次 AWS EC2 启动时运行的“cloud-init”中运行脚本。

  • 设置配置文件(AWS CentOS6)和

  • 启动 EC2 时运行脚本

要在 Linux 上设置配置文件,您可以参考在 AWS Linux 上配置 cloud-init

我个人使用基于 Linux AMI 设置的AWS VPC/EBS,我没有对配置文件进行任何修改,/etc/cloud/cloud.cfg但我在 cloud-init 中的启动脚本运行良好。

于 2016-07-20T08:58:51.203 回答