paratrooper chef の紹介 @ chef casual talks vol.2 #eytokyo

20
capistrano-paratrooper- chef ののの ( 株 ) 株株株株株株株株株株株 株株株 http://www.flickr.com/photos/yelpar/6678239091/

Upload: takeshi-komiya

Post on 05-Dec-2014

1.760 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

capistrano-paratrooper-chefの紹介

( 株 ) タイムインタメーディア小宮健

http://www.flickr.com/photos/yelpar/6678239091/

Page 2: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

自己紹介:小宮 健

仕事( 株 ) タイムインターメディア所属テクニカルオフィサ ( 技術責任者 ) として活動

参加コミュニティSphinx-users.jpPython mini hack-a-thon

Chef 歴 1 年ぐらいCommunity cookbook 推進派ですこつこつ Pull Req. 投げてます

Twitter: @tk0miya

Page 3: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

Capistrano-paratrooper-chef って ?

Capistrano人口 1,140 人のイタリア共和国カラブリア州

ヴィボ・ヴァレンツィア県のコムーネの一つである。

Paratrooper落下傘兵 《 paratroops の一員》 .

Chefコック ; ( 特に )( レストランなどの ) コック

長 .

Page 4: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

http://www.flickr.com/photos/thenationalguard/8029811025/

Page 5: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

http://www.flickr.com/photos/thenationalguard/8029811025/

Page 6: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo
Page 7: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

paratrooper-chef

リモートホストに対して ...chef-solo のインストールcookbook を転送chef-solo を実行

コマンドの実行は capistrano を利用

Page 8: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

なぜ chef-solo なの ?

お仕事 (SI) の制約小規模サーバ群 ( 〜 10 台 )保守作業でのメンテナンス頻度

案件で環境が類似してる似たようなホストを手で作るのは飽きたcookbook を再利用していきたい

Page 9: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

類似プロジェクトと何が違うの ?

既存のものはサンプル的 / 実験的なものが多いロール , data_bags が使えない/tmp 以下で作業してたり

chef-solo 周辺ツールに対応しているlibrarianknife-solo_data_bag

ホスト毎に設定が変更できる

Page 10: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

knife-solo とどこが違うの ?

できることは大体いっしょ並列実行できる

knife-solo + xargs でもできるが…妙な状態で rsync されたりしてハマる

windows からでも使えるrsync コマンドを必要としない

capistrano と一緒に使える対象ホストを設定ファイルに書いておけるアプリのデプロイも一緒に管理できる

Page 11: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

使い方

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 の実行

Page 12: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

chef は gem で入れたい

そのためのレシピを用意してあるcapistrano-paratrooper-chef/install

capistrano の ruby マネージャに対応rvm-capistranocapistrano-rbenv

ソースコードから入れても使える

Page 13: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

ホスト毎に設定を変えたい

knife-solo っぽい仕組みを用意

ホスト毎の定義ファイルを置くConfig/nodes/[hostname].json

見つからない場合は config/solo.json を使う

Page 14: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

cookbook マネージャを使いたい

librarian に対応Cookbook 転送時に自動的に librarian 実

行ユーザは Cheffile を書いておくだけ

次バージョンで berkshelf に対応予定

Page 15: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

capistrano 使ったことないんだけど

knife paratrooper init コマンドを用意Knife solo init っぽいもの

構成ファイルの初期化をしてくれる近日リリース予定

knife-paratrooper パッケージとなる予定

Page 16: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

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

Page 17: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

chef_roles_auto_discovery

Capistrano と Chef のロールを対応付ける

対応する Chef のロールがあれば自動適用

有効にするには…set :chef_roles_auto_discovery, true

例 :role :app, “210.xx.xx.xx”# => config/roles/app.json が ( あれば ) 適用される

Page 18: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

今後の予定

AWS(EC2) との連携EC2 インスタンスの自動検索タグにもとづいて chef ロールを自動適

用なんとなく動くものは作ったご意見募集中

Page 19: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

まとめ

paratrooper-chef を作ったよcapistrano 経由で chef-solo を実行し

ます自分の欲しい機能を全部盛り込みましたツッコミ歓迎

Page 20: Paratrooper chef の紹介 @ Chef Casual Talks Vol.2 #eytokyo

http://www.flickr.com/photos/thenationalguard/8029811025/

Enjoy cooking!