[Vagrant] vagrant up で複数の仮想環境を並行して起動するには [up]

Pocket

なにかイベントがあるときは、全部重なるんだよなと思いつつ、忙しくなる未来を考えないようにして晩酌してるしょっさんです、こんばんわ。


かわいい

お酒の写真探しに行ったのに、「渋谷のIT企業で働くキラキラ女性広報|フリー写真素材・無料ダウンロード-ぱくたそ」が可愛すぎたので、取りあえず写真載っけてみる程度には、長い間、男の子やってます。もう 41歳です。しにたい。

vagrant up が遅い

最近、複数の Linux環境などを利用して検証する立場になってしまったので、我が「さくらのクラウド」で、複数の Linux環境を起動できるような Vagrantfile を作って、ちまちま検証しています。

が、困った事に vagrant up に、思ったより時間がかかる。

今のところ、最低限の検証環境として 6つ準備しているわけですが、これらが順番に起動していくとなると、一つ一つが数分で起動するとしても、全部起動するまでには数十分かかるケースが出てくるわけです。これはいかん。

とりあえず、

1
2
3
vagrant up test01 &
vagrant up test02 &

vagrant up test03 &

こんなことをしてみると、3つ並行して起動できる事は分かりました。しかしだな、これはちょっとスマートじゃない。それに、& つけないといけないので、うまいことワンライナーでかけないし、これしきの事で shell script化するのも、ちょっとアレ。

ということで、思い出したる xargs-n 1 で引数を一つずつ渡して、かつ、-P xx個、並行して起動させる事ができるじゃないかと思いだしたわけです。xargs有能。

起動していない仮想環境を全て並行して起動させるワンライナー

と言う事で、どうせなら、起動していないヤツ全部起動させるにはどうしたら良いかなー(´∀`)なんて書いてみたのが次。

1
vagrant status  | grep not_created | awk '{print $1}' | xargs -n 1 -P 10 vagrant up

後半の xargs -P 10 の値は、登録している仮想環境の数によって調整は必要だけれども、取りあえず、パラレルで起動させられることは確認できました、やっほい。これで、並行起動させられるようになって、起動時間を短縮できるようになったとともに、もう一つ良いことありました。

「起動途中でエラーが発生しても後続に影響がない」

そう、通常の vagrant up では、複数の環境を起動している最中で、運悪くうまく仮想環境が起動できなかった場合、起動スクリプトはそこで終了してしまうのです。ですよ。ですが、今回の場合、一つずつ並行して vagrant up しているお陰で、ある仮想環境の起動ミスが、他の仮想環境の起動に影響が出ないのです。ですから、「全部起動するのに 20分かかるから、vagrant up したらちょっと放置しといて別のコトしよう」なんて、裏で実行させたままにしているときに限ってエラーが発生していると「起動してないじゃん(‘A`)」みたいな切ないことにならなくなるんです。嬉しい。

ということで良かった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください