vagrantを使った簡単仮想サーバ環境の準備
サーバ環境を作る時に、VirtualBoxを使って仮想サーバを作るとしても、GUIで仮想マシン作って、起動してOSイメージ読み込ませて。。。とやってると非常に手間です。
そんなわけで、ちょっと前ぐらいから熱い感じのvagrantを使って、簡単に環境を作れるようにします。
環境(ちょっと前に試してたので、若干バージョンが古いです)
OS | MacOS Mountain Lion(10.8.2) |
VirtualBox | 4.2.10 for MaxOSX) |
vagrant | 1.1.5 |
vagrantの1.0,1.1系で違うようなので、今最新の1.2系もまた変わっているところがあるんでしょうか。
Vagrantにちゃんと載ってたりするので、そこはちゃんと読めば大丈夫かも。
準備
MacOS版のVirtualBox.dmgをダウンロード
Downloads – Oracle VM VirtualBox
MacOS版のVagrant.dmgをダウンロード
Vagrant - Downloads
どちらも、dmgファイルを実行してインストールします。
まず、Boxを作ります。Boxは、あらかじめ作られた仮想サーバイメージです。下記のURLに、CentOSやUbuntuなどがあります。
A list of base boxes for Vagrant - Vagrantbox.es
今回はUbuntuを使いたいので、'Ubuntu precise 64'を使いました。*1
vagrant add boxコマンドで、対象のイメージを読み込みます。
# vagrant add box 任意のBox名 BoxのURL $ vagrant add box base http://files.vagrantup.com/precise64.box
このあと、任意のBox名(base)は、Vagrantfileという設定ファイルで使用します。
いくつも作れるので、いくつか取り込んでおいてもいいと思います。
仮想サーバの作成
任意のディレクトリを作成します。
$ mkdir vagrant $ cd vagrant
その中でまず、vagrant initを実行して、Vagrantfileを作成します。
$ vagrant init $ ls Vagrantfile $ vi Vagrantfile Vagrant.configure("2") do |config| #...設定例がたくさん... end
たった2行書くだけで、すぐ使えます。
Vagrant.configure("2") do |config| # 使用するBoxの指定。ここで先ほどvagrant add boxで追加した'任意のBox名'を指定します。 # config.vm.box="使用したいBox名" config.vm.box="base" # プライベートネットワークアドレスを割り当てます。これはそのままですね。 config.vm.box.network :private_network, ip:"192.168.50.12" end
仮想サーバの起動
そして、起動!
$ vagrant up # 長い起動ログ。少し時間かかります。
特に失敗無く起動すると、もう使えるようになります。
$ vagrant ssh
- もしくは、プライベートアドレスで割り当てたIPに直接sshもできます。
# ユーザ名とパスワードはvagrant $ ssh vagrant@192.168.50.12
- ちなみにSSHでパスワードなしの鍵ログインも可能です。
~/.vagrant.d/insecure_private_keyに鍵が作成されるので、~/.ssh/configに以下を追加しておくと、ssh aliasnameだけで繋ぐことも出来ます。
# ~/.ssh/config Host aliasname hostname 192.168.50.13 Identifer_file ~/.vagrant.d/insecure_private_key
仮想サーバの停止
仮想サーバを止める時は、以下のコマンドで止めます。
$ vagrant halt
感想
これだけで、すぐ新しいサーバが準備できます。便利です!今まで、VirtualBox入れて、isoイメージからインストールしてたのは何だったんでしょう。これなら開発環境の準備や、検証などがすぐ出来ます。失敗できる環境があるのは怖くなくてよいです。
複数サーバも作れるので、Web/DBサーバ構成を試したり、サーバ間での動作を確認するのにも使えます。また、vagrantにはプラグイン機能があります。*2
各所で紹介されている、Saharaというサーバのある時点の状態を記録しておいて、ロールバックできるプラグインが便利です。
そのあたりはまた今度。