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