20130720 jaws yokohama-lightning_talk
-
Upload
kazuki-ueki -
Category
Technology
-
view
3.044 -
download
0
description
Transcript of 20130720 jaws yokohama-lightning_talk
![Page 1: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/1.jpg)
全部見せます!Chefを1ヶ月半ほど使あって学んだアレコレ
JAWS-UG 横浜支部 第5回勉強会 「chef on AWS ベストプラクティス」
classmethod.jp 1
2013/07/20 Kazuki Ueki
![Page 2: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/2.jpg)
本日の内容
1ヶ月ほどAWS業務でChefを使って感じた
良いこと・悪いこともろもろ
初めて~中級者向け
classmethod.jp 2
![Page 3: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/3.jpg)
自己紹介 名前:植木和樹(うえき かずき) 年齢:36歳 出身:新潟県妙高市(単身赴任中) 元製造業情報システムG常駐 主にUnixサーバエンジニア(監視、保守) 資格:IPAITサービスマネージャ IPA システムアーキテクト JAWS北陸コアメンバー(JAWS DAYS 2013~) AWS歴:約5か月(2013年5月Classmethod入社) 好きなAWSサービス:SQS
classmethod.jp 3
@czkuk
![Page 4: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/4.jpg)
初めてのchef
classmethod.jp 4
![Page 5: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/5.jpg)
覚え始め
まずは package と service リソースから
↓
template で設定ファイルを作る
↓
attributeで設定ファイルを書き換える
↓
OpscodeのResourceページを読みながらちょっとずつリソースの使い方を覚えていく
classmethod.jp 5
![Page 6: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/6.jpg)
慣れてきたら
Opscode Public Cookbooksを参考に(パクる)
定番本(超オススメ)
classmethod.jp 6
![Page 7: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/7.jpg)
これだけで7~8割はカバー
• とあるcookbook数 63のリポジトリ
• 使ってるリソースの上位 1. template (87)
2. service(79)
3. package(46)
4. cookbook_file(41)
5. directory(27)
6. link(26)
7. execute(6)
classmethod.jp 7
![Page 8: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/8.jpg)
まずはrecipeを書いてみよう
• 学習コストは低いし将来的にも役立つ (素直な正規表現レベル)
• Ohai で動的にサーバの状態取得 とか LWRP とかなるとグッと難しくなる (メールアドレスをValidationする正規表現)
• 内部DSLなのでRubyでいろいろやっちゃってるCookbookもあり (Rubyの知識が必要)
classmethod.jp 8
![Page 9: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/9.jpg)
Opscode Public Cookbooks or
オレオレCookbooks
classmethod.jp 9
![Page 10: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/10.jpg)
オレオレで良い
• 必要最小限のレシピ (Opscodeのは汎用的なので記述が冗長)
• 特殊なことや面倒な設定が必要ならOpscodeで探す OpscodeのPHPは pear リソースが便利
• Opscodeのは自分で修正しない (READMEやAttribute読んでどう使うのか調べる)
• 使えそうな部分だけパクる(2度目)
classmethod.jp 10
![Page 11: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/11.jpg)
レシピはどう分割する?
classmethod.jp 11
![Page 12: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/12.jpg)
典型的なパターン
• メイン+サブ機能型 (Apache + mod_xxx) (CloudWatch + カスタムメトリクス)
• Client + Server型 (xxx::install_client xxx::install_server)
• アクション型 (xxx::install、xxx::start)
classmethod.jp 12
![Page 13: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/13.jpg)
テストいる?
classmethod.jp 13
![Page 14: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/14.jpg)
いる!絶対!!
• テストのないcookbookは使い捨てのシェルスクリプトと変わらない
• ちゃんとシステムをあるべき姿に 「収束」させることを保証するためにもテストを実施すべき
classmethod.jp 14
![Page 15: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/15.jpg)
AWSでスクラップ&ビルドな CI環境を作ろう!
YES! CloudFormation!!
(近日ブログ公開!!・・・予定)
classmethod.jp 15
![Page 16: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/16.jpg)
テスト方法は?
classmethod.jp 16
![Page 17: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/17.jpg)
chefspec/serverspec
classmethod.jp 17
テスト方法 chefspec serverspec
テスト工程 単体テスト 結合テスト
テスト対象 レシピ サーバ
テスト実行 cookbook単位 run_list単位
![Page 18: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/18.jpg)
chefspec
• レシピの書き始めはchefspecが良い Rubyの文法間違いとかも手元でチェックできて便利
• chefspecはちょっと込み入ったことしようとすると難易度あがる (EncryptedDataBagとか…マジで教えてください)
classmethod.jp 18
![Page 19: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/19.jpg)
serverspec オススメ
• chef適用後のサーバの状態を調べる
• チェックがchefに依存しないので扱いやすい
• serverspecのテスト対象はrun_listと同期するのが望ましい @kenjiskywalker さんのブログを参考に
classmethod.jp 19
http://blog.kenjiskywalker.org/blog/2013/07/13/serverspec-chef-cookbook/
![Page 20: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/20.jpg)
Vagrantはどう?
classmethod.jp 20
![Page 21: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/21.jpg)
Cookbook作成時にオススメ
• 環境の構築破棄、VirtualBoxとAWS環境の切り替えが超簡単
• EC2-Classicがおすすめ デフォルトVPCでないとPublicDNSが割当らない (やり方ある?)
• IAM-Roleを割り当てたEC2起動に対応してない (ソースみた感じだと。やり方ある?) EC2へアクセスする際のクレデンシャルとして設定できる(Vagrant on EC2用?)
classmethod.jp 21
![Page 22: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/22.jpg)
まとめ
classmethod.jp 22
![Page 23: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/23.jpg)
AWSとchefは相性いいよ
• 何度でも環境を作りなおせる
• CloudFormationと組み合わせて 「Infrastructure as Code」
• テストが増えても物理サーバいらず = 省維持コスト
classmethod.jp 23
![Page 24: 20130720 jaws yokohama-lightning_talk](https://reader033.fdocuments.us/reader033/viewer/2022052316/559106a01a28abc56f8b46b1/html5/thumbnails/24.jpg)
ご清聴ありがとうございました
classmethod.jp 24