Chefのメモ

chefはrubyで書かれたサーバー設定や更新を自動化するツールです。
rubyのバージョンが古いとエラーが出たりするので、1.9以上のものを入れておきましょう。
準備ができたら、chefのインストール。

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

続けてgemでknife-soloをインストール。

$ gem install knife-solo

gem listでインストール状況を確認。chefとknife-soloのインストールを確認する。
初期設定knife configureを行う。設定はデフォルトで進めていくので、全てEnterを押していく。Enter, Enter, Enter...

$ knife configure

Vagrantで進めていくので、VagrantでaddしておいたCentOSの64bit版を使って仮想マシンを立ち上げる。

mkdir vagrant
vagrant init centos64

Vagrantfileの設定
ワークステーション側からブラウザでアクセスしたいので、ネットワーク周りの設定を行って、vagrant up。

vagrant up

sshの設定も。このあたりはドットインストールのレッスンで使った設定を使い回し。

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

初期化

knife solo init chef-repo

rubyのバージョンが低いとここでエラー

ERROR: knife encountered an unexpected error

ruby1.8.7ではダメらしいので、自分はmacportsでruby2.0.0を入れた。
こちらを参考にした。
http://hotwebtopics.seesaa.net/article/363130711.html

リポジトリを作成する。リポジトリは、クックブック群を含む、Chefの実行に必要な一連のファイルをまとめる入れ物。キッチンともいう。特定のプロジェクトに一つのリポジトリといった粒度。

cd chef-repo
knife solo prepare harmony

クックブックを作成する。クックブックは、ファイルに対するディレクト、あるいはクラスに対する名前空間のように、特定のレシピに必要なデータやファイルをまとめる入れ物。

knife cookbook create hello -o site-cookbooks/
  • oオプションでパスを指定してcookbookをcreateできる。

レシピを作る。レシピとは「コード化された手順書」であり「サーバーの状態」。
recipes/default.rbの編集し、内容を記述。rbという拡張子からも分かる通り、rubyで書かれている。
nodes/harmony.jsonの編集して読み込むレシピを記述。
レシピの実行。

knife solo cook harmony