vagrantで開発環境(仮想マシン)を自動構築しよう

DevOps
Wii起動したらドラクエX鯖が死んで何もできなかった@HIROCASTERでございませう。

インフラ環境の自動構築は、もはや当たり前ですよね?

Vagrant

vagrantというVirtualBoxをラップして、chefやpuppetを利用したVMの環境自動構築をしてくれるソフトウェアがあります。

これを利用して、開発環境のセットアップを自動化すると共にVM化して、すぐにコードを書くことだけに集中できる環境を構築する状態をつくっておくことを推奨します。

プラグインを利用すれば、vagrantを通してAmazon EC2への環境構築を自動化したchefやpuppetのコードを再利用できます。

小さい環境であれば、chef-soloを利用して単独で環境構築自動化をオススメします。試しにインフラ構築の自動化を学ぶのにも今回の様な環境で学習してみてはいかがでしょうか。

スポンサーリンク

vagrantのインストール

gemを利用しましょう。

gem install vagrant

boxを登録

vagrantのboxとはLinuxイメージのひな形です。

で大抵のLinuxイメージが配布されています。

vagrant box add precise64 http://files.vagrantup.com/precise64.box

とすることにより”precise64″という名前でUbuntu precise 64のイメージが登録されます。

VMを展開・構築

適当なディレクトリをつくって

vagrant init precise64

Vagrantfileというファイルができあがります。このファイルがvagrantの設定ファイルです。

(省略)
config.vm.forward_port 80, 8080 # localhost:8080 にアクセスすればVMの80番ポートに転送される
config.vm.provision :chef_solo do |chef|
   chef.cookbooks_path = "../my-recipes/cookbooks" # cookbookのディレクトリを指定
   chef.roles_path = "../my-recipes/roles" # roleのディレクトリを指定
   chef.data_bags_path = "../my-recipes/data_bags" # data_bagsのディレクトリを指定
   chef.add_recipe "mysql" # 実施するクックブックを指定
   chef.add_role "web" # ロールを使用してれば指定する
   chef.json = { :mysql_password => "foo" } # 必要なattributesがあれば指定
end
(省略)

とりあえず、この部分だけ設定すればchef-soloで環境構築は自動化できる。

knife cookbook create emacs -o ../my-recipes/cookbooks

とやれば、emacsという名前のクックブックひな形が作成される。recipes/default.rbへここを参考にインストールするパッケージや設定ファイルの操作を書いてあげれば良い。

簡単な一例として

package "emacs23"

と書いてやれば、emacs23がaptでインストールされる。filesやtemplateを利用して設定ファイルも配備してあげれば万全である。クックブックは配備するだけでなく、chef.add_recipeに追加するか、run_listなどで実行するクックブックとして与えてやることをお忘れなく。

VMの起動

vagrant up

とすれば、VMが起動される

SSHでのアクセス

vagrant ssh

vagrantユーザーでログインされる。

VMの停止

vagrant halt

VMの削除

vagrant destroy

chef-soloを利用してchefでの環境構築自動化をいろいろと試して見てください。

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE)

John Allspaw、Jesse Robbins、角 征典

タイトルとURLをコピーしました