第一回
Chef Casual Talks Kansai
2013.07.24
主催: HiganWorks LLC
Wednesday, July 24, 13
• http://chef-meetup-kansai.doorkeeper.jp/
• Chefとかでサーバインフラ自動化全般に関わっている人
で集まって情報交換しましょうというコミュニティです
• 原則、参加者全員なんでもいいから発表
• ...
HiganWorks, OpsRockについて
3
• http://opsrock.in 共同開発・運営
• AWS OpsWorksとChefを主に取り扱
うソリューションを提供
• アプリケーションのためのプラットフォーム構
築/運用自動...
配布資料(参加特典)
TDI with chef(Ja)第一章
4
注:Casualさはカケラもございません
Wednesday, July 24, 13
FYI: 先日ChefClientの
11.6.0がリリース
5
Wednesday, July 24, 13
リリースノートのコントリビュータに
ちゃっかり混ざってみました
※ @urasoko 氏が言及しなかったら多分気づかず
6
Wednesday, July 24, 13
インフラとしてのコード
- Infrastructure as code -
Chef Casual Talks Kansai Vol.1
オープニング
Wednesday, July 24, 13
Chef によるテスト駆動型
インフラストラクチャ開発 より
• ボタンひとつでサーバインスタンスの調達
• 生産性の高いウェブ・アプリケーションフレ
ームワークの隆盛
• インフラの抽象化、設計、実装、デプロイと
いうニーズ
• アプリ開発の...
『コードとしてのインフラ』という
アプローチがもたらす恩恵
• 自動化(Automation)
• 敏捷性(Agility)
• 拡張性(Scalability)
• 信頼性(Reassurance)
• ディザスタ・リカバリ(Disaster...
でも実際
どういうことなん?
Wednesday, July 24, 13
先日構築したシステムから、
コードとしてのインフラって
こういう事なのかもしれん という
解釈をちょっとお話します
Wednesday, July 24, 13
アプリデプロイを
たのまれました
Wednesday, July 24, 13
今からインフラを
構築します...
まず何しますか?
Wednesday, July 24, 13
初手、
git init
※完成後のいま、93commits
Wednesday, July 24, 13
bundle init
vim Gemfile
bundle install
Wednesday, July 24, 13
librarian-chef init
vim Cheffile
librarian-chef install
Wednesday, July 24, 13
この頃のリポジトリ
├── Cheffile
├── Cheffile.lock
├── Gemfile
├── README.md
├── Rakefile
├── cookbooks
└── site-cookbooks
17
※git checkou...
このころのCheffile抜粋
site 'http://community.opscode.com/api/
v1'
cookbook 'smartmachine_functions'
cookbook 'monit_bin'
18
Wednes...
余談、Readme as system
こうやってサーバ構築する強者もいます。
$ sh README.md
中身は適当に想像して下さい。
19
Wednesday, July 24, 13
そして
knife cookbook create (site-cookbooks)
knife role create
knife data bag create
※適当に繰り返し
確認用に vim solo.rb & chef-shell ...
Q.サーバ無いの?
A.まだありません
Wednesday, July 24, 13
この頃のシステム(?)構成
22
Hosted
Chef
WorkStation(MacBook)
Wednesday, July 24, 13
Hosted Chefつこうてんの??
• Opscode提供のSaaS
• Organizationあたり『5ノード』まで無料
• 将来OSS ChefSeverに移行するの前提で開発サ
ーバ用に使い倒す
• 用がすんだら消す
• このパスな...
そろそろ
サーバインスタンス
つくるかー
Wednesday, July 24, 13
knife (Iaas) create
or
knife bootstrap
Wednesday, July 24, 13
開発サーバで
設定を検討しながら
Cookbookへ
Wednesday, July 24, 13
この頃のリポジトリ2 1/2
├── Cheffile
├── Cheffile.lock
├── Gemfile
├── Gemfile.lock
├── README.md
├── certs
├── cookbooks
│ ├── chefclien...
この頃のリポジトリ2 2/2
├── data_bags
│ ├── README.md
│ └── postgresql
├── site-cookbooks
│ ├── ipf_settings
│ ├── postfix_envs
│ ├─...
この頃のシステム構成2
29
Hosted
Chef
WorkStation(MacBook)
開発サーバ
(Joyent)
ChefClient
Wednesday, July 24, 13
この頃のリポジトリ2 1/3
├── Cheffile
├── Cheffile.lock
├── Gemfile
├── Gemfile.lock
├── README.md
├── certs
├── cookbooks
│ ├── chefclien...
この頃のリポジトリ2 2/3
├── data_bags
│ ├── README.md
│ ├── certs
│ ├── deploy
│ ├── domains
│ ├── postfix_env
│ └── postgresql
├── ...
この頃のリポジトリ2 3/3
│ ├── redis-client.json
│ └── redis-server.json
├── site-cookbooks
│ ├── ipf_settings
│ ├── some_app_deploy...
そろそろ
OSS Chefサーバに移行
Wednesday, July 24, 13
knife server backup
knife role(他) create
from_file
Wednesday, July 24, 13
リポジトリに
serverbackups/追加
env,roles,data_bags,nodes
Wednesday, July 24, 13
この頃のシステム構成3
36
OSS
Chef
WorkStation(MacBook)
開発サーバ
(Joyent)
ChefClient
Wednesday, July 24, 13
このころのCheffile抜粋 2
cookbook 'partial_search'
cookbook 'smartmachine_functions'
cookbook 'monit_bin'
# Github
## modcloth-cook...
これで大体完了、
あとは適当に展開
Wednesday, July 24, 13
この頃のシステム構成4
39
OSS
Chef
WorkStation(MacBook)
開発サーバ
(Joyent)Stagingサーバ群
(Joyent)
Stagingサーバ群
(Joyent)
Wednesday, July 24, 13
更新アリ
Wednesday, July 24, 13
1. env[production]でhogebookの現行バージ
ョンを pinする ※指定無しならlatest
41
Staging
CookBook更新と
適用手法の例
hogebook v1.0
Production
hogebook ...
1. env[production]でhogebookの現行バージ
ョンを pinする ※指定無しならlatest
2. 新しいバージョンをChefServerにアップ
42
Staging
CookBook更新と
適用手法の例
hogeboo...
1. env[production]でhogebookの現行バージ
ョンを pinする ※指定無しならlatest
2. 新しいバージョンをChefServerにアップ
3. OKならpinをはずす
43
Staging
CookBook更新と...
• システム構築にあたって、アプリに必要なれ
いやをゆっくり考えつつコード(再現可能)に落
としこむ
• 決めた役割を与えるため、適当に調達したサ
ーバインスタンス上で収束用クライアント
(Chefなど)を走らせる
• 一発構築はあまり必要ない...
コードとしてのインフラって
だいたいこんな感じだと
思いました。
Wednesday, July 24, 13
Upcoming SlideShare
Loading in...5
×

Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code

2,031

Published on

http://chef-meetup-kansai.doorkeeper.jp/events/4978

第1回 Chef Casual Talks Kansai のオープニングに使ったスライドです

Published in: Technology, Self Improvement
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,031
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code"

  1. 1. 第一回 Chef Casual Talks Kansai 2013.07.24 主催: HiganWorks LLC Wednesday, July 24, 13
  2. 2. • http://chef-meetup-kansai.doorkeeper.jp/ • Chefとかでサーバインフラ自動化全般に関わっている人 で集まって情報交換しましょうというコミュニティです • 原則、参加者全員なんでもいいから発表 • ハッシュタグ(仮): #opschef_kansai , #opschef_ja 2 Wednesday, July 24, 13
  3. 3. HiganWorks, OpsRockについて 3 • http://opsrock.in 共同開発・運営 • AWS OpsWorksとChefを主に取り扱 うソリューションを提供 • アプリケーションのためのプラットフォーム構 築/運用自動化をテーマに活動 Wednesday, July 24, 13
  4. 4. 配布資料(参加特典) TDI with chef(Ja)第一章 4 注:Casualさはカケラもございません Wednesday, July 24, 13
  5. 5. FYI: 先日ChefClientの 11.6.0がリリース 5 Wednesday, July 24, 13
  6. 6. リリースノートのコントリビュータに ちゃっかり混ざってみました ※ @urasoko 氏が言及しなかったら多分気づかず 6 Wednesday, July 24, 13
  7. 7. インフラとしてのコード - Infrastructure as code - Chef Casual Talks Kansai Vol.1 オープニング Wednesday, July 24, 13
  8. 8. Chef によるテスト駆動型 インフラストラクチャ開発 より • ボタンひとつでサーバインスタンスの調達 • 生産性の高いウェブ・アプリケーションフレ ームワークの隆盛 • インフラの抽象化、設計、実装、デプロイと いうニーズ • アプリ開発の優れた手法を取り入れ 8 Wednesday, July 24, 13
  9. 9. 『コードとしてのインフラ』という アプローチがもたらす恩恵 • 自動化(Automation) • 敏捷性(Agility) • 拡張性(Scalability) • 信頼性(Reassurance) • ディザスタ・リカバリ(Disaster recovery) • それとOpscodeが提唱する、基礎的(primitive)コ ンポーネントを再利用可能にする10の原則 ※詳しくは配布資料で。( 収束 ・ 冪等性 など) 9 Wednesday, July 24, 13
  10. 10. でも実際 どういうことなん? Wednesday, July 24, 13
  11. 11. 先日構築したシステムから、 コードとしてのインフラって こういう事なのかもしれん という 解釈をちょっとお話します Wednesday, July 24, 13
  12. 12. アプリデプロイを たのまれました Wednesday, July 24, 13
  13. 13. 今からインフラを 構築します... まず何しますか? Wednesday, July 24, 13
  14. 14. 初手、 git init ※完成後のいま、93commits Wednesday, July 24, 13
  15. 15. bundle init vim Gemfile bundle install Wednesday, July 24, 13
  16. 16. librarian-chef init vim Cheffile librarian-chef install Wednesday, July 24, 13
  17. 17. この頃のリポジトリ ├── Cheffile ├── Cheffile.lock ├── Gemfile ├── README.md ├── Rakefile ├── cookbooks └── site-cookbooks 17 ※git checkoutで調査 Wednesday, July 24, 13
  18. 18. このころのCheffile抜粋 site 'http://community.opscode.com/api/ v1' cookbook 'smartmachine_functions' cookbook 'monit_bin' 18 Wednesday, July 24, 13
  19. 19. 余談、Readme as system こうやってサーバ構築する強者もいます。 $ sh README.md 中身は適当に想像して下さい。 19 Wednesday, July 24, 13
  20. 20. そして knife cookbook create (site-cookbooks) knife role create knife data bag create ※適当に繰り返し 確認用に vim solo.rb & chef-shell -s -c solo.rb Wednesday, July 24, 13
  21. 21. Q.サーバ無いの? A.まだありません Wednesday, July 24, 13
  22. 22. この頃のシステム(?)構成 22 Hosted Chef WorkStation(MacBook) Wednesday, July 24, 13
  23. 23. Hosted Chefつこうてんの?? • Opscode提供のSaaS • Organizationあたり『5ノード』まで無料 • 将来OSS ChefSeverに移行するの前提で開発サ ーバ用に使い倒す • 用がすんだら消す • このパスなし ✕ chef-solo => chef-server • 捕捉: 大概ChefSoloでいいと思います。私はChefSolo に慣れてないのでClient/Serverにしてるだけ。 23 Wednesday, July 24, 13
  24. 24. そろそろ サーバインスタンス つくるかー Wednesday, July 24, 13
  25. 25. knife (Iaas) create or knife bootstrap Wednesday, July 24, 13
  26. 26. 開発サーバで 設定を検討しながら Cookbookへ Wednesday, July 24, 13
  27. 27. この頃のリポジトリ2 1/2 ├── Cheffile ├── Cheffile.lock ├── Gemfile ├── Gemfile.lock ├── README.md ├── certs ├── cookbooks │ ├── chefclient_simple_cron │ ├── ipf │ ├── ipf_configure │ ├── logadm │ ├── monit_bin │ ├── partial_search │ ├── postfix │ ├── rbac │ ├── smartmachine_functions │ └── smf 27 ※git checkoutで調査 Wednesday, July 24, 13
  28. 28. この頃のリポジトリ2 2/2 ├── data_bags │ ├── README.md │ └── postgresql ├── site-cookbooks │ ├── ipf_settings │ ├── postfix_envs │ ├── postgresql-for-some_app │ └── redis-for-some_app └── solo.rb 28 ※git checkoutで調査 Wednesday, July 24, 13
  29. 29. この頃のシステム構成2 29 Hosted Chef WorkStation(MacBook) 開発サーバ (Joyent) ChefClient Wednesday, July 24, 13
  30. 30. この頃のリポジトリ2 1/3 ├── Cheffile ├── Cheffile.lock ├── Gemfile ├── Gemfile.lock ├── README.md ├── certs ├── cookbooks │ ├── chefclient_simple_cron │ ├── ipf │ ├── ipf_configure │ ├── logadm │ ├── monit_bin │ ├── partial_search │ ├── postfix │ ├── rbac │ ├── smartmachine_functions │ └── smf 30 ※git checkoutで調査 Wednesday, July 24, 13
  31. 31. この頃のリポジトリ2 2/3 ├── data_bags │ ├── README.md │ ├── certs │ ├── deploy │ ├── domains │ ├── postfix_env │ └── postgresql ├── roles │ ├── app_server_common.json │ ├── base_smartos.json │ ├── chef-client_cron.json │ ├── some_app.json │ ├── monit_smartos.json │ ├── patchjob_update_certs.json │ ├── postfix_server.json │ ├── postgres-client.json │ ├── postgres-server.json 31 ※git checkoutで調査 Wednesday, July 24, 13
  32. 32. この頃のリポジトリ2 3/3 │ ├── redis-client.json │ └── redis-server.json ├── site-cookbooks │ ├── ipf_settings │ ├── some_app_deploy │ ├── nginx_upstream │ ├── postfix_envs │ ├── postgresql-for-some_app │ └── redis-for-some_app └── solo.rb 32 ※git checkoutで調査 Wednesday, July 24, 13
  33. 33. そろそろ OSS Chefサーバに移行 Wednesday, July 24, 13
  34. 34. knife server backup knife role(他) create from_file Wednesday, July 24, 13
  35. 35. リポジトリに serverbackups/追加 env,roles,data_bags,nodes Wednesday, July 24, 13
  36. 36. この頃のシステム構成3 36 OSS Chef WorkStation(MacBook) 開発サーバ (Joyent) ChefClient Wednesday, July 24, 13
  37. 37. このころのCheffile抜粋 2 cookbook 'partial_search' cookbook 'smartmachine_functions' cookbook 'monit_bin' # Github ## modcloth-cookbooks cookbook 'ipf', :git => 'https://github.com/modcloth-cookbooks/ipf.git' cookbook 'logadm', :git => 'https://github.com/modcloth-cookbooks/logadm.git' ## higanworks-cookbooks cookbook 'ipf_configure' cookbook 'chefclient_simple_cron', :git => 'https://github.com/higanworks-cookbooks/ chefclient_simple_cron.git' ## modified community cookbooks. cookbook 'postfix', :git => 'https://github.com/ZCloud-Firstserver/postfix.git', :ref => 'respond_to_smartos' 37 コミュニティCookbooks ※自作もの多い 他所様の汎用的なCookbook ※ そこそこプルリクしてる 自作Cookbook ※ site-cookbookからpublicに昇格 改造したコミュニティCookbooks ※結局後でプルリク Wednesday, July 24, 13
  38. 38. これで大体完了、 あとは適当に展開 Wednesday, July 24, 13
  39. 39. この頃のシステム構成4 39 OSS Chef WorkStation(MacBook) 開発サーバ (Joyent)Stagingサーバ群 (Joyent) Stagingサーバ群 (Joyent) Wednesday, July 24, 13
  40. 40. 更新アリ Wednesday, July 24, 13
  41. 41. 1. env[production]でhogebookの現行バージ ョンを pinする ※指定無しならlatest 41 Staging CookBook更新と 適用手法の例 hogebook v1.0 Production hogebook v1.0 v1.0にpin Wednesday, July 24, 13
  42. 42. 1. env[production]でhogebookの現行バージ ョンを pinする ※指定無しならlatest 2. 新しいバージョンをChefServerにアップ 42 Staging CookBook更新と 適用手法の例 hogebook v1.1 Production hogebook v1.0 次回コンバージョンで v1.1が適用される こちらpinされたバージョンのまま Wednesday, July 24, 13
  43. 43. 1. env[production]でhogebookの現行バージ ョンを pinする ※指定無しならlatest 2. 新しいバージョンをChefServerにアップ 3. OKならpinをはずす 43 Staging CookBook更新と 適用手法の例 hogebook v1.1 Production hogebook v1.1 新バージョンが適用される Wednesday, July 24, 13
  44. 44. • システム構築にあたって、アプリに必要なれ いやをゆっくり考えつつコード(再現可能)に落 としこむ • 決めた役割を与えるため、適当に調達したサ ーバインスタンス上で収束用クライアント (Chefなど)を走らせる • 一発構築はあまり必要ない • ノードを支配下においてねっとりと操った り簡単に棄てる 44 Wednesday, July 24, 13
  45. 45. コードとしてのインフラって だいたいこんな感じだと 思いました。 Wednesday, July 24, 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×