Vagrantのゆるい使い方 #vagrant #linux
VagrantはOSに依存しない開発環境を手軽に管理・配布することができるツールです。
私の環境の場合、開発環境にありがちな問題への対処としてVagrantを導入することにより、いくつかの問題を解決することができました。
- 開発環境構築の手順書を作成したいけど開発者のOSがバラバラ(WindowsでRubyのライブラリが動かない...)
- 複数案件を一台のPCで管理していて案件によりミドルウェアのバージョンが異なる
- 開発環境と本番環境のOSが異なるため各環境独自の不具合が発生してしまう
Vagrantは一般的にChefやPuppetと組み合わせることにより絶大な効果を発揮しますが、ChefやPuppetを使ったことのないエンジニアは覚えることが多くて少し敷居が高いと思っていました。
今回はChefやPuppetを使わずにゆるくVagrantを使う方法をご紹介します。
事前準備
必要なミドルウェアをインストールします。
Vagrant本体とVagrantのバックエンドで使用するVirtualBoxをインストーラの指示に沿ってインストールします。
VirtualBox Download
Vagrant Download
◎version
Vagrant 1.4.1
※余談ですが1.4.0にはRHEL系OSにプライベートIPが振れないバグがありました。
Vagrant Boxの導入
Vagrantはboxという単位でOSのイメージを管理します。
boxはココで確認できます。
CentOSやDebian,Ubuntu,Gentoo, Archlinuxなど様々なOSのboxが公開されています。
今回はCentOS6.4のBoxをインストールします。
書式: vagrant box [処理] [box名] [box URL] $ vagrant box add centos6_4 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box
CentOS6.4のboxをインストールすることができました。
Vagrantの基本
Vagrantの設定ファイルはVagrantfileというテキストファイルになります。このファイルに記載されている内容に沿ってミドルウェアのインストールやIPアドレスの設定などを行います。
まず手始めにCentOS6.4の開発環境を作ってみましょう。
Vagrantfileを配置するディレクトリを作成 $ mkdir ~/vagrant_tutorial $ cd ~/vagrant_tutorial Vagrantfileを作成 書式: vagrant init [box名] $ vagrant init centos6_4 CentOS6.4を起動 $ vagrant up
これだけでCentOS6.4がVirtualBoxにインストールされました。
サーバへのアクセスにはSSHを使います。
VagrantではVagrantfileが配置されているディレクトリまで移動して「vagrant ssh」コマンドを実行することでSSHログインすることができます。
$ vagrant ssh
抜けるためにはexitコマンドを実行します。
$ exit
サーバをシャットダウンするにはhaltコマンドを実行します。
$ vagrant halt
サーバをまた起動するにはupコマンドを実行します。
$ vagrant up
ミドルウェアのインストール
Vagrantで作成した環境にどのミドルウェアをインストールするかは全てVagrantfileに設定します。
今回はmemcachedをインストールする設定を追記します。
Vagrantfileを開いてmemcachedのインストールコマンドとアクセスするためのIPアドレスを設定します。
本来はここでChefやPuppetを使うことが多いのですが、今回はゆるく使う方法なのでシェルでインストールコマンドを記述します。
$ vi Vagrantfile ~ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ~ # ここから # IPアドレスを設定 config.vm.network :private_network, ip: "192.168.33.10" # 内部で実行するコマンドを設定 config.vm.provision :shell, :inline => <<-EOS sudo chkconfig iptables off sudo yum -y install memcached sudo chkconfig memcached on EOS # ここまでを追記 end
Vagrantを起動してprovisionを実行します。provisionはVagrantfileに記述したミドルウェアのインストールや設定などを仮想OS(今回はCentOS6.4)に適用する動作です。
$ vagrant up $ vagrant provision 再起動 $ vagrant reload
これでVagrantfileに設定したコマンドが実行されmemcachedがインストールされました。
確認
VagrantにインストールしたOS外から接続を確認してみます。
$ telnet 192.168.33.10 11211
これで各OSで自由にインストールすることができる仮想OS上のmemcachedサーバができました。 Vagrantfileをプロジェクトのリポジトリにコミットしておくと、他の開発者はvagrant upで仮想OSを立ち上げるだけで、memcachedサーバをインストールすることができます。
Vagrant+シェルだけでもこれだけ簡単に環境を整えることができました。
参考
もっと高度に使用したい方はこちらの記事が参考になります。
nanapi勉強会でVagrant + Berkshelfについて発表しました | Engine Yard Blog JP