1

我正在使用雾库在 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
                            }
                          ])

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

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

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

4

0 回答 0