20130720 jaws yokohama-lightning_talk

24
全部見せます!Chefを1ヶ月半ほど使 あって学んだアレコレ JAWS-UG 横浜支部 第5回勉強会 「chef on AWS ベストプラクティス」 classmethod.jp 1 2013/07/20 Kazuki Ueki

Upload: kazuki-ueki

Post on 29-Jun-2015

3.045 views

Category:

Technology


0 download

DESCRIPTION

JAWS-UG 横浜支部 第5回勉強会「chef on AWS ベストプラクティス」 Lightning Talk 「全部見せます!Chefを1ヶ月半ほど使って学んだアレコレ」

TRANSCRIPT

Page 1: 20130720 jaws yokohama-lightning_talk

全部見せます!Chefを1ヶ月半ほど使あって学んだアレコレ

JAWS-UG 横浜支部 第5回勉強会 「chef on AWS ベストプラクティス」

classmethod.jp 1

2013/07/20 Kazuki Ueki

Page 2: 20130720 jaws yokohama-lightning_talk

本日の内容

1ヶ月ほどAWS業務でChefを使って感じた

良いこと・悪いこともろもろ

初めて~中級者向け

classmethod.jp 2

Page 3: 20130720 jaws yokohama-lightning_talk

自己紹介 名前:植木和樹(うえき かずき) 年齢: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

初めてのchef

classmethod.jp 4

Page 5: 20130720 jaws yokohama-lightning_talk

覚え始め

まずは package と service リソースから

template で設定ファイルを作る

attributeで設定ファイルを書き換える

OpscodeのResourceページを読みながらちょっとずつリソースの使い方を覚えていく

classmethod.jp 5

Page 6: 20130720 jaws yokohama-lightning_talk

慣れてきたら

Opscode Public Cookbooksを参考に(パクる)

定番本(超オススメ)

classmethod.jp 6

Page 7: 20130720 jaws yokohama-lightning_talk

これだけで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

まずはrecipeを書いてみよう

• 学習コストは低いし将来的にも役立つ (素直な正規表現レベル)

• Ohai で動的にサーバの状態取得 とか LWRP とかなるとグッと難しくなる (メールアドレスをValidationする正規表現)

• 内部DSLなのでRubyでいろいろやっちゃってるCookbookもあり (Rubyの知識が必要)

classmethod.jp 8

Page 9: 20130720 jaws yokohama-lightning_talk

Opscode Public Cookbooks or

オレオレCookbooks

classmethod.jp 9

Page 10: 20130720 jaws yokohama-lightning_talk

オレオレで良い

• 必要最小限のレシピ (Opscodeのは汎用的なので記述が冗長)

• 特殊なことや面倒な設定が必要ならOpscodeで探す OpscodeのPHPは pear リソースが便利

• Opscodeのは自分で修正しない (READMEやAttribute読んでどう使うのか調べる)

• 使えそうな部分だけパクる(2度目)

classmethod.jp 10

Page 11: 20130720 jaws yokohama-lightning_talk

レシピはどう分割する?

classmethod.jp 11

Page 12: 20130720 jaws yokohama-lightning_talk

典型的なパターン

• メイン+サブ機能型 (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

テストいる?

classmethod.jp 13

Page 14: 20130720 jaws yokohama-lightning_talk

いる!絶対!!

• テストのないcookbookは使い捨てのシェルスクリプトと変わらない

• ちゃんとシステムをあるべき姿に 「収束」させることを保証するためにもテストを実施すべき

classmethod.jp 14

Page 15: 20130720 jaws yokohama-lightning_talk

AWSでスクラップ&ビルドな CI環境を作ろう!

YES! CloudFormation!!

(近日ブログ公開!!・・・予定)

classmethod.jp 15

Page 16: 20130720 jaws yokohama-lightning_talk

テスト方法は?

classmethod.jp 16

Page 17: 20130720 jaws yokohama-lightning_talk

chefspec/serverspec

classmethod.jp 17

テスト方法 chefspec serverspec

テスト工程 単体テスト 結合テスト

テスト対象 レシピ サーバ

テスト実行 cookbook単位 run_list単位

Page 18: 20130720 jaws yokohama-lightning_talk

chefspec

• レシピの書き始めはchefspecが良い Rubyの文法間違いとかも手元でチェックできて便利

• chefspecはちょっと込み入ったことしようとすると難易度あがる (EncryptedDataBagとか…マジで教えてください)

classmethod.jp 18

Page 19: 20130720 jaws yokohama-lightning_talk

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

Vagrantはどう?

classmethod.jp 20

Page 21: 20130720 jaws yokohama-lightning_talk

Cookbook作成時にオススメ

• 環境の構築破棄、VirtualBoxとAWS環境の切り替えが超簡単

• EC2-Classicがおすすめ デフォルトVPCでないとPublicDNSが割当らない (やり方ある?)

• IAM-Roleを割り当てたEC2起動に対応してない (ソースみた感じだと。やり方ある?) EC2へアクセスする際のクレデンシャルとして設定できる(Vagrant on EC2用?)

classmethod.jp 21

Page 22: 20130720 jaws yokohama-lightning_talk

まとめ

classmethod.jp 22

Page 23: 20130720 jaws yokohama-lightning_talk

AWSとchefは相性いいよ

• 何度でも環境を作りなおせる

• CloudFormationと組み合わせて 「Infrastructure as Code」

• テストが増えても物理サーバいらず = 省維持コスト

classmethod.jp 23

Page 24: 20130720 jaws yokohama-lightning_talk

ご清聴ありがとうございました

classmethod.jp 24