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