启动亚马逊EC2 Spot实例时挂载EBS

6

我想将一个亚马逊EC2竞价实例作为CI服务器运行。 为了保留历史信息,我想将所有数据保存在单独的EBS卷中,因为竞价实例的EBS卷每次终止时都会被删除。

在启动期间如何挂载EBS卷?

谢谢, Ido。

2个回答

5

您可以编写一个init脚本,使用以下命令附加已经可用的卷:

ec2-attach-volume volume_id --instance instance_id --device device 

为了使这个工作正常运行,您需要:
  1. 在机器上安装EC2-API

  2. 您需要将EC2_PRIVATE_KEYEC2_CERT设置为环境变量,或者必须显式传递。

  3. 您要尝试附加的卷应该可用。或者,可以选择首先强制分离卷

  4. 您可以使用curl http://169.254.169.254/latest/meta-data/instance-id获取当前实例的instance_id。

参考: 希望这可以帮助到您。

有没有办法使用根卷来做这件事?可能无法使用init脚本,因为如果已经使用根磁盘运行脚本,那么要将现有的EBS磁盘设置为根卷已经太晚了。 - Trevor North
请注意,init脚本是由root运行的,因此您的凭据需要作为root添加。awscli特别需要这样做。在附加设备后,可能需要显式地挂载它。 - mckenzm

2
您可以使用EC2 API和您的EBS卷ID来执行此操作。
确切的步骤取决于您的操作系统。这里有一个链接,展示了如何在Linux上完成此操作:http://ec2dream.blogspot.com/search/label/EBS
那个特定的脚本是用Ruby编写的,根据您的Linux发行版,您可能需要安装它。这些原则可以轻松移植到其他shell脚本(例如bash)中。
如果您的实例正在运行Windows,请参见以下内容:Automount EBS volume in Amazon EC2 Windows Instance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接