Amazon.co.jp: 入門Chef Solo - Infrastructure as Code eBook: 伊藤直也: Kindleストア
をひと通り読んだので、Vagrant上のCentOSにPlay Frameworkが実行可能な環境を構築するレシピを作ってみました。
実行手順はリンク先のREADMEに書いたので、軽く概要をまとめる程度にしたいと思います。(こうして書いてみると意外とやること多いのと、レシピを書く、人のレシピを使う際に色々用語が出てきて、一気にやると混乱すると思うので。)
VM and Vagrant
CentOSな仮想環境を構築するために使用。
設定はVagrantfileに書く。
Vagrantfileにシェルを書いて実行も出来るみたいだが、ここに色々書くのは無理があると思うので、Chef-Soloを使った次第。
Vagrantfileの設定項目
・box(仮想イメージ)の名前およびDL先
・プライベートネットワークの設定
・ホストとリモートの間で共有するディレクトリの設定
chefで操作できるようにする
sshでvagrant upしたCentOSにログイン出来るようにしておく
$ vagrant ssh-config --host hostname >> ~/.ssh/config
Chef-Solo側でレシピ作成および転送
knife solo
実際は殆どこのコマンド操作を行う。
// chefのレシピ集を置く雛形作成
$ knife solo init chef-repo
// リモートにchefを入れる
$ knife solo prepare hostname
// レシピ実行
$ knife solo cook hostname
レシピ作成
ここまでが準備で、ようやくレシピ作成に取り掛かれます。
Berkfileで、人が作ったレシピを使う
gemに対するbundler的な感じで、取得してきたいレシピを記述しておいてBerksコマンドで取得出来る。が、取ってきたやつを使うのにちょっと学習コストがあるかも。これはまた次の機会に解説したいと思います。
// Berksfileに追加
cookbook 'simple_iptables', git:"git://github.com/dcrosta/cookbook-simple-iptables.git"
// 直接gitを指定することも出来る
// このコマンドで取得する。pathは慣習的にcookbooksに入れる模様。
$ berks install --path cookbooks
自前のレシピを書く
// 自前はsite-cookbooksに置く模様
$ knife cookbook create play-install -o site-cookbooks
実行して欲しいリストを書く
今までの手順でやってるとchef-repo/nodes配下にhostname.jsonが出来ていると思うのですが、ここに記述されているレシピが実行されます。(つまり取得してきただけじゃ何も実行されない。)
// 基本的には自前、人の関係なく書ける。
{
"run_list":[
"recipe[simple_iptables]",
"recipe[iptables]"
]
}
で、"knife solo cook hostname"を実行すれば…
まとめ
VM, VagrantをDL
chefをインストール
knifeの設定
レシピを書く、取ってくる
実行
意外とめんどくさいかもしれませんが、一度自分で動かして、レシピを自分で書く、人のレシピを取ってくるあたりまでやると大体概要がつかめてくるんじゃないかなと思います。
次回以降のネタ
・レシピ書く際にchef側に用意されてるコマンド(関数?)の使い方
・人のレシピ取ってきて使う際に設定するの意外とわかりづらいんだよなぁ…英語ばっかだし、の解説