SonicGardenでの
Puppet 活用事例
 TIS / SonicGarden
 安達 輝雄 id:interu

      2010/12
Agenda


 puppetとは
    puppet と chefの違い

 SonicGardenでの活用事例
    sample : SKIPaaS

 まとめ
Puppetとは

 Client - Server モデルの運用管理ツール

 Ruby言語製(gem)

 抽象化レイヤ
   OS/Distributionの違いを吸収
   Windows/Linux/Unixに対応




             ■puppetの実装等に関する資料はこちら
              http://blog.sonicgarden.jp/2009/04/puppet.html
システム構成(pull型)




    各Client から システム最新化のリクエスト
システム構成(push型)




    Server から システム最新化の指示
    ※指示の client からシステム最新化のリクエスト
Sample code



              httpdパッケージの
              インストール


              httpdの起動




              httpd設定ファイルの
              更新
利用企業




       puppet lab の HPより抜粋
vs Chef (strong point)

  導入が簡単
    Only Ruby/Rubygems/puppet

  対応プラットフォームが豊富
    Support Windows

  公開module(puppet forge)の仕組み
    119 found. (12/2)

  管理UI(puppet dashboard)
    別アプリ(rails)

  セキュリティ機能がしっかり
    SSL, ACL
vs Chef (weak point)

  Only Puppet DSL
     v2.6.xから Ruby DSL support

  Support REST API
     v2.6.xから対応

  Unit test ができない
     Ruby DSLで定義したものはunit test対応
SonicGardenでの活用事例

SKIPのSaaS提供 : SKIPaaSでpuppetを活用

SKIPaaSの概要
   お客様毎に仮想環境(EC2)

  アプリレベルのカスタマイズに対応
   textの設定ファイルでカスタマイズできる構成

  セキュリティ強化機能をオプション提供
    Web Serverでのアクセス制御
    ウィルススキャン
    アクセスログの提供
SKIPaaS運用課題

 環境構築に半日
 全環境のバージョンアップが大変
 環境ごとのカスタマイズ設定の管理が大変
 手作業が多く時折ミスが発生
 手順書の管理が煩雑



 以下の実現を目指す!
   環境構築/メンテンナンスに要する時間の削減
   環境毎の設定情報の一元管理(可視化)
課題解決方法の検討

候補1
  EC2のAMI(OSテンプレート) + Initializeスクリプト
候補2
  運用管理ツールの導入

候補3
  アプリ改修
運用構成




                    system設定(permission/owner)のチェック/更新
                    M/W設定の配置/更新
                    アプリケーションリリース(独自scripts)
                    cron設定のチェック/更新
                    各種daemon再起動

カスタマイズ可能な設定(お客様毎)
導入効果

環境構築/管理、バージョンアップの時間短縮
  構築/管理台数が多いほど効果絶大

クラウド環境でのテスト容易性
  テストで失敗したら環境を捨て再テスト
  EC2のAMIを活用することでより効率的に

M/W設定の構成/バージョン管理
  アプリと同じようにM/Wの設定等も全て(Git/SVN)管理
  属人化した情報の可視化
まとめ


 システム運用管理ツール(puppet/chef)の導入
   複数台のサーバ管理が楽に
   DRYに(作業ミス/忘れも削減可能)
   M/W設定もバージョン管理
   moduleの活用が可能

 これからはpuppet + MCollective

Case study puppet