仮想マシン一つを自動構築する手順を書きました。今回は構築する仮想マシンを用途に合わせて切り替えたり、複数の仮想マシンを同時に自動構築したりする手順を書きます。vagrantの管理スコープVagrantに必要なファイルは二つです。仮想マシンのISOイメージとも呼べるBoxファイルと、それをどう構築するかの内容を記述したvagrantfileです。VagrantはBoxファイルをグローバルに管理します。複数の仮想マシンを動かしたい場合でも、その個数分Boxファイルを用意する必要はありません。Boxファイルが保存されているディレクトリを意識する必要もありません。逆に、vagrantfileはプロジェクトごとに管理されます。vagrantの実行内容ごとにvagrantfileを用意する必要があります。vagrantはupする際にカレントディレクトリ内のvagrantfileを探して読み込むため、これが保存されているディレクトリにも気を配る必要があります。いうかvagrantを使う場合必ず作業用ディレクトリを新規作成したほうがよさそう。構築する仮想マシンの切り替えなので、構築する仮想マシンを切り替えたい、例えば同じCentOSでも6と7の二種類を別々に自動構築したい場合は、vagrantfileを2つ用意し、ディレクトリを分けて配置しておけばOKです。upを行うディレクトリを切り替えれば、それぞれの仮想マシンを選択して自動構築できます。vagrantfileを分け、「プロジェクトを分ける」ということです。destroyする場合も、upしたディレクトリにて行う必要があります。upした後、vagrantは仮想マシン固有のファイル(ssh秘密鍵など)や、仮想マシン固有の情報(ロックしているホスト側のファイルなど)を、カレントディレクトリの.vagrantディレクトリ以下に自動的に作成します。destroyする際、vagrantはここを見に行くため、upするディレクトリとdestroyするディレクトリは同じでなければなりません。複数の仮想マシンの同時自動構築プロジェクトを分けるのはvagrantfileを分ければいいだけなんですが、一つのプロジェクトで同時に複数の仮想マシンを自動構築したい場合もあります。upするのはめんどくさいです。これは一つのvagrantfileに複数の仮想マシンを構築するように書いてやればいいです。vagrantfileの書き方わかりやすくするために、vagrantfileを一から書いてみます。ちなみにvagrantでは二バイト文字は使えないので、本例みたいにコメントに日本語はいれないでください。0きほん以下が大枠です。この中に構築内容を記述します。("2")ってのはvagrantfileの書き方エディションが2ってこと。vagrant自体のバージョンとは関係ないです。endを記載し、その中ににVirtualBox固有の設定を書いておきます。ESXiとかだとまた違った書き方になるはずです。2複数の仮想マシンに共通する設定内容を書く「0きほん」の中にそのまま共通設定を書いていきます。仮想マシン固有の設定の中にいちいち書いてもいいけど、まとめられるものはまとめておきます。$scriptについては後述。※やっていることはBoxファイルの指定、デフォゲ設定、rsyncの無効化、sshdでパスワード認証を許可(new)、「$script」の内容実行(new)、最後に再起動(new)です。3変数を書くvagrantfile中に変数を利用することもできます。上記の$scriptは変数を意味しています。変数の中身は「0きほん」の外に書きます。※何をしているかというとキーボードレイアウトの日本語化。Boxイメージは海外で作られたものが多いので、大体デフォルトで外国のキーボードレイアウトになってます。設定変更には仮想マシン中のファイルに複数行を記述する必要があるため、その記述内容を変数としてまとめています。4仮想マシンごと独自の設定を書くマシンになんらかのタグをつけます。タグの頭文字は小文字にしてください。頭文字が大文字だとvagrantのエンジンであるrubyがそれを定数として解釈してしまうため、シンタックスエラーを吐きます。今回は「slave1」と「slave2」というタグをつけた二台のマシンを作成します。|<タグ>|」から「end」の間に、マシン固有の設定を書いていきます。#4おわりend#0おわり123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657以上。upすれば、このファイルの内容に沿って二台の仮想マシンが自動構築されます。upしてから仮想マシンが使えるようになるまでたった4分なので結構満足です。Serverもvagrantで作ったり壊したりしたいんだけど、Linux系と違って自分でBoxファイルを作る必要があるっぽい。ネットに記事がいくつかあがってたけどえっらい長いし、家ならまだしも職場のオフライン環境だとかなーりめんどくさそうなのでちょっとどうしようかな。