SlideShare a Scribd company logo
はかどる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を主に取り扱
うソリューションを提供
• アプリケーションのためのプラットフォーム構
築/運用自動化をテーマに活動
Thursday, September 19, 13
一番簡単な
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.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
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
レシピにこうで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
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
• 地味にはかどる
9
Thursday, September 19, 13
vim dictonary
• Vimの単語補完ライブラリ
10
https://github.com/OpsRockin/opscode_chef.vim_dict
Thursday, September 19, 13
ソースから感と経験で自動抽出
• 内部DSLなのでgemのメソッド抽出ではイ
マイチ
• レシピ、ライブラリやclient/solo.rbにも
• もう`immediately`が怖くないのではかどる
11
Thursday, September 19, 13
知られていない
chef-handler
Thursday, September 19, 13
Chef-handlerて?
• ChefClientのレポート機能
• ハンドラ二種
• スタートハンドラ
• 開始時のレポート(あまり意味なし)
• レポートハンドラ
• 正常系のレポートハンドラ
• 異常があった時のExceptionハンドラ
13
Thursday, September 19, 13
何が出せる?
• nodeのダンプ
• Start,End と経過時間
• Update Resources
• Chef実行でConvergeが起こったリソース
のリスト
• 例外のクラスとスタックトレース
14
Thursday, September 19, 13
どこにだせる?
• 標準添付のJsonハンドラでファイルダンプ
• ほか、Rubyでかけばなんでもあり
• ※ハンドラ内の例外は影響なし
• 普通の使い方は
• 例外があったらメールする
• update resourcesをログに出す
• IRCにだら流し
15
Thursday, September 19, 13
Chef-handler使い方
• どこでもいいので
• Chef::Config[:report_handlers]のアレイに
Handlerのインスタンスを追加する
• exeption/start_handlersも同様
• 何個でもOK
16
Thursday, September 19, 13
ログに出すコードサンプル
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
Thursday, September 19, 13
LWRPで
なんでもリソース
Thursday, September 19, 13
LWRPなら
• なんでもレシピのリソースでかける
• execute. script.. にまみれたレシピって。。
• 冪等性、収束にこだわればLWRP
• 詳しくは入魂のQiitaエントリを参照
20
Thursday, September 19, 13
Actionの小ネタ
Thursday, September 19, 13
これどうなるでしょうか
file './hoge' do
action [:create,:delete,:create,:delete,:create,:delete,:delete]
content Time.now.to_s
end
22
Thursday, September 19, 13
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
Platform/Provider
デバッグ
Thursday, September 19, 13
ActionでChefが実際に叩くコマンド
=> Providerを見れば分かる
• Chefの挙動が気に入らないのは良くあるこ
と
• プラットフォームごとに実行されるコマンド
はProviderで確認
• テストは基本モックで
25
Thursday, September 19, 13
例:Solarisのサービス操作
• 当初 `-s` が無く、気に入らなかった。
26
Thursday, September 19, 13
挙動を修正
1. レシピのenable_commandなどで上書き
2. Librariesにモンキーパッチでデフォルトの挙動を矯
正
3. OpscodeにIssue
4. コード修正Spec修正
5. プルリクエスト
6. 適当に対話
7. マージ! ChefのNewバージョンリリース!
8. モンキーパッチを撤去する
27
Thursday, September 19, 13
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
• Cookbook Upload
• environment[検証]は勝手に更新されていくけど本番変
わらず
• 検証環境から例外レポートが上がらなければ本番のPin
を外して放置
31
Thursday, September 19, 13
GUI(chef-web)注意
• EnvironmentのCookbooksVersionは、Edit
ボタンを押したら既存のものが消えます
• ubuntu + ChefServer v11.0.8で
そんな挙動
• バグっぽいけど掃除に便利なので放置
32
Thursday, September 19, 13
とりあえず
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 are
considered for
installation. Issue #638 by José M. Prieto, issue #639 by
sawanoboly.
37
Thursday, September 19, 13
おしまい
Thursday, September 19, 13

More Related Content

PDF
paiza_runでQuine
PPTX
Chef社内向け解説とその課題について
PPTX
明日から始める Chef 入門 #bpstudy
PDF
Chef社内勉強会(第1回)
PPTX
Chef概論とレシピ実践入門
PDF
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する
PDF
Chef meetup vol2_higanwoks
PDF
Pentaho ETL
paiza_runでQuine
Chef社内向け解説とその課題について
明日から始める Chef 入門 #bpstudy
Chef社内勉強会(第1回)
Chef概論とレシピ実践入門
MarketPlaceのAMIをPackerで作る時、 Chefは3度配膳する
Chef meetup vol2_higanwoks
Pentaho ETL

Viewers also liked (20)

PDF
Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code
PDF
さくらのクラウドフォーメーション with Chef [XEgg session]
PDF
Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)
PDF
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
PDF
JAWSUG初心者向けトラック 【Deploy&Ops】
PDF
Building document with the Sphinx public edtion
PPTX
mocloud カスタムDockerイメージ ハンズオン
PPTX
Ansible container
PDF
aws_opsworks
PDF
コンテナ事例 CircleCI, Cucumber-Chef
PPTX
Serverspec at hbstudy #45
PDF
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
PDF
2014年のChefとInfrastructure as code
PDF
さくらのインフラコード
PDF
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
PDF
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
PDF
RubyでDSL
PDF
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
PPTX
Ansible ではじめるインフラのコード化入門
PDF
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code
さくらのクラウドフォーメーション with Chef [XEgg session]
Chef Casual Talks 出張版京セラドーム公演 (JAWS FESTA Kansai 2013内イベント)
Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
JAWSUG初心者向けトラック 【Deploy&Ops】
Building document with the Sphinx public edtion
mocloud カスタムDockerイメージ ハンズオン
Ansible container
aws_opsworks
コンテナ事例 CircleCI, Cucumber-Chef
Serverspec at hbstudy #45
Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
2014年のChefとInfrastructure as code
さくらのインフラコード
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
RubyでDSL
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Ansible ではじめるインフラのコード化入門
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
Ad

Similar to はかどるChefの小ネタ集 (20)

PDF
Chefで作る開発環境
PDF
今日から使い始めるChef
PPTX
Chef windows linux環境構築
PPTX
Aizu.LT::Tokyo #4
PDF
ReVIEW & CI - ChefでCI環境構築
PDF
Openstack chef-repo
PDF
DevOpsを実現する為のChef実践テクニック Chef12対応版
PPTX
春を先取り!OpsWorksとChef ではじめる恋色コーデ術! #pyfes 2013.03
PDF
Some about chef
PDF
Chefのはじめの一歩
PPTX
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
PDF
Chef solo 入門の入門
PDF
20130413 qpstudy Chef邪道編
PDF
Chef Howto with Vagrant + Berkshelf
PDF
Chef
PDF
DevOpsを実現するChef活用テクニック
PDF
入門 Chef Server #biglobetechtalk
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
PDF
Chef+serverspec+werckerでインフラCIする話
PDF
広島Ruby勉強会#35 - Chef入門
Chefで作る開発環境
今日から使い始めるChef
Chef windows linux環境構築
Aizu.LT::Tokyo #4
ReVIEW & CI - ChefでCI環境構築
Openstack chef-repo
DevOpsを実現する為のChef実践テクニック Chef12対応版
春を先取り!OpsWorksとChef ではじめる恋色コーデ術! #pyfes 2013.03
Some about chef
Chefのはじめの一歩
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef solo 入門の入門
20130413 qpstudy Chef邪道編
Chef Howto with Vagrant + Berkshelf
Chef
DevOpsを実現するChef活用テクニック
入門 Chef Server #biglobetechtalk
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
Chef+serverspec+werckerでインフラCIする話
広島Ruby勉強会#35 - Chef入門
Ad

More from Yukihiko SAWANOBORI (14)

PDF
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
PDF
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
PDF
Chef(Server)と AWS OpsWorks(tm)の比較
PDF
What is chef
PPTX
CentOSでつくる神Plesk
PPTX
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
KEY
Lxc on cloud
KEY
The Chef integrations Z Cloud(Joyent)
PPT
Physical to Iaas(Instance), case of VIP.
PPT
Redmine backlogs beginning
PPTX
Aws glacier
PPTX
0808 jawsug-kobe | スポットインスタンスを使った EC2でのスケーラブル負荷検証
PPTX
Sensu impression
PPTX
cURL base_simple_publishing - part of Giraffi
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
DevOpsのアプローチと クラウド/バーチャル環境/構成管理ツール のお話
Chef(Server)と AWS OpsWorks(tm)の比較
What is chef
CentOSでつくる神Plesk
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
Lxc on cloud
The Chef integrations Z Cloud(Joyent)
Physical to Iaas(Instance), case of VIP.
Redmine backlogs beginning
Aws glacier
0808 jawsug-kobe | スポットインスタンスを使った EC2でのスケーラブル負荷検証
Sensu impression
cURL base_simple_publishing - part of Giraffi

はかどるChefの小ネタ集