我想自动启动一组 Linux EC2 实例。
基本上,我想编写一个脚本/程序:
- 实例化我的给定 AMI 的 N 次出现。
- 对于每个启动的实例,它会上传自定义脚本并让该脚本运行到实例中。
如果使用 VMWare,我通常会使用 vmrun 或 Vix SDK 来完成此操作。
Amazon AWS/EC2 有哪些选项?
最佳答案
答案在一定程度上取决于您运行的 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
如果您当前运行的 AMI 未安装 cloud-init,您可以执行以下操作之一:
切换到已安装 cloud-init 的 AMI,或者
构建已安装 cloud-init 的 AMI 自定义版本,或者
编写一个更复杂的包装脚本,在启动后记录所有实例 ID,等待所有实例进入运行状态,等待 sshd 接受连接,上传将启动脚本添加到每个实例,并在每个实例上运行启动脚本。
关于amazon-web-services - 如何启动 EC2 实例并在每个实例上上传/运行启动脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125311/