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