paratrooper chef の紹介 @ chef casual talks vol.2 #eytokyo
DESCRIPTION
TRANSCRIPT
capistrano-paratrooper-chefの紹介
( 株 ) タイムインタメーディア小宮健
http://www.flickr.com/photos/yelpar/6678239091/
自己紹介:小宮 健
仕事( 株 ) タイムインターメディア所属テクニカルオフィサ ( 技術責任者 ) として活動
参加コミュニティSphinx-users.jpPython mini hack-a-thon
Chef 歴 1 年ぐらいCommunity cookbook 推進派ですこつこつ Pull Req. 投げてます
Twitter: @tk0miya
Capistrano-paratrooper-chef って ?
Capistrano人口 1,140 人のイタリア共和国カラブリア州
ヴィボ・ヴァレンツィア県のコムーネの一つである。
Paratrooper落下傘兵 《 paratroops の一員》 .
Chefコック ; ( 特に )( レストランなどの ) コック
長 .
http://www.flickr.com/photos/thenationalguard/8029811025/
http://www.flickr.com/photos/thenationalguard/8029811025/
paratrooper-chef
リモートホストに対して ...chef-solo のインストールcookbook を転送chef-solo を実行
コマンドの実行は capistrano を利用
なぜ chef-solo なの ?
お仕事 (SI) の制約小規模サーバ群 ( 〜 10 台 )保守作業でのメンテナンス頻度
案件で環境が類似してる似たようなホストを手で作るのは飽きたcookbook を再利用していきたい
類似プロジェクトと何が違うの ?
既存のものはサンプル的 / 実験的なものが多いロール , data_bags が使えない/tmp 以下で作業してたり
chef-solo 周辺ツールに対応しているlibrarianknife-solo_data_bag
ホスト毎に設定が変更できる
knife-solo とどこが違うの ?
できることは大体いっしょ並列実行できる
knife-solo + xargs でもできるが…妙な状態で rsync されたりしてハマる
windows からでも使えるrsync コマンドを必要としない
capistrano と一緒に使える対象ホストを設定ファイルに書いておけるアプリのデプロイも一緒に管理できる
使い方
deploy.rb の中で require するrequire 'capistrano-paratrooper-chef’require 'capistrano-paratrooper-chef/omnibus_install
config/cookbooks に cookbook を配置config/solo.json を作るcapistrano を実行する
deploy:setup ... chef-solo のインストールparatrooper:chef ... chef-solo の実行
chef は gem で入れたい
そのためのレシピを用意してあるcapistrano-paratrooper-chef/install
capistrano の ruby マネージャに対応rvm-capistranocapistrano-rbenv
ソースコードから入れても使える
ホスト毎に設定を変えたい
knife-solo っぽい仕組みを用意
ホスト毎の定義ファイルを置くConfig/nodes/[hostname].json
見つからない場合は config/solo.json を使う
cookbook マネージャを使いたい
librarian に対応Cookbook 転送時に自動的に librarian 実
行ユーザは Cheffile を書いておくだけ
次バージョンで berkshelf に対応予定
capistrano 使ったことないんだけど
knife paratrooper init コマンドを用意Knife solo init っぽいもの
構成ファイルの初期化をしてくれる近日リリース予定
knife-paratrooper パッケージとなる予定
Capistrano のロールと Chef のロール
capistrano では、対象ホストにロールを設定
role :web, "210.xx.xx.xx”role :app, "210.xx.xx.xx”role :db, "210.xx.xx.xx"
chef でもこのロールを使えないだろうか ?chef_roles_auto_discovery
chef_roles_auto_discovery
Capistrano と Chef のロールを対応付ける
対応する Chef のロールがあれば自動適用
有効にするには…set :chef_roles_auto_discovery, true
例 :role :app, “210.xx.xx.xx”# => config/roles/app.json が ( あれば ) 適用される
今後の予定
AWS(EC2) との連携EC2 インスタンスの自動検索タグにもとづいて chef ロールを自動適
用なんとなく動くものは作ったご意見募集中
まとめ
paratrooper-chef を作ったよcapistrano 経由で chef-solo を実行し
ます自分の欲しい機能を全部盛り込みましたツッコミ歓迎
http://www.flickr.com/photos/thenationalguard/8029811025/
Enjoy cooking!