等待所有卷附加到实例的正确方法是什么

时间:2013-06-06 23:33:05

标签: ruby amazon-ec2 fog

我正在使用雾库在AWS中创建实例,同时创建实例我也将EBS卷附加到这样的实例:

server = conn.servers.new(:image_id => 'ami-XXXXX',
                          :flavor_id => 'm1.medium',
                          :keyname => 'secret123',
                          :groups => 'gourp123',
                          :block_device_mapping => [
                            { 
                              "DeviceName"=>"sdi", 
                              "Ebs.VolumeSize"=>10, 
                              "Ebs.DeleteOnTermination"=>false
                            },
                            {
                              "DeviceName"=>"sdj", 
                              "Ebs.VolumeSize"=>10, 
                              "Ebs.DeleteOnTermination"=>false
                            }
                          ])

现在,我必须使用net-ssh格式化正在附加的卷,我注意到使用server.wait_for { ready? }没有帮助,因为它等待服务器进入运行状态并返回。这可能不是格式化分区的可靠方法,因为卷可能尚未安装!

所以我找到了另一个选项,即等待实例的控制台输出回来使用: server.wait_for { console_output.body['output'] =~ /^cloud-init boot finished/ } 然后格式化卷,这是现在完成的工作。但是console_output需要很长时间才能回来。

是否有更好/可靠的方法来确保卷已安装并准备好进行分区?

0 个答案:

没有答案