aws在启动时附加卷并在apache mysql之前挂载...启动

时间:2016-07-19 23:54:17

标签: amazon-web-services upstart

ubuntu 14亚马逊aws

我正在尝试在启动时附加和装入卷 我在/ etc / init

中有以下.conf文件
start on started network-interface
script
/usr/bin/aws ec2 attach-volume ... && /bin/mount ... || /bin/mount ...  
end script

问题是附加是异步的,可能需要任意时间

所以,如果我第一次启动一个实例 它附加了卷,但如果我重新启动它将在挂载上失败 连接失败,因为它已经附加,然后安装将工作 任何后续重启都会有效,问题是第一次出现卷 需要附上

所以我想我需要第二个脚本(不确定我是否可以在同一个.conf文件中执行)

之类的东西
start on started network-interface
script
////try to attach it if we get an error then its already attached so mount it
/usr/bin/aws ec2 attach-volume ... || /bin/mount ...    
end script

start on WHEN volumen IS attached (no idea what i need here)
script
///new device attached to system mount it
/bin/mount ...
end script

所以我的问题是如何知道设备/卷何时连接到系统 我希望所有这些都可以在像apache mysql开始之前完成 如果不是我还需要重新启动它们或者更好地延迟apache mysql的启动......直到我的mount准备就绪 p.s我需要以这种方式附加多个卷

欣赏任何建议

1 个答案:

答案 0 :(得分:0)

  1. 通过让实例创建并附加自己的EBS卷,每个实例都需要AWS凭据或允许其创建和附加EBS卷的IAM实例角色。这可能存在安全风险。
  2. 如果您必须让实例创建自己的卷(仍然不是最佳),请不要使用upstart。这只需要在首次启动时执行一次,而不是每次重启时执行。将实例user-data中的命令作为首次启动时执行的脚本传递。
  3. 更好的是,使用卷创建实例并自动附加它。创建一个自动缩放组并将EBS卷放入启动配置中。 (自动缩放组不必自动缩放。您可以强制它们具有确切的大小。它们对于自动创建具有复杂配置的实例是无法估量的。)然后在user-data中,传递格式化卷的脚本并安装它(并添加一个条目/etc/fstab)。
  4. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html