読者です 読者をやめる 読者になる 読者になる

気の向くままに書き綴る

勉強会参加したメモや日々の思ったことのメモ等

【Devlove2012参加】Chefを利用した運用省力化とDevOpsの取り組みについて

Chefを利用した運用省力化とDevOpsの取り組みについて
並河氏
http://www.slideshare.net/namikawa/devlove-conference-2012-chef

 アメーバピグ
  会員 13000万人ユーザー
  トラフィック 7−8Gbps
  アクティブ40万ユーザー/ピーク

 職種はDevとOps
  ・機能開発と非機能部分
  ・モニタリング
  ・障害対応
  ・運用改善
  →システム運用改善はエンジニア全員で境界線はない

 イベントに合わせて30台いれちゃおうとかある
 →Chefいれようか

 Chefとは
  サーバーの構築作業やシステム管理のツール
  オープンソース Ruby
  自動化していないと・・・
    時間がかかる
    そもそも手作業は漏れはミスがある
    機会損失
    作業者によってスキルにばらつきがある


  Node管理対象のサーバー
  Role管理対象のグループング
  Cookbookシステムのあるべき形を定義する設定
   Rscipe システムのあるべき姿、設定内容実際に記載
   Template 
   Attribute 固有サーバーパラメータ

  二回目やると何もおこわらない→プロセス落ちた場合Serviceを見て立ち上げてくれる
   →作るというよりあるべき姿にする

 Chefイケてないところ
 ・サーバーのセットアップが面倒くさい
  →サーバーセットアップは最初だけ。Ubuntuだと楽
 ・名前がSEO的に致命的
  →Chef、CookBook、Recipe、knifeリアルな食べ物になる。。。
  →最初にRubyつけてggr

 PXE + kickstart + Chef
  事前にchef-server 側でNodeの設定が必要
  サーバに線をつなぎオン
  Lavel No.とNode名を入力し、OSインストール開始

  同時にChef-client
  kickstartの%postdでChef-clientを実行

Kickstartの今フィル

 OSinstall
 chef-clientのインストール
  設定
  実行
  gemで入れる
 /etc/chef/client.rbの配置 コンフィグです
 /etc/chef/validation.pem 鍵 
 Node 
  ネットワークの設定
  HWに必要な設定
 Role
  サーバー設定 DNSとかNTPとかそのへん
  各Roleで回す 
 Recipe
  実際のモジュール設定
  SctiptResource は基本的に使わない
  何度も実行される

 Chef-client実行時のチェック・運用が面倒
  何度実行しても問題ないものしか使わない

一気にやる場合 
 tomahaekで複数のサーバで同じコマンドを実行
 knife ssh knife ssh_cheto
 
 NodeのAttributeの登録
 JSONファイルを自動生成して登録・バージョン管理
 RoleもJSONファイル形式でバージョン管理
 アンインストール・削除などの処理も忘れずに



Environment(0.10〜)の活用
developmentとStaging/production
Verbose_logging false →デフォルトのログはですぎ!!
why-run
Chefでの処理をNodeに反省しないテストモード
ChefサーバのバックアップはCouchDBのバックアップとっている

Recipeが正しいことを保証するのは?
 仮想マシンでテストするのが簡単 Vagrantが便利
 人での確認が必要
 Why-runでテスト
 Rscipeのユニットテスト
   チェックスクリプトを作成

Recipeと言うなのコードベースでのセットアップ手順書になっていく
  バージョン管理もできるし、誰でもメンテナンス可能
  DevとOpsの新しいコミュニケーション

他のChef
 Chef-solo
  テスト環境に便利
 Chefのインタラクティブシェル
  shef 実行の確認できる
 Opscode Platfoem Hosted chef    5台まで無償
 EC2とやるとすごく便利