Yusuke Ando
株式会社 Engine Yard
2014/06/13!
DevOpsを実現する為の
Chef活用テクニック
2!
• Twitter: yando
• GitHub: yandod
• PHPer
• CandyCane
• 「懇親会 ピザ 計算」
• Oculus Rift / Unity
自己紹介
3!
• 技術評論社
• 豪華執筆陣
• 増刷決定!
• 基礎から応用まで
• 一冊でひとまず安心
Chef実践入門 好評発売中
4!
• 2006年創業
• AWS/Azure
• Terremark
• Chefを活用
• 自動構築
• 運用サービス
Engine Yard
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!
• 2009年6月 Velocity2009での講演
• 開発者と運用者の関係改善
• 変化に素早く対応する
DevOps
14!
15!
16!
組織の文化
• 尊重
• 信頼
• 失敗に対する健全な態度
• 相手を非難しない
ツール
• 自動化されたインフラ
• バージョン管理システム
の共有
• ワンステップによるビル
ドとデプロイ
• フィーチャーフラグ
• メトリクスの共有
• IRCとインスタントメッ
センジャーのbot
DevOps
17!
• インフラの構築をコードで自動化
• サーバーの台数などに左右されない
• 手順書の手動実行より正確・高速
• Chefは実現する手段の1つ
Infrastructure as Code
18!
メディアでも話題に
19!
これまでとこれから
20!
Chef(等)を使ってビジネスの速度の変化に
対応していきたいという機運
Chefの基本
22!
• 構成管理ツール
• v11.12
• Ruby製
• 冪等性が特長
• 高い人気
Chef
23!
• Engine Yard
• Facebook
• Prezi
• サイバーエージェント
• グリー
採用事例
24!
基本的な構成
クックブックを書く
Serverにアップロード
クライアント起動
クックブックを反映
25!
サーバー無し構成(Chef Solo)
クックブックを書く
各サーバーへクックブ
ックを配置
Chef-Solo起動、反映
26!
• 対象ノードへのChefのインストール
• クックブック(レシピ)を書く
• クックブック(レシピ)を送る
• Chefクライアント、Chef Soloの実行
基本的な流れ
27!
• gem install chef は古い手法
• 現在のChefは必要なRubyなどを同梱
• /opt/chef 配下にインストールされる
• ChefにさらにGemを追加する際は注意
インストール
28!
クックブック
package "apache2" do!
action :install!
end!
!
service "apache2" do!
action :start!
end	
apache2のインストール
apache2のサービス化
29!
• 単純なパッケージ導入以上の処理が可能
• ohaiを使ったノード情報の取得
• 設定ファイルの動的な生成
• 繰り返し実行可能 → 冪等性・収束
apt-get / シェルスクリプトとの違い
30!
• Chef Clientのcronからの実行
• デーモン化も一応可能
• why run (dry run)も可能
• knife-solo
• なるべく頻繁に実行するのが望ましい
Chef / Chef Soloの実行
Chefをさらに活用するポイント
32!
• Chefのバージョン
• Chefの内部動作
• クックブックの書き方、品質
• コミュニティクックブック
Chefを使っている際の悩み
33!
Chef0.8, Chef10, Chef11 の違い
34!
• クックブックが実行される順序
• ファイルなどの変更タイミング
• 上から順番に実行されない
• リソースコレクションと収束
Chefの内部動作
35!
Chefの内部動作
36!
詳しくはブログにて
37!
クックブックの書き方にはみんな困る
38!
• Infrastructure as Code
• テストのないコードはレガシーコード
• クックブックが常に健全である事を担保
• 単体テストを行う
• 単体テストを継続的に実行する (CI)
クックブックのCIは欠かせない
39!
• Berkshelf / librarian-chef
クックブックの収集
• foodcritic
クックブックの規約チェック
• Test-kitchen
クックブックの単体テスト
• Severspec
サーバーの状態の単体テスト
クックブックのテストに使うツール
40!
テストスイートの構成
CI環境 Jenkins / Travis CI / Circle CI
クックブック クックブック
Test Kitchen
仮想マシン
Vagrant
VirtualBox
LXC
VMWare
Amazon EC2
FoodCritic Serverspec
Berkshelf / librarian-chef
Chef Solo
Chef Client
Chef Zero
41!
Qiitaに詳しく乗っています
42!
• 人類の叡智を結集
• 多様なプラットフォームに対応
• 利用者が少ない
• 作成者も少ない
コミュニティクックブック
43!
44!
• クックブックを書こう
• クックブックをテストしよう
• コミュニティに登録しよう
• オープンソースのフローでコード改善
皆様に提案
45!
又は、Engine Yardにお任せください
46!
導入パートナー募集中
詳細はブースにて
Thank you!

Dev opschef