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

はかどるChefの小ネタ集

2,429

Published on

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

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,429
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
14
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Transcript of "はかどるChefの小ネタ集"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×