[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
SlideShare a Scribd company logo
第一回
Chef Casual Talks Kansai
2013.07.24
主催: HiganWorks LLC
Wednesday, July 24, 13
• http://chef-meetup-kansai.doorkeeper.jp/
• Chefとかでサーバインフラ自動化全般に関わっている人
で集まって情報交換しましょうというコミュニティです
• 原則、参加者全員なんでもいいから発表
• ハッシュタグ(仮): #opschef_kansai , #opschef_ja
2
Wednesday, July 24, 13
HiganWorks, OpsRockについて
3
• http://opsrock.in 共同開発・運営
• AWS OpsWorksとChefを主に取り扱
うソリューションを提供
• アプリケーションのためのプラットフォーム構
築/運用自動化をテーマに活動
Wednesday, July 24, 13
配布資料(参加特典)
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 によるテスト駆動型
インフラストラクチャ開発 より
• ボタンひとつでサーバインスタンスの調達
• 生産性の高いウェブ・アプリケーションフレ
ームワークの隆盛
• インフラの抽象化、設計、実装、デプロイと
いうニーズ
• アプリ開発の優れた手法を取り入れ
8
Wednesday, July 24, 13
『コードとしてのインフラ』という
アプローチがもたらす恩恵
• 自動化(Automation)
• 敏捷性(Agility)
• 拡張性(Scalability)
• 信頼性(Reassurance)
• ディザスタ・リカバリ(Disaster recovery)
• それとOpscodeが提唱する、基礎的(primitive)コ
ンポーネントを再利用可能にする10の原則
※詳しくは配布資料で。( 収束 ・ 冪等性 など)
9
Wednesday, July 24, 13
でも実際
どういうことなん?
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 checkoutで調査
Wednesday, July 24, 13
このころのCheffile抜粋
site 'http://community.opscode.com/api/
v1'
cookbook 'smartmachine_functions'
cookbook 'monit_bin'
18
Wednesday, July 24, 13
余談、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 -s -c
solo.rb
Wednesday, July 24, 13
Q.サーバ無いの?
A.まだありません
Wednesday, July 24, 13
この頃のシステム(?)構成
22
Hosted
Chef
WorkStation(MacBook)
Wednesday, July 24, 13
Hosted Chefつこうてんの??
• Opscode提供のSaaS
• Organizationあたり『5ノード』まで無料
• 将来OSS ChefSeverに移行するの前提で開発サ
ーバ用に使い倒す
• 用がすんだら消す
• このパスなし ✕ chef-solo => chef-server
• 捕捉: 大概ChefSoloでいいと思います。私はChefSolo
に慣れてないのでClient/Serverにしてるだけ。
23
Wednesday, July 24, 13
そろそろ
サーバインスタンス
つくるかー
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
│ ├── chefclient_simple_cron
│ ├── ipf
│ ├── ipf_configure
│ ├── logadm
│ ├── monit_bin
│ ├── partial_search
│ ├── postfix
│ ├── rbac
│ ├── smartmachine_functions
│ └── smf
27
※git checkoutで調査
Wednesday, July 24, 13
この頃のリポジトリ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
この頃のシステム構成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
│ ├── chefclient_simple_cron
│ ├── ipf
│ ├── ipf_configure
│ ├── logadm
│ ├── monit_bin
│ ├── partial_search
│ ├── postfix
│ ├── rbac
│ ├── smartmachine_functions
│ └── smf
30
※git checkoutで調査
Wednesday, July 24, 13
この頃のリポジトリ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
この頃のリポジトリ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
そろそろ
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-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
これで大体完了、
あとは適当に展開
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 v1.0
v1.0にpin
Wednesday, July 24, 13
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
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
• システム構築にあたって、アプリに必要なれ
いやをゆっくり考えつつコード(再現可能)に落
としこむ
• 決めた役割を与えるため、適当に調達したサ
ーバインスタンス上で収束用クライアント
(Chefなど)を走らせる
• 一発構築はあまり必要ない
• ノードを支配下においてねっとりと操った
り簡単に棄てる
44
Wednesday, July 24, 13
コードとしてのインフラって
だいたいこんな感じだと
思いました。
Wednesday, July 24, 13

More Related Content

Chef_Casual_Talks_Kansai_Vol1_Infrastructure_as_Code