20130720 jaws yokohama-lightning_talk

Post on 29-Jun-2015

3.045 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

top related