DevOpsを実現する為の 
Chef活用テクニック 
Yusuke Ando 
株式会社 Engine Yard 
2014/12/12! 
Chef12対応版
2! 
自己紹介 
• Engine Yard 
• Twitter: yando 
• GitHub: yandod 
• PHPer 
• RedmineのPHP移植 
CandyCane
3! 
Chef実践入門 好評発売中 
• 技術評論社 
• 豪華執筆陣 
• 増刷決定! 
• 基礎から応用まで 
• 一冊でひとまず安心
4! 
Engine Yard 
• 2006年創業 
• AWS/Azure 
• Terremark 
• Chefを活用 
• 自動構築 
• 運用サービス
5! 
国内事例例 
 
idobata.io 
 
永和システムマネジメント様のコメント: 
アプリケーション環境のカスタマイズ性が優れ、われわれのニーズに⾮非常に 
マッチするプラットフォームです。また、AWS東京データセンターを利利⽤用で 
きる点や、Engine Yardのサポート品質が⾮非常に⾼高く、安⼼心してidobata.ioを 
稼働させることができています。
6! 
国内事例例 
 
toreta.in 
 
増井 雄⼀一郎郎様 (TORETA CTO) のコメント: 
TORETAは、24時間365⽇日稼働し続ける必要がありました。 
ただ、保守運⽤用の観点で深夜の緊急対応を⽇日本のスタッフで⾏行行う 
ことは困難でした。Engine Yardのプレミアム サポートによる 
24時間365⽇日体制の運⽤用⽀支援を得ることで、安⼼心してTORETAを 
稼働し続けられています。
7! 
国内事例例 
 
a2mato.com 
 
セブンバイツ様のコメント: 
Engine Yardを使うことでサーバー管理理の⼿手間を減らし、アプリケーション開 
発に注⼒力力出来ています。Engine Yardの製品だけでなく、サポートが素晴らし 
く、最適なサーバー構成・アプリケーションの軽量量化の際に⼒力力を貸していただ 
いています。このサポートは同様のサービスベンダーには無い、素晴らしいサ 
ービスだと思います。
8! 
国内事例例 
 
svgn.biz 
 
スタジオ・アルカナ様のコメント: 
サービスの趣旨から、セキュリティレベルの⾼高いシステム環境が必要でした。 
その点で、HIPAAやSOC2の遵守にも対応可能なEngine Yardは安⼼心して稼働 
できる条件になりました。また、将来的にB to B向けのサービスを展開予定の 
ため、システム環境を容易易に構築できる仕組みと、保守運⽤用を代⾏行行できるサー 
ビスとして、Engine Yardは我々のニーズに⾮非常にマッチしていました。
9! 
導入パートナー募集中 
詳細はブースにて
Agenda! 
1. DevOpsとChef 
2. Chefの基本 
3. Chefをさらに活用するポイント
DevOpsとChef
12! 
「DevOps」知っていますか?
13! 
DevOps 
• 2009年6月 Velocity2009での講演 
• 開発者と運用者の関係改善 
• 変化に素早く対応する
14!
15!
16! 
組織の文化 
• 尊重 
• 信頼 
• 失敗に対する健全な態度 
• 相手を非難しない 
ツール 
• 自動化されたインフラ 
• バージョン管理システム 
の共有 
• ワンステップによるビル 
ドとデプロイ 
• フィーチャーフラグ 
• メトリクスの共有 
• IRCとインスタントメッ 
センジャーのbot 
DevOps
17! 
DevOps的な人気ツール・サービス
18! 
Infrastructure as Code 
• インフラの構築をコードで自動化 
• サーバーの台数などに左右されない 
• 手順書の手動実行より正確・高速 
• Chefは実現する手段の1つ
19! 
メディアでも話題に
20! 
これまでとこれから
21! 
日経SYSTEMS (2014/09/30) 
図10●直近2年間で利用した環境構築ツールの割合(N=62、複数回答)
22! 
好まれるツールの傾向 (私見) 
• Ansibleやシンプルさからプログラマに好 
まれる傾向 
• Puppetは設定ファイルベースに近くイン 
フラエンジニアに好まれる傾向 
• Chefはその中間に近い立ち位置
23! 
Chef(等)を使ってビジネスの速度の変化に 
対応していきたいという機運
Chefの基本
25! 
Chef 
• 構成管理ツール 
• Chef社の製品 
• Ruby / Erlang 
• 冪等性が特長 
• 高い人気
26! 
主要なバージョン 
• Chef 0.10.x 
‒ 開発初期の 0.6 から継続していたバージョン 
• Chef 11.x 
‒ アーキテクチャとインストール方法が変更 
• Chef 12.x 
‒ 課金体系の変更、Chef SoloとClientの統合
27! 
課金体系 
• Enterprise Chef (~Chef11) 
‒ サブスクリプション方式の有償版 
‒ OSSよりもリッチなWeb UI 
• OpenSource Chef-Server 
‒ 機能が大幅に強化され、Analyticsなどの機能が追加 
• Chef Subscription 
‒ サポートの提供 
‒ レプリケーション、ハイアベイラビリティ 
‒ ホスティング 
Chef12~
28! 
採用事例 
• Engine Yard 
• Facebook 
• Prezi 
• サイバーエージェント 
• グリー
29! 
基本的な構成 
Serverにアップロード 
クックブックを書く 
クライアント起動 
クックブックを反映
30! 
サーバー無し構成(Chef Solo) 
各サーバーへクックブ 
ックを配置 
クックブックを書く 
Chef-Solo起動、反映 
※Chef Soloは廃止予定
31! 
サーバー無し構成(chef-client local) 
各サーバーへクックブ 
ックを配置 
クックブックを書く 
Chef-Client 
Local 起動、 
反映 
Chef 
Zero 
Chef 
Zero 
Chef 
Zero 
Chef Zero起動 
Chef12~
32! 
ローカルモードとChef-Zero 
• Chef Clientと通信するAPIを提供 
• データを保存しないChef Server 
• 元々はテスト用に開発された 
• 現在はローカルモードに採用 
• http://qiita.com/sawanoboly/items/ 
4f363909615d8a76e9e5 
Chef12~
33! 
基本的な流れ 
• 対象ノードへのChefのインストール 
• クックブック(レシピ)を書く 
• クックブック(レシピ)を送る 
• Chefクライアント、Chef Soloの実行
34! 
インストール 
• 現在のChefは必要なRubyなどを同梱 
• /opt/chef 配下にインストールされる 
• ChefにさらにGemを追加する際は注意
35! 
クックブック 
package apache2 do! 
action :install! 
end! 
! 
service apache2 do! 
action :start! 
end 
apache2のインストール 
apache2のサービス化
36! 
apt-get / シェルスクリプトとの違い 
• 単純なパッケージ導入以上の処理が可能 
• ohaiを使ったノード情報の取得 
• 設定ファイルの動的な生成 
• 繰り返し実行可能 → 冪等性・収束
37! 
Chef / Chef Soloの実行 
• Chef Clientのcronからの実行 
• デーモン化も一応可能 
• why run (dry run)も可能 
• knife-solo ※ローカルモードに対応予定 
• なるべく頻繁に実行するのが望ましい 
(15分~30分) 
• 実行結果をハンドラで通知
Chefをさらに活用するポイント
39! 
Chefを使っている際の悩み 
• Chefのバージョン (前出) 
• Chefの内部動作 
• クックブックの書き方、品質 
• コミュニティクックブック (Supermarket)
40! 
Chefの内部動作 
• クックブックが実行される順序 
• ファイルなどの変更タイミング 
• 上から順番に実行されない 
• リソースコレクションと収束
41! 
Chefの内部動作
42! 
詳しくはブログにて
43! 
クックブックの書き方にはみんな困る
44! 
クックブックのCIは欠かせない 
• Infrastructure as Code 
• テストのないコードはレガシーコード 
• クックブックが常に健全である事を担保 
• 単体テストを行う 
• 単体テストを継続的に実行する (CI)
45! 
クックブックのテストに使うツール 
• Berkshelf / librarian-chef 
クックブックの収集 
• foodcritic 
クックブックの規約チェック 
• Test-kitchen 
クックブックの単体テスト 
• Severspec 
サーバーの状態の単体テスト
46! 
テストスイートの構成 
クックブック クックブック 
Test Kitchen 
CI環境 Jenkins / Travis CI / Circle CI 
仮想マシン 
Vagrant 
Docker 
VirtualBox 
LXC 
VMWare 
Amazon EC2 
Azure 
FoodCritic Serverspec 
Berkshelf / librarian-chef 
Chef Solo 
Chef Client 
Chef Zero
47! 
Qiitaに詳しく乗っています
48! 
コミュニティクックブック (supermarket) 
• 人類の叡智を結集 
• 多様なプラットフォームに対応 
• 利用者が少ない 
• 作成者も少ない
49!
50! 
皆様に提案 
• クックブックを書こう 
• クックブックをテストしよう 
• コミュニティに登録しよう 
• オープンソースのフローでコード改善
51! 
しつこいようですが、 好評発売中 
• 技術評論社 
• 豪華執筆陣 
• 増刷決定! 
• 基礎から応用まで 
• 一冊でひとまず安心
52! 
又は、Engine Yardにお任せください
53! 
Engine Yard が主要なクックブックを提供 
カスタムレシピ コアレシピ
54! 
導入パートナー募集中 
詳細はブースにて
Thank you!

DevOpsを実現するChef活用テクニック

  • 1.
    DevOpsを実現する為の Chef活用テクニック YusukeAndo 株式会社 Engine Yard 2014/12/12! Chef12対応版
  • 2.
    2! 自己紹介 •Engine Yard • Twitter: yando • GitHub: yandod • PHPer • RedmineのPHP移植 CandyCane
  • 3.
    3! Chef実践入門 好評発売中 • 技術評論社 • 豪華執筆陣 • 増刷決定! • 基礎から応用まで • 一冊でひとまず安心
  • 4.
    4! Engine Yard • 2006年創業 • AWS/Azure • Terremark • Chefを活用 • 自動構築 • 運用サービス
  • 5.
    5! 国内事例例 idobata.io 永和システムマネジメント様のコメント: アプリケーション環境のカスタマイズ性が優れ、われわれのニーズに⾮非常に マッチするプラットフォームです。また、AWS東京データセンターを利利⽤用で きる点や、Engine Yardのサポート品質が⾮非常に⾼高く、安⼼心してidobata.ioを 稼働させることができています。
  • 6.
    6! 国内事例例 toreta.in 増井 雄⼀一郎郎様 (TORETA CTO) のコメント: TORETAは、24時間365⽇日稼働し続ける必要がありました。 ただ、保守運⽤用の観点で深夜の緊急対応を⽇日本のスタッフで⾏行行う ことは困難でした。Engine Yardのプレミアム サポートによる 24時間365⽇日体制の運⽤用⽀支援を得ることで、安⼼心してTORETAを 稼働し続けられています。
  • 7.
    7! 国内事例例 a2mato.com セブンバイツ様のコメント: Engine Yardを使うことでサーバー管理理の⼿手間を減らし、アプリケーション開 発に注⼒力力出来ています。Engine Yardの製品だけでなく、サポートが素晴らし く、最適なサーバー構成・アプリケーションの軽量量化の際に⼒力力を貸していただ いています。このサポートは同様のサービスベンダーには無い、素晴らしいサ ービスだと思います。
  • 8.
    8! 国内事例例 svgn.biz スタジオ・アルカナ様のコメント: サービスの趣旨から、セキュリティレベルの⾼高いシステム環境が必要でした。 その点で、HIPAAやSOC2の遵守にも対応可能なEngine Yardは安⼼心して稼働 できる条件になりました。また、将来的にB to B向けのサービスを展開予定の ため、システム環境を容易易に構築できる仕組みと、保守運⽤用を代⾏行行できるサー ビスとして、Engine Yardは我々のニーズに⾮非常にマッチしていました。
  • 9.
  • 10.
    Agenda! 1. DevOpsとChef 2. Chefの基本 3. Chefをさらに活用するポイント
  • 11.
  • 12.
  • 13.
    13! DevOps •2009年6月 Velocity2009での講演 • 開発者と運用者の関係改善 • 変化に素早く対応する
  • 14.
  • 15.
  • 16.
    16! 組織の文化 •尊重 • 信頼 • 失敗に対する健全な態度 • 相手を非難しない ツール • 自動化されたインフラ • バージョン管理システム の共有 • ワンステップによるビル ドとデプロイ • フィーチャーフラグ • メトリクスの共有 • IRCとインスタントメッ センジャーのbot DevOps
  • 17.
  • 18.
    18! Infrastructure asCode • インフラの構築をコードで自動化 • サーバーの台数などに左右されない • 手順書の手動実行より正確・高速 • Chefは実現する手段の1つ
  • 19.
  • 20.
  • 21.
    21! 日経SYSTEMS (2014/09/30) 図10●直近2年間で利用した環境構築ツールの割合(N=62、複数回答)
  • 22.
    22! 好まれるツールの傾向 (私見) • Ansibleやシンプルさからプログラマに好 まれる傾向 • Puppetは設定ファイルベースに近くイン フラエンジニアに好まれる傾向 • Chefはその中間に近い立ち位置
  • 23.
  • 24.
  • 25.
    25! Chef •構成管理ツール • Chef社の製品 • Ruby / Erlang • 冪等性が特長 • 高い人気
  • 26.
    26! 主要なバージョン •Chef 0.10.x ‒ 開発初期の 0.6 から継続していたバージョン • Chef 11.x ‒ アーキテクチャとインストール方法が変更 • Chef 12.x ‒ 課金体系の変更、Chef SoloとClientの統合
  • 27.
    27! 課金体系 •Enterprise Chef (~Chef11) ‒ サブスクリプション方式の有償版 ‒ OSSよりもリッチなWeb UI • OpenSource Chef-Server ‒ 機能が大幅に強化され、Analyticsなどの機能が追加 • Chef Subscription ‒ サポートの提供 ‒ レプリケーション、ハイアベイラビリティ ‒ ホスティング Chef12~
  • 28.
    28! 採用事例 •Engine Yard • Facebook • Prezi • サイバーエージェント • グリー
  • 29.
    29! 基本的な構成 Serverにアップロード クックブックを書く クライアント起動 クックブックを反映
  • 30.
    30! サーバー無し構成(Chef Solo) 各サーバーへクックブ ックを配置 クックブックを書く Chef-Solo起動、反映 ※Chef Soloは廃止予定
  • 31.
    31! サーバー無し構成(chef-client local) 各サーバーへクックブ ックを配置 クックブックを書く Chef-Client Local 起動、 反映 Chef Zero Chef Zero Chef Zero Chef Zero起動 Chef12~
  • 32.
    32! ローカルモードとChef-Zero •Chef Clientと通信するAPIを提供 • データを保存しないChef Server • 元々はテスト用に開発された • 現在はローカルモードに採用 • http://qiita.com/sawanoboly/items/ 4f363909615d8a76e9e5 Chef12~
  • 33.
    33! 基本的な流れ •対象ノードへのChefのインストール • クックブック(レシピ)を書く • クックブック(レシピ)を送る • Chefクライアント、Chef Soloの実行
  • 34.
    34! インストール •現在のChefは必要なRubyなどを同梱 • /opt/chef 配下にインストールされる • ChefにさらにGemを追加する際は注意
  • 35.
    35! クックブック packageapache2 do! action :install! end! ! service apache2 do! action :start! end apache2のインストール apache2のサービス化
  • 36.
    36! apt-get /シェルスクリプトとの違い • 単純なパッケージ導入以上の処理が可能 • ohaiを使ったノード情報の取得 • 設定ファイルの動的な生成 • 繰り返し実行可能 → 冪等性・収束
  • 37.
    37! Chef /Chef Soloの実行 • Chef Clientのcronからの実行 • デーモン化も一応可能 • why run (dry run)も可能 • knife-solo ※ローカルモードに対応予定 • なるべく頻繁に実行するのが望ましい (15分~30分) • 実行結果をハンドラで通知
  • 38.
  • 39.
    39! Chefを使っている際の悩み •Chefのバージョン (前出) • Chefの内部動作 • クックブックの書き方、品質 • コミュニティクックブック (Supermarket)
  • 40.
    40! Chefの内部動作 •クックブックが実行される順序 • ファイルなどの変更タイミング • 上から順番に実行されない • リソースコレクションと収束
  • 41.
  • 42.
  • 43.
  • 44.
    44! クックブックのCIは欠かせない •Infrastructure as Code • テストのないコードはレガシーコード • クックブックが常に健全である事を担保 • 単体テストを行う • 単体テストを継続的に実行する (CI)
  • 45.
    45! クックブックのテストに使うツール •Berkshelf / librarian-chef クックブックの収集 • foodcritic クックブックの規約チェック • Test-kitchen クックブックの単体テスト • Severspec サーバーの状態の単体テスト
  • 46.
    46! テストスイートの構成 クックブッククックブック Test Kitchen CI環境 Jenkins / Travis CI / Circle CI 仮想マシン Vagrant Docker VirtualBox LXC VMWare Amazon EC2 Azure FoodCritic Serverspec Berkshelf / librarian-chef Chef Solo Chef Client Chef Zero
  • 47.
  • 48.
    48! コミュニティクックブック (supermarket) • 人類の叡智を結集 • 多様なプラットフォームに対応 • 利用者が少ない • 作成者も少ない
  • 49.
  • 50.
    50! 皆様に提案 •クックブックを書こう • クックブックをテストしよう • コミュニティに登録しよう • オープンソースのフローでコード改善
  • 51.
    51! しつこいようですが、 好評発売中 • 技術評論社 • 豪華執筆陣 • 増刷決定! • 基礎から応用まで • 一冊でひとまず安心
  • 52.
  • 53.
    53! Engine Yardが主要なクックブックを提供 カスタムレシピ コアレシピ
  • 54.
  • 55.