Yu Kitazume
株式会社 Engine Yard
2014/06/13!
DevOpsを実現する為の
Chef活用テクニック
2!
• Twitter: ukitazume
• GitHub: ukitazume
• Rubyist
• ポータルサイト、ソーシャルゲーム
•  でサポートエンジニア
自己紹介
3!
について!
Dublin!
Tokyo!San Francisco!
Portland!
HQ!
Office!
Personnel!
戦略的投資/パートナー!
•  Amazon!
•  Oracle !
•  Verizon!
•  M...
4!
5!
• 技術評論社
• 豪華執筆陣
• 増刷決定!
• 基礎から応用まで
• 一冊でひとまず安心
Chef実践入門 好評発売中
6!
Engine Yardを選択されたお客様!
Agenda!
1. DevOpsとChef
2. Chefの基本
3. Chefをさらに活用するポイント
DevOpsとChef
9!
「DevOps」知っていますか?
10!
• 2009年 Velocity2009での講演
• 開発者(Dev)と運用者(Ops)が協力
• 変化に素早く柔軟対応する
DevOps
11!
12!
http://ey.io/devopscorp
13!
14!
組織の文化	
–  お互いを尊重	
–  お互いを信頼	
–  失敗に対する健全な態度	
–  相手を非難しない	
ツール	
–  自動化されたインフラ	
–  バージョン管理システムの共有	
–  ワンステップによるビルドとデプロイ	...
15!
• コードでインフラの構築を自動化
• サーバーの台数などに左右されない
• 手順書の手動実行より正確・高速
Infrastructure as Code
16!
これまでとこれから
17!
メディアでも話題に
18!
開発者(Dev)と運用者(Ops)が協力し
変化に素早く柔軟対応する
その鍵の一つ
Chefの基本
20!
• 構成管理ツール
• Ruby
• 状態を記述
• 冪等性
• 高い人気
Chef
21!
採用事例
22!
基本的な構成
クックブックを書く
アップロード クライアント起動&反映
変更の問い合わせ
Chef Server
Local
Chef Client
Chef Client
Chef Client
23!
サーバー無し構成(Chef Solo)
クックブックを書く
各サーバーへクックブック
を配置
Chef-Solo起動、反映
Local
Chef Client
Chef Client
Chef Client
24!
1.  対象ホストへのChefのインストール
2.  クックブック(レシピ)を書く
3.  クックブック(レシピ)を送る
4.  Chefクライアント or Chef Soloの実行
基本的な流れ
25!
• gem install chef は古い手法
• 現在のChefは必要なRubyなどを同梱
• /opt/chef 配下にインストールされる
• ChefにさらにGemを追加する際は注意
インストール
26!
クックブック
package "apache2" do!
action :install!
end!
!
service "apache2" do!
action :start!
end	
apache2のインストール
apache2の...
27!
• 単純なパッケージ導入以上の処理が可能
• ohaiを使ったノード情報の取得
• 設定ファイルの動的な生成
• 繰り返し実行可能 → 冪等性・収束
apt-get / シェルスクリプトとの違い
28!
状態の記述 冪等性 収束	
Server
/var/lib/foo/
状態の記述	
 収束
29!
• Chef Clientのcronからの実行
• デーモン化も一応可能
• why run (dry run)も可能
• knife-solo
• なるべく頻繁に実行するのが望ましい
Chef / Chef Soloの実行
Chefをさらに活用するポイント
31!
• Chefのバージョン
• Chefの内部動作
• クックブックの書き方、品質
• コミュニティクックブック
Chefを使っている際の悩み
32!
Chef0.8, Chef10, Chef11 の違い
33!
• クックブックが実行される順序
• ファイルなどの変更タイミング
• 上から順番に実行されない
• リソースコレクションと収束
Chefの内部動作
34!
Chefの内部動作
35!
Resource Collection
Resource CollectionとResource間の依存	
Server
/var/lib/foo/
Resource	
収束	
•  directory “/var/lib/foo”!
...
36!
Notificationの例
37!
Subscribeの例
38!
Subscribeの例
39!
詳しくはブログにて
40!
• Infrastructure as Code
• テストのないコードはレガシーコード
• クックブックが常に健全である事を担保
• 単体テストを行う
• 単体テストを継続的に実行する (CI)
クックブックのCIは欠かせない
41!
• Berkshelf / librarian-chef
クックブックの収集
• foodcritic
クックブックの規約チェック
• Test-kitchen
クックブックの単体テスト
• Severspec
サーバーの状態の単体テス...
42!
テストスイートの構成
CI環境 Jenkins / Travis CI / Circle CI
クックブック クックブック
Test Kitchen
仮想マシン
Vagrant
VirtualBox
LXC
VMWare
Amazon ...
43!
Qiitaに詳しく乗っています
44!
• 人類の叡智を結集
• 多様なプラットフォームに対応
• 利用者が少ない
• 作成者も少ない
コミュニティクックブック
45!
46!
cloud application management platform
Upcoming SlideShare
Loading in …5
×

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

819 views

Published on

DevOpsとChefについての概要

Published in: Engineering
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
819
On SlideShare
0
From Embeds
0
Number of Embeds
42
Actions
Shares
0
Downloads
14
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. Yu Kitazume 株式会社 Engine Yard 2014/06/13! DevOpsを実現する為の Chef活用テクニック
  2. 2. 2! • Twitter: ukitazume • GitHub: ukitazume • Rubyist • ポータルサイト、ソーシャルゲーム •  でサポートエンジニア 自己紹介
  3. 3. 3! について! Dublin! Tokyo!San Francisco! Portland! HQ! Office! Personnel! 戦略的投資/パートナー! •  Amazon! •  Oracle ! •  Verizon! •  Microsoft! PaaSリーダー! •  2006年設立! •  従業員120人以上! •  世界で展開! •  数千のお客様!
  4. 4. 4!
  5. 5. 5! • 技術評論社 • 豪華執筆陣 • 増刷決定! • 基礎から応用まで • 一冊でひとまず安心 Chef実践入門 好評発売中
  6. 6. 6! Engine Yardを選択されたお客様!
  7. 7. Agenda! 1. DevOpsとChef 2. Chefの基本 3. Chefをさらに活用するポイント
  8. 8. DevOpsとChef
  9. 9. 9! 「DevOps」知っていますか?
  10. 10. 10! • 2009年 Velocity2009での講演 • 開発者(Dev)と運用者(Ops)が協力 • 変化に素早く柔軟対応する DevOps
  11. 11. 11!
  12. 12. 12! http://ey.io/devopscorp
  13. 13. 13!
  14. 14. 14! 組織の文化 –  お互いを尊重 –  お互いを信頼 –  失敗に対する健全な態度 –  相手を非難しない ツール –  自動化されたインフラ –  バージョン管理システムの共有 –  ワンステップによるビルドとデプロイ –  フィーチャーフラグ –  メトリクスの共有 –  IRCとインスタントメッセンジャーのbot 10+ Deploy Per Day: Dev and Ops Cooperation
  15. 15. 15! • コードでインフラの構築を自動化 • サーバーの台数などに左右されない • 手順書の手動実行より正確・高速 Infrastructure as Code
  16. 16. 16! これまでとこれから
  17. 17. 17! メディアでも話題に
  18. 18. 18! 開発者(Dev)と運用者(Ops)が協力し 変化に素早く柔軟対応する その鍵の一つ
  19. 19. Chefの基本
  20. 20. 20! • 構成管理ツール • Ruby • 状態を記述 • 冪等性 • 高い人気 Chef
  21. 21. 21! 採用事例
  22. 22. 22! 基本的な構成 クックブックを書く アップロード クライアント起動&反映 変更の問い合わせ Chef Server Local Chef Client Chef Client Chef Client
  23. 23. 23! サーバー無し構成(Chef Solo) クックブックを書く 各サーバーへクックブック を配置 Chef-Solo起動、反映 Local Chef Client Chef Client Chef Client
  24. 24. 24! 1.  対象ホストへのChefのインストール 2.  クックブック(レシピ)を書く 3.  クックブック(レシピ)を送る 4.  Chefクライアント or Chef Soloの実行 基本的な流れ
  25. 25. 25! • gem install chef は古い手法 • 現在のChefは必要なRubyなどを同梱 • /opt/chef 配下にインストールされる • ChefにさらにGemを追加する際は注意 インストール
  26. 26. 26! クックブック package "apache2" do! action :install! end! ! service "apache2" do! action :start! end apache2のインストール apache2のサービス化
  27. 27. 27! • 単純なパッケージ導入以上の処理が可能 • ohaiを使ったノード情報の取得 • 設定ファイルの動的な生成 • 繰り返し実行可能 → 冪等性・収束 apt-get / シェルスクリプトとの違い
  28. 28. 28! 状態の記述 冪等性 収束 Server /var/lib/foo/ 状態の記述 収束
  29. 29. 29! • Chef Clientのcronからの実行 • デーモン化も一応可能 • why run (dry run)も可能 • knife-solo • なるべく頻繁に実行するのが望ましい Chef / Chef Soloの実行
  30. 30. Chefをさらに活用するポイント
  31. 31. 31! • Chefのバージョン • Chefの内部動作 • クックブックの書き方、品質 • コミュニティクックブック Chefを使っている際の悩み
  32. 32. 32! Chef0.8, Chef10, Chef11 の違い
  33. 33. 33! • クックブックが実行される順序 • ファイルなどの変更タイミング • 上から順番に実行されない • リソースコレクションと収束 Chefの内部動作
  34. 34. 34! Chefの内部動作
  35. 35. 35! Resource Collection Resource CollectionとResource間の依存 Server /var/lib/foo/ Resource 収束 •  directory “/var/lib/foo”! •  package “apache2”! •  ….! •  ….! •  ….! Notification! Subscribe
  36. 36. 36! Notificationの例
  37. 37. 37! Subscribeの例
  38. 38. 38! Subscribeの例
  39. 39. 39! 詳しくはブログにて
  40. 40. 40! • Infrastructure as Code • テストのないコードはレガシーコード • クックブックが常に健全である事を担保 • 単体テストを行う • 単体テストを継続的に実行する (CI) クックブックのCIは欠かせない
  41. 41. 41! • Berkshelf / librarian-chef クックブックの収集 • foodcritic クックブックの規約チェック • Test-kitchen クックブックの単体テスト • Severspec サーバーの状態の単体テスト クックブックのテストに使うツール
  42. 42. 42! テストスイートの構成 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
  43. 43. 43! Qiitaに詳しく乗っています
  44. 44. 44! • 人類の叡智を結集 • 多様なプラットフォームに対応 • 利用者が少ない • 作成者も少ない コミュニティクックブック
  45. 45. 45!
  46. 46. 46!
  47. 47. cloud application management platform

×