狠狠撸

狠狠撸Share a Scribd company logo
環境構築自動化ツール
 Chef を試してみた
      Aizu.LT kanagawaWithIndex:1
           2013/3/30 at uPhyca inc.

                      Taku Unno
                DWANGO Co,. Ltd
           boscoworks@gmail.com
Profile
? 海野 拓 (Taku Unno)
? 2004-2008 会津大学 (画像処理学講座)
? 2008-2012 Yahoo!JAPAN
  ? Yahoo!バラエティ、Yahoo!ニュース、Yahoo!ロコ
? 2012/4-Now Dwango
  ? RCP、許諾楽曲開発、NicoSound、マーケティング
? Mail: boscoworks@gmail.com
? Facebook: http://on.fb.me/yDZ2XO
【PR】あわせて読みたい
? http://www.slideshare.net/boscoworks/
  ? 転職LT
  ? ニコニコ動画の著作権管理の仕組み
  ? PHPカンファレンス2012 レポート
【PR】ニコニコ超会議2
? http://www.chokaigi.jp/
? 4/27-28
? 幕张メッセ
デプロイの话
開発マイルストーン
? PDCA サイクル
 ?   Plan, Do, Check, Act
 ?   企画?設計
 ?   開発?テスト
 ?   リリース
 ?   性能評価?マーケティング
 ?   改善



? 今日はリリースの話です
How to deploy?
? 独自シェルスクリプト
? SCP
? svn switch
? rake
? kickstart
? Puppet
? yinst
Aizu.LT::Tokyo #4
Chef とは
? サーバ構成管理ツール
? 環境構築を自動化出来る
? Ruby で書ける
? インフラ構築の作業手順書をスクリプトに出来る
時代はDevOps
? インフラエンジニアの作業負荷軽減
 ? デプロイ手順の簡略化
? 環境再現?構築の容易化
? 構築手順のバージョン管理
Chef 導入のメリット
? デプロイが簡単
? スクリプトで書いた通りにデプロイできる
? バージョン管理出来る
? 適用する recipe をサーバによって自由に組み替えられ
 る
Chef のデメリット
? 既存システムに組み込むのが大変
? 学習コストは低くない
? 環境によってディストリビューションが違うと泥沼
? 組み込みコマンドは使えない
? そもそもChef導入までがいばらの道
 ? (Chef-Serverを使う場合)
? Recipe のメンテをサボりがち
Chef の構成
構成要素
? Cookbook (ソフトウェアを構築するための手順ひとま
 とめ)
 ? Recipe (実行内容を記述するスクリプト)
   ? Attribute (変数の定義)
   ? Template (テンプレートファイル)
   ? Resource (処理の抽象化)
 ? Role (Recipeを組み合わせて役割として定義)
? Node (管理対象のクライアントマシン)
単体でも実行可能 (Chef-Solo)
? 中小規模アプリケーションであればこれで十分
? Chef そのものの導入が手軽
? ざっくり以下2ファイルを準備:
 ? chef.json
   ? run_list (recipe一覧) を記述
 ? solo.rb
   ? Cookbook のパス、ログレベルなどを指定

 ? % sudo chef-solo –c solo.rb –j chef.json
chef.json
{

    "run_list": [

        "recipe[php::php]",

        "recipe[php::apache]",

        "recipe[php::phpunit]”

    ]

}
solo.rb
file_cache_path "/tmp/chef-solo"

cookbook_path "/home/boscoworks/chef/cookbooks"

role_path "/var/chef/roles"

log_level :debug
Recipe でパッケージをいれる
package "php-pear" do

 action :install

 not_if "which pear"

end
OSによる条件分岐
package "php5-cli" do
 case node[:platform]
  when "ubuntu"
   package_name "php5-cli"
  when "centos"
   package_name "php53"
 end
 action :install
 not_if "which php"
end
PEARパッケージをいれる
php_pear "PHPUnit" do

 action :install

 channel "phpunit"

 options "--alldeps --force"

 version "3.6.11"

 not_if "which phpunit"

end
コマンドを実行する
execute "package update" do
 case node[:platform]
  when "ubuntu"
   command "apt-get update"
  when "centos"
   command "yum -y update"
 end
end
ディレクトリを作成する
directory "/tmp/users" do
 owner "root"
 mode "0777"
 action :create
 not_if do
  File.exists?("/tmp/users")
 end
end
Template を配置する
template "/usr/local/apache2/conf/extra/httpd-vhosts.conf" do

 owner "root"

 group "root"

 mode "0777"

 not_if do

  File.exists?("/usr/local/apache2/conf/extra/httpd-vhost.conf")

 end

end
Attribute を Template で使う
? Template


<VirtualHost *:80>

 ServerAdmin webmaster@localhost

 ServerName <%= node[:server_name] %>

 DocumentRoot /home/boscoworks/public

…
Attribute を Template で使う
? Attribute


default['server_name'] = ”localhost"
Attribute を Recipe で使う
? Recipe


execute "tar" do

 command "tar jxvf /tmp/httpd-#{node.httpd_version}.tar.bz2 -C /tmp/"

 only_if do

    File.exists?("/tmp/httpd-#{node.httpd_version}.tar.bz2")

 end

…
Attribute を Recipe で使う
? Attribute


default['httpd_version'] = "2.2.19"
まとめ
? 構築の自動化が凄く楽
? 「作る/壊す」開発環境VMが手軽に準備出来る
? Chefは何でもやってくれる万能ツールではない
? イニシャルコスト?メンテナンスコストをきちんと割
 きたい
参考文献
?   Chef wiki
    ? http://wiki.opscode.com/display/chef/Home

?   Opscode Community
    ? http://community.opscode.com/cookbooks

?   日本Chefユーザー会
    ? https://www.facebook.com/japan.chef.users.group

?   Chef でサーバ管理を楽チンにしよう!
    ? http://jp.rubyist.net/magazine/?0035-ChefInDECOLOG

?   Chef を試してみた
    ? http://higelog.brassworks.jp/?p=643

?   ChefでCookbookを作るときのちょっとしたコツ 9選
    ? http://heartbeats.jp/hbblog/2013/01/chef-cookbook-tips.html

?   chef-soloで環境設定
    ? http://tdoc.info/blog/2012/05/08/chef_solo.html
ご清聴ありがとうございまし
      た

                        Taku Unno
                DWANGO Co,. Ltd
         boscoworks@gmail.com
          http://on.fb.me/yDZ2XO

More Related Content

Aizu.LT::Tokyo #4