• Like
はかどるChefの小ネタ集
Upcoming SlideShare
Loading in...5
×

はかどるChefの小ネタ集

  • 2,148 views
Uploaded on

2013.09.19 …

2013.09.19
Chef Casual Talks Kansai vol.2とChef Casual Talks vol.4(Remote) 共同開催で使用したスライドです

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,148
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
11
Comments
0
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. はかどるChefの 小ネタ集 2013.09.19 Chef Casual Talks Kansai vol.2 and Chef Casual Talks vol.4(Remote) Thursday, September 19, 13
  • 2. HiganWorks, OpsRockについて 2 • http://opsrock.in 共同開発・運営 • AWS OpsWorksとChefを主に取り扱 うソリューションを提供 • アプリケーションのためのプラットフォーム構 築/運用自動化をテーマに活動 Thursday, September 19, 13
  • 3. 一番簡単な libraries/の使い方 Thursday, September 19, 13
  • 4. 似たようなことを沢山 template '/etc/php.d/hogehoge' do source 'php.d/hogehoge.erb' end template '/etc/php.d/piyopiyo' do source 'php.d/piyopiyo.erb' end template '/etc/php.d/mogemoge' do source 'php.d/mogemoge.erb' notifies :restart, 'service[php-fpm]' if notifiles ## これだけデーモン再起動 end 4 Thursday, September 19, 13
  • 5. libraries/default.rbに書いて def template_for_php(dir, file, notifiles = false) template ::File.join(dir,file) do source [file, 'erb'].join('.') mode '0644' notifies :restart, 'service[php-fpm]' if notifiles # 引数で指定 end end 5 Thursday, September 19, 13
  • 6. レシピにこうでOK template_for_php node[:php][:php_base_dir] , 'php.ini' template_for_php node[:php][:php_base_dir] , 'php.d/apc.ini' template_for_php node[:php][:php_base_dir] , 'php-fpm.conf', true template_for_php node[:php][:php_base_dir] , 'php-fpm.d/www.conf' 6 Thursday, September 19, 13
  • 7. vimとChefの レシピ開発 Thursday, September 19, 13
  • 8. chef.vim • vimのプラグイン 8 https://github.com/t9md/vim-chef Thursday, September 19, 13
  • 9. chef.vimで • 関連ファイルを開く、split可 • レシピのアトリビュートっぽい記述から、 定義場所へ • テンプレートのソースへ • LWRPのプロバイダからリソースのファイ ルへ • macvimならダブルクリックでもOK • 地味にはかどる 9 Thursday, September 19, 13
  • 10. vim dictonary • Vimの単語補完ライブラリ 10 https://github.com/OpsRockin/opscode_chef.vim_dict Thursday, September 19, 13
  • 11. ソースから感と経験で自動抽出 • 内部DSLなのでgemのメソッド抽出ではイ マイチ • レシピ、ライブラリやclient/solo.rbにも • もう`immediately`が怖くないのではかどる 11 Thursday, September 19, 13
  • 12. 知られていない chef-handler Thursday, September 19, 13
  • 13. Chef-handlerて? • ChefClientのレポート機能 • ハンドラ二種 • スタートハンドラ • 開始時のレポート(あまり意味なし) • レポートハンドラ • 正常系のレポートハンドラ • 異常があった時のExceptionハンドラ 13 Thursday, September 19, 13
  • 14. 何が出せる? • nodeのダンプ • Start,End と経過時間 • Update Resources • Chef実行でConvergeが起こったリソース のリスト • 例外のクラスとスタックトレース 14 Thursday, September 19, 13
  • 15. どこにだせる? • 標準添付のJsonハンドラでファイルダンプ • ほか、Rubyでかけばなんでもあり • ※ハンドラ内の例外は影響なし • 普通の使い方は • 例外があったらメールする • update resourcesをログに出す • IRCにだら流し 15 Thursday, September 19, 13
  • 16. Chef-handler使い方 • どこでもいいので • Chef::Config[:report_handlers]のアレイに Handlerのインスタンスを追加する • exeption/start_handlersも同様 • 何個でもOK 16 Thursday, September 19, 13
  • 17. ログに出すコードサンプル solo.rbでもレシピ内でもOK require 'chef/handler' class Chef::Handler::LogReport < ::Chef::Handler def report Chef::Log.warn '======= Update Resources are following...' data[:updated_resources].each.with_index do ¦r,idx¦ Chef::Log.warn [idx, r.to_s].join(':') end end end Chef::Config[:report_handlers] << Chef::Handler::LogReport.new 17 Thursday, September 19, 13
  • 18. ログのサンプル 18 Thursday, September 19, 13
  • 19. LWRPで なんでもリソース Thursday, September 19, 13
  • 20. LWRPなら • なんでもレシピのリソースでかける • execute. script.. にまみれたレシピって。。 • 冪等性、収束にこだわればLWRP • 詳しくは入魂のQiitaエントリを参照 20 Thursday, September 19, 13
  • 21. Actionの小ネタ Thursday, September 19, 13
  • 22. これどうなるでしょうか file './hoge' do action [:create,:delete,:create,:delete,:create,:delete,:delete] content Time.now.to_s end 22 Thursday, September 19, 13
  • 23. ActionはArrayの順番に 全部やります # cat <<EOL ¦ chef-apply -s > file './hoge' do > action [:create,:delete,:create,:delete,:create,:delete,:delete] > content Time.now.to_s > end > EOL Recipe: (chef-apply cookbook)::(chef-apply recipe) * file[./hoge] action create - create new file ./hoge * file[./hoge] action delete - delete file ./hoge * file[./hoge] action create - create new file ./hoge * file[./hoge] action delete - delete file ./hoge * file[./hoge] action create - create new file ./hoge * file[./hoge] action delete - delete file ./hoge * file[./hoge] action delete (up to date) 23 Thursday, September 19, 13
  • 24. Platform/Provider デバッグ Thursday, September 19, 13
  • 25. ActionでChefが実際に叩くコマンド => Providerを見れば分かる • Chefの挙動が気に入らないのは良くあるこ と • プラットフォームごとに実行されるコマンド はProviderで確認 • テストは基本モックで 25 Thursday, September 19, 13
  • 26. 例:Solarisのサービス操作 • 当初 `-s` が無く、気に入らなかった。 26 Thursday, September 19, 13
  • 27. 挙動を修正 1. レシピのenable_commandなどで上書き 2. Librariesにモンキーパッチでデフォルトの挙動を矯 正 3. OpscodeにIssue 4. コード修正Spec修正 5. プルリクエスト 6. 適当に対話 7. マージ! ChefのNewバージョンリリース! 8. モンキーパッチを撤去する 27 Thursday, September 19, 13
  • 28. Chefのリリースノートにも載る 28 • 自慢できてはかどる Thursday, September 19, 13
  • 29. ChefServerで CookbookのPin Thursday, September 19, 13
  • 30. 運用に欠かせないテク • Cookbookの更新をまず検証、保守がはかど る • 最近はSoloでもEnvironmentがつかえる 30 Thursday, September 19, 13
  • 31. Pin事例 • monitのバージョンあげたい • Cookbookでデフォルトバージョンを変更 • ついでにCookbookのバージョンをUP • test-kitchenで軽く実施 • environment[本番]で旧バージョンにPin • Cookbook Upload • environment[検証]は勝手に更新されていくけど本番変 わらず • 検証環境から例外レポートが上がらなければ本番のPin を外して放置 31 Thursday, September 19, 13
  • 32. GUI(chef-web)注意 • EnvironmentのCookbooksVersionは、Edit ボタンを押したら既存のものが消えます • ubuntu + ChefServer v11.0.8で そんな挙動 • バグっぽいけど掃除に便利なので放置 32 Thursday, September 19, 13
  • 33. とりあえず Cookbookを公開する Thursday, September 19, 13
  • 34. Opscode community 34 Thursday, September 19, 13
  • 35. 国外からIssue,Pull Requestがきて はかどる 35 Thursday, September 19, 13
  • 36. よそにプルリクもはかどる 36 Thursday, September 19, 13
  • 37. issueの切りグセがあれば Rubygemsのリリースノートにも載れる === 2.1.1 / 2013-09-10 Bug fixes: * Only matching gems matching your local platform are considered for installation. Issue #638 by José M. Prieto, issue #639 by sawanoboly. 37 Thursday, September 19, 13
  • 38. おしまい Thursday, September 19, 13