humangas's blog

自分用のメモなので雑です。

入門Chef Solo:01-Chef とは何かを知りたい - Chef Overview

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

Chef とは?

  • サーバ設定や更新を自動化するツール
  • サーバ環境のメタデータを管理し、ノードの役割・状態を収束させるオペレーションフレームワーク
  • これまで手順書を書いて、それを見て作業して、というルーチンワークを自動化し、コードで記述することによってコンピュータ任せにしてしまうフレームワーク
  • Ruby 製で、手順書はRuby で記述する
  • 各種プラットフォームに依存する動作をラップして一つの手順書コード(Chef ではレシピと呼ぶ)で実行してくれる
  • →例えば、yum(RedHat)、apt(Debian)、homebrew(Mac) などのプラットフォーム依存部を意識させないということ。

レシピはバージョン管理ツールで管理

手順書コード(レシピ)はgit にcommit してバージョン管理することを推奨する

インフラもコードで操作する時代

インフラがソフトウェアの一部品であるかのようである = Infrastructure as Code の時代

サーバ状態を管理

手順をコードで自動化するというより、本質的には、サーバ状態を管理し収束させるためのフレームワーク あるべき状態をレシピに記述し適用させることで、「あるべき姿(State)に収束(Convergence))

Ruby に詳しい必要はない

設定ファイルを記載するようなもので、凝った記述を知らずとも扱うことが出来る package、template といったDSL を使うのと、ループや配列の操作くらいを知っていれば十分使える

類似製品

CFEngine、Puppet などがある。

Chef の使われどころ

  • Facebook が有名
  • →おそらく数万から数十万台規模のサーバをChef で管理しているらしい。
  • →Chef を開発しているOpscode では、Facebook から多数のフィードバックを受けてChef を改良しているらしい。
  • AWS OpsWorks もChef を利用したサービスで、GUIで設定した項目がChef レシピとなり、簡単に複* 数サーバで構成されるシステムを立ち上げたりできる。
  • OSX の開発環境をChef で管理し、マシン買い替え時の面倒な作業を無くす。
  • チーム開発で使用する各種ツールのバージョンを合わせる。

Chef Server と、Chef Solo

Chef Server + Chef Client

  • クライアント + サーバ モデルによる大規模インフラ環境を管理する
  • Chef Client -> HTTPS -> Chef Server から必要な情報をGET し、サーバに登録された設定をクライアントが受取り、実行するというPULL 型アーキテクチャを採用している。
  • 管理者は、Chef Server に、命令を投げることで、そこにぶら下がるClient の状態管理を行えるというもので、スケーラブルなアーキテクチャ。

Chef Solo

  • Server も、Client も必要としないただのコマンドとして実装されている。
  • このコマンドに、引数を与えて実行することで、諸々の設定反映が実行される。
  • Chef Solo 、Chef Server もいずれも同じレシピ記述方式であるため、どちらでもそのまま利用できる
  • Chef Solo でも比較的大きなシステム管理が可能だが、システム的なスケーラビリティはもちろん業務プロセス的なスケーラビリティの観点その他から、ある程度の規模になったら、Chef Server 導入の検討を推奨する。

Chef はどこから覚えると良いか?

まずは、標準Resource の使い方を覚えればOK

広告を非表示にする