ChefSoloでVagrantで作った仮想環境の環境構築をする

Vagrantで環境作りなおすたびにいろいろmakeしたりするのが面倒なんでChefを使ってハイカラな環境構築をする。

前提

ゲストマシンはCentOS6.3でChefClientがインストール済みのBoxイメージを利用。

ホストマシンにChefClientをインストール

OpscodeのサイトでOSとバージョンを入力するとインストール用シェルのURLとインストール方法が表示される。
Macなら↓でOK

$ curl -L https://www.opscode.com/chef/install.sh | sudo bash

インストールできたか確認。バージョンが表示されればインストールOK。

$ chef-client -v

ホストマシンにknife soloのインストール

gemでインストールするのでホストマシンにRuby環境が構築済みであれば↓でOK。

$ sudo gem install knife-solo

Rubyインストールしたくない場合はChefClientにRubyとgemがバンドルされているのでそれを使えばOK。

$ sudo /opt/chef/embedded/bin/gem install knife-solo

knifeの設定

いろいろ聞かれるが全部エンターでOK。

$ knife configure

ホストマシンでchefリポジトリを作成

実行するとディレクトリが作成されるので適当なディレクトリを作ってから実行するのがおすすめ。

$ mkdir ~/chef-repo
$ cd ~/chef-repo
$ knife solo init [任意のリポジトリ名]
$ cd [任意のリポジトリ名]
$ git init
$ git add [knifeコマンドでできたディレクトリたち]
$ git commit

cookbookを用意する

cookbookは色んな所で公開されているので、今回はOpscodeのコミュニティ(?)で公開されているcookbookを利用する。
apacheのcookbookを追加してみる。

$ knife cookbook site vendor apache2 -o ./site-cookbooks

SSHエイリアスを作成

仮想マシンエイリアスを作っておくと楽なので設定しておく。

$ vagrant ssh-config --host [任意のエイリアス名] >> ~/.ssh/config

nodeの設定

nodes/[ホスト名].json

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

インストール

$ knife solo cook [ホスト名]

.