入門 Chef Server #biglobetechtalk

7,342 views

Published on

第1回 BIGLOBE Tech Talk 「初めての Chef」の発表です

Published in: News & Politics
0 Comments
35 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,342
On SlideShare
0
From Embeds
0
Number of Embeds
507
Actions
Shares
0
Downloads
0
Comments
0
Likes
35
Embeds 0
No embeds

No notes for slide

入門 Chef Server #biglobetechtalk

  1. 1. ©2013 NEC BIGLOBE, Ltd. 1第1回 BIGLOBE Tech Talk 「初めての Chef」入門 Chef Server2013.6.14NEC BIGLOBESACHO Yasuhisa
  2. 2. ©2013 NEC BIGLOBE, Ltd. 2自己紹介• 佐長 康久 (さちょう やすひさ)• ミドルウェア担当• id: @syasuhisa– つぶやき内容は所属組織とは関係ありまs(ry
  3. 3. ©2013 NEC BIGLOBE, Ltd. 3目次• Chef とは• Chef Server について• Chef Server 設定編• Chef Server 利用編• まとめ
  4. 4. ©2013 NEC BIGLOBE, Ltd. 4Chef とは
  5. 5. ©2013 NEC BIGLOBE, Ltd. 5Chef とは• インフラの構築・運用管理を自動化するためのフレームワーク
  6. 6. ©2013 NEC BIGLOBE, Ltd. 6Chef の基本• Ruby で記述されたクックブックやレシピ※と呼ばれる設定情報を元に、サーバの状態を維持・管理するInfrastructure as Code– インフラをコードで制御できるようにクックブックレシピRubyプログラム※クックブック:レシピ、属性情報、設定テンプレートなどをまとめたものレシピ:設定や手順を記述した Ruby プログラム
  7. 7. ©2013 NEC BIGLOBE, Ltd. 7• 設定や手順をプログラムで書いておけば、自動で設定してくれる?で?対象サーバ自動設定クックブックレシピ1)Apache入れて2)起動Apache起動• 本質的には、あるべき状態をプログラムで定義しておけば、自動で状態を維持してくれる
  8. 8. ©2013 NEC BIGLOBE, Ltd. 8Chef のバリエーション種別 概要OSS Chef オープンソース版Hosted Chef Opscode 社が Chef Server を運用Private Chef Hosted 版をプライベート環境で運用• 機能差については下記参照http://www.opscode.com/chef/#which-chef
  9. 9. ©2013 NEC BIGLOBE, Ltd. 9OSS Chef のバリエーション種類 特徴 機能Chef Server 本気のサーバ・クライアント型 多Chef zero 軽量簡易 Chef ServerChef solo スタンドアロン版Chef apply 単一レシピを実行 少
  10. 10. ©2013 NEC BIGLOBE, Ltd. 10基本構成Chef Server NodeWorkstationknife Chef Client管理者用端末knife コマンドで、クックブック、ChefServer を操作するChef Server に管理されるサーバChef Client が定期的にChef Server と通信し、定義された状態を維持する管理サーバクックブックの配布・保存、Node の認証、管理、情報の検索などを行う
  11. 11. ©2013 NEC BIGLOBE, Ltd. 11Node動作概要Chef ServerWorkstationクックブックレシピ1)Apache入れて2)起動レシピ1)Apache入れて2)起動knife Chef Client① クックブックを用意して、Chef Server へアップロード
  12. 12. ©2013 NEC BIGLOBE, Ltd. 12Node動作概要Chef ServerWorkstationknife Chef Client② クックブックの情報を(定期的に)取得クックブックレシピ1)Apache入れて2)起動レシピ1)Apache入れて2)起動
  13. 13. ©2013 NEC BIGLOBE, Ltd. 13Node動作概要Chef ServerWorkstationknife Chef Client③ Node が、クックブックで定義された状態と異なる場合、必要な処理を実行して、状態を合わせるクックブックレシピ1)Apache入れて2)起動レシピ1)Apache入れて2)起動Apache起動
  14. 14. ©2013 NEC BIGLOBE, Ltd. 14最近の話題• Chef11• Facebook• AWS OpsWorks• 「入門 Chef Solo」本(伊藤直也さん著)• IBM• Microsoft
  15. 15. ©2013 NEC BIGLOBE, Ltd. 15Chef Server について
  16. 16. ©2013 NEC BIGLOBE, Ltd. 16Chef Server とは• クライアント・サーバモデル• インフラ情報を集中管理– 情報検索• 例– OS が CentOS のノード– メモリが 4GB のノード– 検索結果を利用した設定との連携など• 中規模~向け• WebUI
  17. 17. ©2013 NEC BIGLOBE, Ltd. 17Chef11• より高性能かつスケーラブルに– 1 サーバで 10,000 ノード管理可能– コアエンジンが Ruby 製から Erlang 製に– DB が CouchDB から PostgreSQL に– WebUI が Merb から Rails 3 に– フロントエンドに Nginx• API や WebUI アクセスをリバースプロキシ• ポートが分かりやすく– HTTPS(443/tcp)に集約– HTTP(80/tcp)は HTTPS へリダイレクト
  18. 18. ©2013 NEC BIGLOBE, Ltd. 18Chef11• Chef Server の導入が簡単に– Chef10 までは Chef Server の構築が手間だった– 一つの RPM でインストール• 組み込み Ruby など必要なものはすべて– /opt/chef-server 配下• セットアップもコマンド一発• テストまで
  19. 19. ©2013 NEC BIGLOBE, Ltd. 19Chef Server の構成要素Nginxフロントエンド用リバースプロキシWebUIWeb インタフェース機能、Rails 3Erchefコアエンジン部、Erlang 実装Bookshelfクックブックを保存Message Queues検索 Indexer、RabbitMQ+chef-solrPostgreSQLNode やクックブックの情報を保存参考: http://docs.opscode.com/chef_overview_server.html
  20. 20. ©2013 NEC BIGLOBE, Ltd. 20chef-client 実行① Node 情報収集(Ohai)② 認証③ 設定情報取得④ 設定準備⑤ 設定実行(実施済みはスキップ)⑥ 情報更新、ログ出力終了Chef Client の処理フローChef Serverいい?OK!最新情報通知
  21. 21. ©2013 NEC BIGLOBE, Ltd. 21Ohai• Ruby 製の情報収集ツール– Chef のインフラ情報管理を支えている– Chef Client に同梱• 様々な Node の情報を JSON 形式で収集– 環境や OS に合わせて情報収集• ソースは努力の結晶だそうです– 項目は数百以上• OS、 CPU、メモリ、ディスク、NW、…• 収集した情報は Chef Server に保存– 検索可能に
  22. 22. ©2013 NEC BIGLOBE, Ltd. 22認証• Chef Server は API クライアント(Chef Client や knife)を公開鍵暗号で認証• 初回通信時のみ特殊な validator キーを使用– validator キーは Chef Server 構築時に自動生成– API クライアント利用前に設置が必要Chef ServerChef Client初回通信時:validator キーで署名して、新しい API クライアントの鍵を要求以降:新しい API クライアントキーで署名新しい API クライアントの鍵を返却
  23. 23. ©2013 NEC BIGLOBE, Ltd. 23Chef Server 設定編
  24. 24. ©2013 NEC BIGLOBE, Ltd. 24vagrantVirtualBoxWindows7テスト環境• PC(Windows7)– VirtualBox 4.2.12• chefsv– workstation も兼ねる– Chef Server 11.8.0.1– Chef Client 11.4.4– 192.168.10.10– 要 git• node01– Chef Client 11.4.4– 192.168.10.31– vagrant 1.2.2• CentOS 6.4 box192.168.10.10 192.168.10.31192.168.10.1chefsv node01テスト環境概要図
  25. 25. ©2013 NEC BIGLOBE, Ltd. 25テスト環境設定時のポイント• hosts– Chef Server は 127.0.0.1 で自分の名前解決ができること– Chef Server は Node の名前解決ができること– Node は Chef Server の名前解決ができること• iptables– Workstation、Node → Chef Server(443/tcp)– Workstation → Node(22/tcp)– WebUI 用 → Chef Server(80/tcp)• ssh– Workstation → Node ログインできること– ログインアカウント(今回は vagrant)で sudo できること• knife– knife コマンド実行時に knife.rb を探索– ~/.chef/knife.rb なら、気にしなくても大丈夫
  26. 26. ©2013 NEC BIGLOBE, Ltd. 26仮想環境構築• Vagrantfile 置いて、vagrant upVagrant.configure("2") do |config|config.vm.box = "centos64"config.vm.define :server do |sv|sv.vm.network :private_network, ip:"192.168.10.10"sv.vm.hostname = "chefsv"endconfig.vm.define :node do |sv|sv.vm.network :private_network, ip:"192.168.10.31"sv.vm.hostname = "node01"endend
  27. 27. ©2013 NEC BIGLOBE, Ltd. 27Chef Server 設定chefsv$ sudo rpm -ivh chef-server-11.0.8-1.el6.x86_64.rpm• Chef Server RPM のダウンロード– http://www.opscode.com/chef/install/• インストールchefsv$ sudo chef-server-ctl reconfigureStarting Chef Client, version 11.4.0Compiling Cookbooks......Chef Client finished, 268 resources updatedchef-server Reconfigured!chefsv$ sudo chef-server-ctl test...Finished in 34.09 seconds70 examples, 0 failures• セットアップ
  28. 28. ©2013 NEC BIGLOBE, Ltd. 28Chef Server 管理コマンド• /opt/chef-server/bin/chef-server-ctl– 状態、設定確認– 起動、停止、再起動– 一括ログ参照– シグナル送信– (再)設定– 初期化– アンインストールcleansegraceful-killhelphupintkilloncereconfigurereindexrestartservice-listshow-configstartstatusstoptailtermtestuninstall利用可能なオプション一覧
  29. 29. ©2013 NEC BIGLOBE, Ltd. 29Workstation 設定• knife インストール(Chef Client に含まれる)chefsv$ curl -L https://www.opscode.com/chef/install.sh | sudo bashchefsv$ chef-client -vChef: 11.4.4chefsv$ cd ~chefsv$ git clone git://github.com/opscode/chef-repo.gitchefsv$ mkdir ~/.chefchefsv$ sudo cp /etc/chef-server/chef-validator.pem ~/.chef/validation.pemchefsv$ sudo cp /etc/chef-server/admin.pem ~/.chef/chefsv$ sudo chown vagrant:vagrant ~/.chef/*.pem• レポジトリの準備• 鍵の準備
  30. 30. ©2013 NEC BIGLOBE, Ltd. 30Workstation 設定chefsv$ $ knife configure -iWARNING: No knife configuration file foundWhere should I put the config file? [/home/vagrant/.chef/knife.rb]Please enter the chef server URL: [http://chefsv:4000] https:://192.168.10.10Please enter a name for the new user: [vagrant]Please enter the existing admin name: [admin]Please enter the location of the existing admins private key:[/etc/chef/admin.pem] ~/.chef/admin.pemPlease enter the validation clientname: [chef-validator]Please enter the location of the validation key: [/etc/chef/validation.pem]~/.chef/validation.pemPlease enter the path to a chef repository (or leave blank): ~/chef-repoCreating initial API user...Please enter a password for the new user: ********Created user[vagrant]Configuration file written to /home/vagrant/.chef/knife.rb• knife コマンド初期設定
  31. 31. ©2013 NEC BIGLOBE, Ltd. 31Node 設定chefsv$ knife bootstrap 192.168.10.31 -x vagrant -P ******** --sudoBootstrapping Chef on 192.168.10.31...192.168.10.31 Converging 0 resources192.168.10.31 Chef Client finished, 0 resources updated• Workstation から bootstrap で起動• 自動で validator キーを置いてくれる• Chef Server 登録して、初回 Chef Client 実行まで
  32. 32. ©2013 NEC BIGLOBE, Ltd. 32Node 設定chefsv$ knife ssh name:node01 sudo chef-client -d -i 300 -s 10-L /var/log/chef-client.log -P ********• knife ssh で Chef Client を daemon 化(強気)nocd01$ ps -fea | grep chefroot 5743 1 0 05:58 ? 00:00:00 /opt/chef/embedded/bin/ruby/usr/bin/chef-client -d -i 300 -s 10 -L /var/log/chef-client.log• 300s 間隔で 10s ランダムに時間をずらして実行• ログは /var/log/chef-client.log に出力• 手動で単発実行するなら、-d オプションなしで• -W オプションで why-run(dry-run)– 設定は実施しない
  33. 33. ©2013 NEC BIGLOBE, Ltd. 33Chef Server 利用編
  34. 34. ©2013 NEC BIGLOBE, Ltd. 34クックブック・レシピ• サーバの「状態」を定義– 何回実行しても同じ状態になるように作る– 冪等(べきとう)性(これ大事• プラットフォームの違いを吸収してくれる(ものも– 例) package * action: install• CentOS → yum• Ubuntu → apt-get• コミュニティでたくさん公開– http://community.opscode.com/cookbooks– だいたい動きますが、期待通りか確認しましょう– わりとそのままでは使えないことも…– とても参考になります
  35. 35. ©2013 NEC BIGLOBE, Ltd. 35クックブック開発・テスト• 開発・テストツールも色々あります– test-kitchen– Food Critic– cucumber-chef– chef-workflow– chefspec– yard-chef参考 URL: http://docs.opscode.com/#the-chef-community
  36. 36. ©2013 NEC BIGLOBE, Ltd. 36クックブックの登録chefsv$ knife cookbook upload apache2Uploading apache2 [1.6.2]Uploaded 1 cookbook.chefsv$ knife coolkbook listapache2 1.6.2• クックブックの取得chefsv$ knife cookbook site install apache2Installing apache2 to /home/vagrant/chef-repo/cookbooks...Cookbook apache2 version 1.6.2 successfully installed• クックブックを Chef Server にアップロード
  37. 37. ©2013 NEC BIGLOBE, Ltd. 37ここからは WebUI でchefsv の IP アドレスで接続ログイン情報は画面右初回ログイン後、パスワード変更画面へ
  38. 38. ©2013 NEC BIGLOBE, Ltd. 38Status管理 Node 情報が一覧表示Uptime や Last Check-in など長時間更新されていないと色が変わる
  39. 39. ©2013 NEC BIGLOBE, Ltd. 39Cookbooks登録済みクックブックが一覧表示chefsv$ knife cookbook listapache2 1.6.2
  40. 40. ©2013 NEC BIGLOBE, Ltd. 40Nodes管理 Node が一覧表示chefsv$ knife node listnode01
  41. 41. ©2013 NEC BIGLOBE, Ltd. 41レシピの適用適用したいレシピをドラッグ&ドロップして、下部の「Save Node」 ボタンを押すchefsv$ knife node run_list add node01 recipe[apache2]
  42. 42. ©2013 NEC BIGLOBE, Ltd. 42適用レシピの確認新たに Run List と Recipes に登録したレシピ情報が反映Chef Client を daemon 化していれば、しばらくすればレシピが適用していない場合は、knife ssh や Node上で Chef Client を実行して適用node01$ ps -fea | grep httpdroot 7358 1 0 14:38 ? 00:00:00 /usr/sbin/httpdapache 7361 7358 0 14:38 ? 00:00:00 /usr/sbin/httpdapache 7362 7358 0 14:38 ? 00:00:00 /usr/sbin/httpd...
  43. 43. ©2013 NEC BIGLOBE, Ltd. 43情報検索Node 用 Queryに「platform:centos」と入力して、「Search node」ボタンを押すと、CentOS の Node 一覧が表示されるchefsv$ knife search node platform:centos1 items foundNode Name: node01Environment: _defaultFQDN: nodeIP: 10.0.2.15Run List: recipe[apache2]Roles:Recipes: apache2Platform: centos 6.4Tags:
  44. 44. ©2013 NEC BIGLOBE, Ltd. 44まとめ• Chef は、「インフラの構築・運用管理を自動化するためのフレームワーク」• Chef11 はいろいろと便利に• Chef Server も簡単に試せます• WebUI もぜひ• 冪等(べきとう)性は大切です• 使いこなすには、Dev+Ops 力!以上です

×