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 が返されるまでに非常に長い時間がかかります。
ボリュームがマウントされ、パーティショニングの準備ができていることを確認するためのより良い/信頼できる方法はありますか?