我正在使用雾库在 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 需要很长时间才能回来。
有没有更好/可靠的方法来确保卷已安装并准备好进行分区?