SlideShare a Scribd company logo
1 of 37
Download to read offline
Using Chef for Infrastructure
Automation of Ameba Pigg


                         Yuuki NAMIKAWA
                          Cyberagent Inc.
                    [DevOps Days Tokyo 2012]

                                               1
自己紹介
並河 祐貴 (a.k.a. id:rx7)

(株)サイバーエージェント所属
主にインフラエンジニア
Blog: http://d.hatena.ne.jp/rx7/
Twitter: @namikawa

著書・寄稿多数



                                   2
最初に謝罪 m(_”_)m



                3
今日の話は・・・
DevOpsの細かい話はしません
 ごめんなさい



弊社でのサービス運用について

Chefを匏用したプログラマブルなシステム基盤


    んまぁ、つまりChefの話をしに来ました!




                            4
アメーバピグ (Ameba Pigg)




                      5
アメーバピグ (Ameba Pigg)
 アバター仮想空間サービス
  きせかえ、おでかけ
  ゲーム(カジノ、つり、ライフ(庭)、アイランド)

 ユーザ数
  1190万人 (2012/03, Amebaユーザの約半数)

 トラフィック (アバター/ゲーム)
  約6 7Gbps / ピーク帯

 同時接続ユーザ数 (アバター/ゲーム)
  約40万ユーザ / ピーク帯

                                   6
ピグでのシステム運用スタイル
職種は一応存在する
 アプリエンジニア(Dev?)
 インフラエンジニア(Ops?)...

チーム・体制
 各施策ごとに機能開発を担当するチーム
 非機能部分(勯能・勣定・捓厾化)を担当するチーム

基本的にシステム運用は全員プレイ
 モニタリングも
 障害対応も
 リリースやサーバ設定も
 当番はありますが、基本的にエンジニア全員で担当します

                              7
皆がWinになれるか



             8
アウトプットを高めるためのアプローチ
作業の捓厾化・自動化
施策・タスクの選択と集中
情報共有・コミュニケーション・マインド
...etc




                      9
システム運用する上でのツール
運用匳 の厢损でツールによる作業捓厾化
 アプリケーションのデプロイ
 サーバを増設する
 設定厭 を卬 する
 ...etc


アプリ/インフラ 方の匞 が必要
 セットアップ、パフォーマンスチューニング、トラブ
 ルシューティング...




                            10
少し昔の話




        11
僕が今の会社に入って
一番最初にやった仕事



             12
ピグのWeb/APサーバを3台増設
その時に渡された手順書(1台分)




                    13
14
アメーバピグ・ピグライフの規模感
アメーバピグ
 サーバ台数: 約220台          (⇒ 150台まで削減予定)
 – Web/APサーバ40台
 – Socketサーバ75台
 – DB(MySQL+FIO)サーバ6台 x 2(スタンバイ)
 – API, Hadoop Cluster, Mobile, Smart Phone...
 – etc...


ピグライフ
 サーバ台数: 約250台
 – Socket(node.js)サーバ70台、
 – DB(MongoDB)サーバ150台
 – Statサーバ20台
 – etc...
                                                 15
ピグのサーバ増設・運用拻
サービス・システム規模、共に右肩上がり

急な増設を求められることもあります
 ビッグイベントにあわせて30台入れちゃうとか
 想定を捪えるスピードでサービスが成 するとか


そこで「Chef」を使ってみました




                          16
それ、
クラウド使ったら
でk(ry
   クラウドも、運用を捓厾化する1要素

ミドルウェアの設定拻 や、プロセスの状態拻 も
 含めて今回は「Chef」で自動化する話をします



                           17
Chefの概要


http://www.flickr.com/photos/jonathanbeard/3307862620/   18
「Chef」とは
            サーバの構築作業やシステム拻 のツール
                  システムのあるべき状態を設定する
            オープンソース、Ruby製

            匏用実
                  37signals
                  Engine Yard
                  Rackspace hosting
                  etc…



http://www.flickr.com/photos/jonathanbeard/3307862620/   19
サーバ構築・システム拻 自動化の必要勯

             手作業では、そもそも時間がかかる
                   数十台、数百台のレベルになると・・・
                   同 叓厎のサーバごとに環境挽 が発生したりとか
                        サーバ匐入までのリードタイムが くなることで
                           機会損失を発生させることは避けたい


             人為的なミスを抑えたい
                   作業 れ、ルーチン作業でのオ ミス
                   作業者によって、スキルにバラつき
                     運用中のサーバでのミスは特に無くしたい
                  設定に間違いがあっても自動化しておく事で即修正可能


http://www.flickr.com/photos/jonathanbeard/3307862620/   20
それ、シェルスクリプトでよくね?
           サーバの状態が記述できるフレームワーク
                  基本的なタスクが備わっている
                  拻 タスクの厍拾をできるだけ える


           Chefでは内部DSLを採用
                  Rubyでの柔軟な記述ができる


           プラットフォームの挽 が 厓できる
                  ディストリビューションによってコマンドに挽
                  yumとaptとか


http://www.flickr.com/photos/photomequickbooth/4062072718/   21
Chefのシステムアーキテクチャ

                                                                                 Ruby
                        CouchDB                            Solr
                                                                                 Merb(Rack)
                                                                                 CouchDB
                                                         Chef-Solr
                                                          Indexer
                                                                                 Solr
                                                                                 RabbitMQ
                      Chef-Server
                                                         RabbitMQ                (Java)
                         API
                                                                                 (Erlang)
      Chef-Server
                                                                                 HTTP(REST)
        WebUI                                                                    JSON
                                        Chef-Client
                                        Chef-Client                  Knife
                                         Chef-Client
                                                                             Client


http://www.flickr.com/photos/jonathanbeard/3307862620/                                        22
Chefでの”主な”登場人物
            Node
            Role
            Cookbook
                  Recipe
                  Template
                  Attribute



                                時間の都合上、基本を簡単にご紹介します




http://www.flickr.com/photos/jonathanbeard/3307862620/   23
Node, Role, Cookbook の関連(捁)

                                                                  nginxのCookbook

             サーバA
                                                         APサーバの
                                                                    Passengerの
                                                           Role
                                                                     Cookbook

             サーバB
                                                                  RubyのCookbook



             サーバC                                                  gitのCookbook

        Node                                             Role      Cookbook

          拻 対拺の                                           拻 対拺の   システムのあるべき形を
           サーバ                                           グルーピング     定義する設定

http://www.flickr.com/photos/jonathanbeard/3307862620/                             24
Chefのリポジトリ構造 (Cookbook)
      cookbooks/                                         設定したいパラメータ(各サーバ
                                                         固有のものやデフォルト値など)
        |-- attributes
                                                             を記述したもの
        |-- definitions
        |-- files
        |-- libraries                                      システムのあるべき姿、
        |-- providers                                      つまり設定内容を実際に
                                                           記載したRubyスクリプト
        |-- recipes
        |-- resources
        `-- templates                                     サーバへ配置する設定ファイルの
                                                         テンプレートで、eRubyで記述する




http://www.flickr.com/photos/jonathanbeard/3307862620/                        25
Recipe、Templateの一捁
      ./recipe/default.rb                                ./templates/default/ports.conf.erb
       package "apache2" do                               Listen <%= port %>
        action :install                                   NameVirtualHost *:<%=port %>
       end

       template "/etc/apache2/ports.conf" do
        source "ports.conf.erb"                          ./attributes/default.rb
        owner "root"
                                                          default[:port] = “8080"
        group "root"
        mode 0644
        variables(
          :port => node[:port]
        )
       end
                                                             “port”:”80”        “node A”の情報を保持
                                                                                 [Node Attribute],
       service "apache2" do
                                                                                   [Run List] 等
        action [ :enable, :start ]                                  recipeの設定
       end



                                                                        chef-client
                                                           node A                      Chef-Server


http://www.flickr.com/photos/jonathanbeard/3307862620/                                               26
Chefで匏用できるResource
              Cookbook File                              Mount
              Cron                                       Ohai
              Deploy                                     Package
              Directory                                  PowerShell Script
              Erlang Call                                Remote Directory
              Execute                                    Remote File
              File                                       Route
              Git                                        Ruby Block
              Group                                      SCM
              HTTP Request                               Script
              Ifconfig                                   Service
              Link                                       Subversion
              Log                                        Template
              Mdadm                                      User

http://www.flickr.com/photos/jonathanbeard/3307862620/                       27
Chefのちょっとイケていないところ
           サーバのセットアップが面倒くさい
                  必要なのは最初だけなので、許容できる
                  クライアントは簡単


           名前がSEO的に致命的
                  Chef, Cookbook, Recipe, knife...
                  リアルに調べ物をする時に困ります


           dry-runができない
                  テスト環境が必須 (クラウド・仮想化が最適)


http://www.flickr.com/photos/photomequickbooth/4062072718/   28
Chefの運用


http://www.flickr.com/photos/jonathanbeard/3307862620/   29
Chefを活用したサーバ増設
            PXE + kickstart + Chef
             1.      事前に chef-server 側でNodeの設定が必要
             2.      サーバに線を繋ぎ電源ON、PXEブート開始
             3.      Label No.とNode名を入 し、OSインストール開始
             4.      同時に chef-client のインストールと設定
             5.      kickstart の %post で chef-client を実
                kickstartのcfgファイル

                       通常のOS
                       インストールタスク                                        通信
                                                           client            PXE+ksサーバ
                       chef-clientのインストール

                                                         OSインストール後                通信
                       chef-clientの設定
                                                         は直接通信
                       chef-clientの
                                                                    Chef-Server

http://www.flickr.com/photos/jonathanbeard/3307862620/                                   30
Chefを活用したサーバ増設
            今はオンプレミスな物 環境を想定

            クラウド環境でも応用可能
                  EC2だと、事前にAMIを作成しておいて、user-dataに
                  Node名を指定して...
                  (弊社のOpenStackクラウド基盤を活用したい)




http://www.flickr.com/photos/jonathanbeard/3307862620/   31
Cookbookの使い方
            Cookbookの捁
                  ネットワーク設定
                  H/Wに必要な設定
                     – 主にH/W固有で必要なドライバやRAIDチェックスクリプト等
                  各サーバ共通で必要な設定
                     – DNS, NTP, LDAP, 監視ライブラリ, 鍵交換等
                  各Roleで必要な設定

             NodeへのCookbook設定                            RoleへのCookbook設定
            {                                            {
                "run_list": [                                "run_list": [
                  "recipe[network::xxxxx]",                    "recipe[ameba-common::pigglife]",
                  "recipe[hw::dell_r310]",                     "recipe[pigglife-mongodb::mongod]"
                  “role[pigglife-mongodb]"                   ]
                ]                                        }
            }

http://www.flickr.com/photos/jonathanbeard/3307862620/                                              32
Cookbookでのコミュニケーション
            セットアップ手順のチェックをRecipe
            (Cookbook)という名のコードベースで

            バージョン拻 しているので、厢掇との挽分も卾
            認しやすい

            誰でもRead/Writeできる場所にあるので、みん
            なでメンテナンスできる




http://www.flickr.com/photos/jonathanbeard/3307862620/   33
Chefを使う上でやっていること
            Script Resource は基本的に使わない
                  挬 でも実 される
                  chef-client実 時のチェック・運用が面倒
                  挬 実 しても勬匑ないものしか使わない

                                                         過去、こんな感じで書いていました...
                     script “script_name" do
                      interpreter "bash"
                      user “username"
                      creates comp_dir + “script_name.done"
                      code <<-EOH
                        command
                        ......
                        ......
                      EOH
                     end




http://www.flickr.com/photos/jonathanbeard/3307862620/                         34
Chefを使う上でやっていること
            各nodeのChef適用は、chef-clientを実
                  tomahawk: 数のサーバで同 コマンドを実
                  “knife ssh”, “knife ssh_cheto” を使いたい

            NodeのAttributeの登録
                  JSONファイルを自動生成して登録・バージョン拻

            アンインストール・削揄等の叀 も れずに

            Environment(0.10 )の活用
                  development, staging, productionの分別


http://www.flickr.com/photos/jonathanbeard/3307862620/   35
これからChefを勉強する方へ
            chef-solo が 匏
                  chef-server を必要とせず、ローカルにCookbookを
                  適用できる
                  VMでテストとか練習とか


            Chefのインタラクティブシェル
                  “shef”


            Opscode Platform (Hosted Chef)
                  Chefのホスティング環境 (サーバ)
                  5 nodes までなら、無厄で試せる

http://www.flickr.com/photos/jonathanbeard/3307862620/   36
まとめと今後の展望
            Chefを活用することで多くのサーバの増設・拻
            にかかる負担を軽減
                  あるべき状態に自動で設定・維持できる
                  ルールを少し覚えれば、誰でも簡単に設定が書ける
                  内部DSLなので、Rubyを覚えれば叀 も柔軟に書ける


            クラウド等の基盤サービスと連携して、インフラ
            構築/運用の完全オートメーションができる仕組
            みにしたい



http://www.flickr.com/photos/jonathanbeard/3307862620/   37

More Related Content

What's hot

Mod lua
Mod luaMod lua
Mod luado_aki
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Tsuyoshi Torii
 
Management of Gems using Bundler.
Management of Gems using Bundler.Management of Gems using Bundler.
Management of Gems using Bundler.Tamotsu Furuya
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5ichikaway
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Yoshinori Nakanishi
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8Satoshi Ohkubo
 
Ember.js the Second Step
Ember.js the Second StepEmber.js the Second Step
Ember.js the Second StepDopin Ninja
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~miraitas
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugTakeshi Komiya
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalkBIGLOBE Tech Talk
 

What's hot (20)

Mod lua
Mod luaMod lua
Mod lua
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
What is chef
What is chefWhat is chef
What is chef
 
Apache Module
Apache ModuleApache Module
Apache Module
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
 
Management of Gems using Bundler.
Management of Gems using Bundler.Management of Gems using Bundler.
Management of Gems using Bundler.
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Openstack chef-repo
Openstack chef-repoOpenstack chef-repo
Openstack chef-repo
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
 
Ember.js the Second Step
Ember.js the Second StepEmber.js the Second Step
Ember.js the Second Step
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~Linux Server 冗長化~リアルタイム同期でラクラク運用~
Linux Server 冗長化~リアルタイム同期でラクラク運用~
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 

Similar to Using Chef for Infrastructure Automation of Ameba Pigg

大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)Yuuki Namikawa
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)Yuuki Namikawa
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Kenta Suzuki
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築VOYAGE GROUP
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )ロフト くん
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3日本Javaユーザーグループ
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Matthew Romaine
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_techYosuke Tomita
 
RoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するRoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するaktsk
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 

Similar to Using Chef for Infrastructure Automation of Ameba Pigg (20)

大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
 
serverless
serverlessserverless
serverless
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_tech
 
RoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するRoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理する
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 

More from Yuuki Namikawa

bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選Yuuki Namikawa
 
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)Yuuki Namikawa
 
#kuwacon Lightning Talks
#kuwacon Lightning Talks#kuwacon Lightning Talks
#kuwacon Lightning TalksYuuki Namikawa
 
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)Yuuki Namikawa
 
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)Yuuki Namikawa
 
JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料Yuuki Namikawa
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用についてYuuki Namikawa
 
Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Yuuki Namikawa
 
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例Yuuki Namikawa
 
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Yuuki Namikawa
 
Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Yuuki Namikawa
 

More from Yuuki Namikawa (11)

bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
 
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
 
#kuwacon Lightning Talks
#kuwacon Lightning Talks#kuwacon Lightning Talks
#kuwacon Lightning Talks
 
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
 
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
 
JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)
 
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
 
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
 
Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Using Chef for Infrastructure Automation of Ameba Pigg

  • 1. Using Chef for Infrastructure Automation of Ameba Pigg Yuuki NAMIKAWA Cyberagent Inc. [DevOps Days Tokyo 2012] 1
  • 2. 自己紹介 並河 祐貴 (a.k.a. id:rx7) (株)サイバーエージェント所属 主にインフラエンジニア Blog: http://d.hatena.ne.jp/rx7/ Twitter: @namikawa 著書・寄稿多数 2
  • 6. アメーバピグ (Ameba Pigg) アバター仮想空間サービス きせかえ、おでかけ ゲーム(カジノ、つり、ライフ(庭)、アイランド) ユーザ数 1190万人 (2012/03, Amebaユーザの約半数) トラフィック (アバター/ゲーム) 約6 7Gbps / ピーク帯 同時接続ユーザ数 (アバター/ゲーム) 約40万ユーザ / ピーク帯 6
  • 7. ピグでのシステム運用スタイル 職種は一応存在する アプリエンジニア(Dev?) インフラエンジニア(Ops?)... チーム・体制 各施策ごとに機能開発を担当するチーム 非機能部分(勯能・勣定・捓厾化)を担当するチーム 基本的にシステム運用は全員プレイ モニタリングも 障害対応も リリースやサーバ設定も 当番はありますが、基本的にエンジニア全員で担当します 7
  • 10. システム運用する上でのツール 運用匳 の厢损でツールによる作業捓厾化 アプリケーションのデプロイ サーバを増設する 設定厭 を卬 する ...etc アプリ/インフラ 方の匞 が必要 セットアップ、パフォーマンスチューニング、トラブ ルシューティング... 10
  • 14. 14
  • 15. アメーバピグ・ピグライフの規模感 アメーバピグ サーバ台数: 約220台 (⇒ 150台まで削減予定) – Web/APサーバ40台 – Socketサーバ75台 – DB(MySQL+FIO)サーバ6台 x 2(スタンバイ) – API, Hadoop Cluster, Mobile, Smart Phone... – etc... ピグライフ サーバ台数: 約250台 – Socket(node.js)サーバ70台、 – DB(MongoDB)サーバ150台 – Statサーバ20台 – etc... 15
  • 17. それ、 クラウド使ったら でk(ry クラウドも、運用を捓厾化する1要素 ミドルウェアの設定拻 や、プロセスの状態拻 も 含めて今回は「Chef」で自動化する話をします 17
  • 19. 「Chef」とは サーバの構築作業やシステム拻 のツール システムのあるべき状態を設定する オープンソース、Ruby製 匏用実 37signals Engine Yard Rackspace hosting etc… http://www.flickr.com/photos/jonathanbeard/3307862620/ 19
  • 20. サーバ構築・システム拻 自動化の必要勯 手作業では、そもそも時間がかかる 数十台、数百台のレベルになると・・・ 同 叓厎のサーバごとに環境挽 が発生したりとか サーバ匐入までのリードタイムが くなることで 機会損失を発生させることは避けたい 人為的なミスを抑えたい 作業 れ、ルーチン作業でのオ ミス 作業者によって、スキルにバラつき 運用中のサーバでのミスは特に無くしたい 設定に間違いがあっても自動化しておく事で即修正可能 http://www.flickr.com/photos/jonathanbeard/3307862620/ 20
  • 21. それ、シェルスクリプトでよくね? サーバの状態が記述できるフレームワーク 基本的なタスクが備わっている 拻 タスクの厍拾をできるだけ える Chefでは内部DSLを採用 Rubyでの柔軟な記述ができる プラットフォームの挽 が 厓できる ディストリビューションによってコマンドに挽 yumとaptとか http://www.flickr.com/photos/photomequickbooth/4062072718/ 21
  • 22. Chefのシステムアーキテクチャ Ruby CouchDB Solr Merb(Rack) CouchDB Chef-Solr Indexer Solr RabbitMQ Chef-Server RabbitMQ (Java) API (Erlang) Chef-Server HTTP(REST) WebUI JSON Chef-Client Chef-Client Knife Chef-Client Client http://www.flickr.com/photos/jonathanbeard/3307862620/ 22
  • 23. Chefでの”主な”登場人物 Node Role Cookbook Recipe Template Attribute 時間の都合上、基本を簡単にご紹介します http://www.flickr.com/photos/jonathanbeard/3307862620/ 23
  • 24. Node, Role, Cookbook の関連(捁) nginxのCookbook サーバA APサーバの Passengerの Role Cookbook サーバB RubyのCookbook サーバC gitのCookbook Node Role Cookbook 拻 対拺の 拻 対拺の システムのあるべき形を サーバ グルーピング 定義する設定 http://www.flickr.com/photos/jonathanbeard/3307862620/ 24
  • 25. Chefのリポジトリ構造 (Cookbook) cookbooks/ 設定したいパラメータ(各サーバ 固有のものやデフォルト値など) |-- attributes を記述したもの |-- definitions |-- files |-- libraries システムのあるべき姿、 |-- providers つまり設定内容を実際に 記載したRubyスクリプト |-- recipes |-- resources `-- templates サーバへ配置する設定ファイルの テンプレートで、eRubyで記述する http://www.flickr.com/photos/jonathanbeard/3307862620/ 25
  • 26. Recipe、Templateの一捁 ./recipe/default.rb ./templates/default/ports.conf.erb package "apache2" do Listen <%= port %> action :install NameVirtualHost *:<%=port %> end template "/etc/apache2/ports.conf" do source "ports.conf.erb" ./attributes/default.rb owner "root" default[:port] = “8080" group "root" mode 0644 variables( :port => node[:port] ) end “port”:”80” “node A”の情報を保持 [Node Attribute], service "apache2" do [Run List] 等 action [ :enable, :start ] recipeの設定 end chef-client node A Chef-Server http://www.flickr.com/photos/jonathanbeard/3307862620/ 26
  • 27. Chefで匏用できるResource Cookbook File Mount Cron Ohai Deploy Package Directory PowerShell Script Erlang Call Remote Directory Execute Remote File File Route Git Ruby Block Group SCM HTTP Request Script Ifconfig Service Link Subversion Log Template Mdadm User http://www.flickr.com/photos/jonathanbeard/3307862620/ 27
  • 28. Chefのちょっとイケていないところ サーバのセットアップが面倒くさい 必要なのは最初だけなので、許容できる クライアントは簡単 名前がSEO的に致命的 Chef, Cookbook, Recipe, knife... リアルに調べ物をする時に困ります dry-runができない テスト環境が必須 (クラウド・仮想化が最適) http://www.flickr.com/photos/photomequickbooth/4062072718/ 28
  • 30. Chefを活用したサーバ増設 PXE + kickstart + Chef 1. 事前に chef-server 側でNodeの設定が必要 2. サーバに線を繋ぎ電源ON、PXEブート開始 3. Label No.とNode名を入 し、OSインストール開始 4. 同時に chef-client のインストールと設定 5. kickstart の %post で chef-client を実 kickstartのcfgファイル 通常のOS インストールタスク 通信 client PXE+ksサーバ chef-clientのインストール OSインストール後 通信 chef-clientの設定 は直接通信 chef-clientの Chef-Server http://www.flickr.com/photos/jonathanbeard/3307862620/ 30
  • 31. Chefを活用したサーバ増設 今はオンプレミスな物 環境を想定 クラウド環境でも応用可能 EC2だと、事前にAMIを作成しておいて、user-dataに Node名を指定して... (弊社のOpenStackクラウド基盤を活用したい) http://www.flickr.com/photos/jonathanbeard/3307862620/ 31
  • 32. Cookbookの使い方 Cookbookの捁 ネットワーク設定 H/Wに必要な設定 – 主にH/W固有で必要なドライバやRAIDチェックスクリプト等 各サーバ共通で必要な設定 – DNS, NTP, LDAP, 監視ライブラリ, 鍵交換等 各Roleで必要な設定 NodeへのCookbook設定 RoleへのCookbook設定 { { "run_list": [ "run_list": [ "recipe[network::xxxxx]", "recipe[ameba-common::pigglife]", "recipe[hw::dell_r310]", "recipe[pigglife-mongodb::mongod]" “role[pigglife-mongodb]" ] ] } } http://www.flickr.com/photos/jonathanbeard/3307862620/ 32
  • 33. Cookbookでのコミュニケーション セットアップ手順のチェックをRecipe (Cookbook)という名のコードベースで バージョン拻 しているので、厢掇との挽分も卾 認しやすい 誰でもRead/Writeできる場所にあるので、みん なでメンテナンスできる http://www.flickr.com/photos/jonathanbeard/3307862620/ 33
  • 34. Chefを使う上でやっていること Script Resource は基本的に使わない 挬 でも実 される chef-client実 時のチェック・運用が面倒 挬 実 しても勬匑ないものしか使わない 過去、こんな感じで書いていました... script “script_name" do interpreter "bash" user “username" creates comp_dir + “script_name.done" code <<-EOH command ...... ...... EOH end http://www.flickr.com/photos/jonathanbeard/3307862620/ 34
  • 35. Chefを使う上でやっていること 各nodeのChef適用は、chef-clientを実 tomahawk: 数のサーバで同 コマンドを実 “knife ssh”, “knife ssh_cheto” を使いたい NodeのAttributeの登録 JSONファイルを自動生成して登録・バージョン拻 アンインストール・削揄等の叀 も れずに Environment(0.10 )の活用 development, staging, productionの分別 http://www.flickr.com/photos/jonathanbeard/3307862620/ 35
  • 36. これからChefを勉強する方へ chef-solo が 匏 chef-server を必要とせず、ローカルにCookbookを 適用できる VMでテストとか練習とか Chefのインタラクティブシェル “shef” Opscode Platform (Hosted Chef) Chefのホスティング環境 (サーバ) 5 nodes までなら、無厄で試せる http://www.flickr.com/photos/jonathanbeard/3307862620/ 36
  • 37. まとめと今後の展望 Chefを活用することで多くのサーバの増設・拻 にかかる負担を軽減 あるべき状態に自動で設定・維持できる ルールを少し覚えれば、誰でも簡単に設定が書ける 内部DSLなので、Rubyを覚えれば叀 も柔軟に書ける クラウド等の基盤サービスと連携して、インフラ 構築/運用の完全オートメーションができる仕組 みにしたい http://www.flickr.com/photos/jonathanbeard/3307862620/ 37