ChefとVagrantによる開発環境構築の自動化

入門Chef Solo - Infrastructure as Code を参考に、ChefとVagrantで開発環境の構築を自動化した。

関連記事

Vagrantのインストール

Download Vagrant - Vagrant からインストーラをダウンロードする。指示に従ってインストールする。

VirtualBoxのインストール

Downloads – Oracle VM VirtualBox からインストーラをダウンロードする。指示に従ってインストールする。

boxの追加

A list of base boxes for Vagrant - Vagrantbox.es を開いて、任意のboxを選ぶ。選んだboxをvagrantに追加する。

vagrant box add centos http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

VMを起動する

vagrant init で Vagrantfile が生成される。vagrant up でVMが起動する。

% mkdir vagrant
% cd vagrant
% vagrant init centos # 先ほど追加したboxを指定
% vagrant up

起動したVMをknife-solo(後述)から簡単に扱えるようにするため、ssh-configを~/.ssh/configに追記しておく。

vagrant ssh-config --host development >> ~/.ssh/config

vagrant sshするとVMにsshで接続できる。

% vagrant ssh
Last login: Mon Mar 10 07:59:04 2014 from 10.0.2.2
[vagrant@vagrant-centos ~]$

knife-soloをインストール

Shef Soloを直接使うのではなく、knife-soloを使う。

% gem install knife-solo
% rbenv rehash # rbenvを使っている場合のみ
% knife configure

knife configureを実行すると色々聞かれるが、とりあえずは全部デフォルトでOK。Enterキーを連打する。

Chefレポジトリの初期化

knife-soloを使ってChefレポジトリを初期化する。

% knife solo init chef-repo

加えて、knife solo prepareで、先ほど用意したVMであるdevelopmentを指定してやる。

% cd chef-repo
% knife solo prepare development

Cookbookを作ってプロビジョニングを実行

knifeコマンドでcookbookの雛形を生成する。

% knife cookbook create development -o site-cookbooks/

先ほどVagrantで作ったVMに対してChefによるプロビジョニングを行うために、knife solo prepareを実行する。

% knife solo prepare development

nodes/development.jsonを編集する。

{
    "run_list": [
        "recipe[development]"
    ]
}

site-cookbooks/development/recipes/default.rbを編集する。今回作成したCookbookはGithubにpushしておいたので、Githubのこのページを参照のこと。

レシピ作成の方針として、今回はOpscodeやサードパーティ製のCookbooksを一切使用せず、全部自分で書いた。既存のCookbooksは、出来にもばらつきがあって玉石混交だし、他の人が作ったレシピを使ってしまうと裏で何をやっているのか分からなくなるので、できることなら全部自分で書いたほうがChefの理解も深まっていいと思う。

プロビジョニングを実行。

% knife solo cook development

レシピを編集してknife solo cook developmentを実行するたびにプロビジョニングが実行される。まっさらな状態からプロビジョニングし直したい場合は、一度VMを破壊してvagrant upしなおせばいい。

% vagrant destroy -f && vagrant up && knife solo prepare development && knife solo cook development

参考文献

実践 Vagrant

実践 Vagrant