ここまで準備すると、WindowsでもドットインストールさんのChef入門を試すことができます。
こちらで、基本動作を確認すると良いでしょう。

Chef入門 (全14回) – プログラミングならドットインストール

では、続きをやっていきます。

さくらVPSを想定した仮想環境を作成しよう

ここで、さくらVPSを契約しても良いですが、できるだけローカル環境で行う方が、セキュリティ的に良いので、Vagrantを使っていきます。

ホームディレクトリにvagrantdirディレクトリを作成して、さらにその中にsakuravpsディレクトリを作ります。
ディレクトリの場所や名前はお好みで良いですが、この記事ではそれで説明していきます。

Boxを探して入れよう

現在、さくらVPSのデフォルトのOSはCentOS 6 x86_64なので、それに合わせることにします。

さくらVPSでは、OSを変更することができるので、入れたいOSがあれば、それに合わせても良いでしょう。

下記のサイトからVagrantのBoxを探します。

Discover Featured Vagrant Boxes

私は、一番文字列が近いdriebit/centos-6-x86_64を選びました。

Boxの起動と初期設定

こちらで、仮想環境を構築していきます。

initをすると、そのディレクトリにVagrantfileができます。
起動する前に、アクセスできるようにアドレスを設定しておきましょう。

viなどのコマンドで編集すれば良いのですが、Windowsでフォルダを開いて作業するのも良いでしょう。

Vagrantfileを開くと、以下の部分がコメントアウトされているので、外しましょう。

~/vagrantdir/sakuravps/Vagrantfile

それは、Vagrantを起動します。

ChefSSHコマンドを使う場合、下記のようにすると便利です。
やっておきましょう。

これで、擬似さくらVPSが完成しました。

Chefを動かす

それでは、Chefを動かしていきましょう。

リポジトリの作成

まず、リポジトリを作成します。
名前は、chef-repoとしました。

そうすると、こんな感じになります。

ざっと説明すると以下のようになります。

.chef 内部のknife.rbで、レポジトリ内のパスを管理
.gitignore Gitで管理しないファイルなどの管理
Berksfile Berkshelfで依存を管理
cookbooks サードパーティCookbookを入れる
data_bags Cookbookをまたいだデータを入れる
environments 開発/ステージング/本番などと分ける場合に使う
nodes Chefで反映させるマシン(ノードと呼びます)単位で管理する設定ファイルを入れる
roles WEBサーバー/DBサーバーなど、役割で設定を分けるファイルを入れる
site-cookbooks 自分たちのCookbookを入れる

ノードの設定

次にノードを設定します。
実行すると、nodesディレクトリにsakuravps.jsonが作成され、sakuravpsマシンChef Soloがインストールされます。

ためしにrecipeを書いてみる

本格的にrecipeを書く前に、作業の流れを確かめましょう。

Cookbookの作成

testbookというCookbookを作ります。

Cookbookを作成すると、このような構成になります。
ざっと説明すると、以下のようになります。

attributes recipeでは、変更がありそうな箇所を変数にしておきますが、そのdefaultの値を設定します
CHANGELOG.md Cookbookの変更の履歴(主にCookbookを公開する場合に使用)
definitions リソースを拡張する時に使用するようです
files リリースした静的ファイルを入れます
libraries 共通化したいRubyのコードを入れます
metadata.rb Cookbookのメタ情報を記載します(主にCookbookを公開する場合に使用)
providers LWRPsで使用※1
README.md 使い方を記載します(主にCookbookを公開する場合に使用)
recipes recipeを入れます
resources LWRPsで使用※1
templates 動的ファイルを入れます

今回は、強調したセル要素を使用しています。

実際にrecipeを記述

それでは、recipes/default.rbを開いて、WEBサーバー(Apache)をインストールするrecipeを書いてみます。

~/vagrantdir/sakuravps/chef-repo/site-cookbooks/testbook/default.rb

次にrecipeをnodeに登録します。

~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.rb

実行とエラー

それでは実行してみましょう。

実は、Cygwinではエラーになってしまいます。

参考サイト通りに行うと解決できます。

Cygwinのknife solo cookがconnection closed by remote hostでコケル件

この設定が終わったら、気を取り直して、実行します。
このような感じになれば、インストール完了です。

仮想環境にログイン

これだけでは192.168.33.10にアクセスしても、何も表示されません。
Apacheが起動していないからです。
(実際は、この辺りもChefで対応できます)

仮想環境にログインしましょう。

次にApacheを起動します。

設定したアドレスにアクセスすると、Apacheの画面が表示されるはずです。

http://192.168.33.10/

cygwin-chef-sakura2_img_01

初期化する

一通り、動作が確認できたら初期化しましょう。
自分の望んだ環境を構築するまでに、何度インストールし、初期化することになると思います。

仮想環境から出ます。

コマンドを入れると、仮想環境は、初期化されます。

次回は、さくらVPSに合わせた設定をrecipeを書いていきます!