サーバ大量構築時のキモ ~Chef 構成の仕組み・用語について~

前回はChefがどういったものなのかを記述したので、今回はもう少し細かい内容や大体の仕組みや用語について覚えておくべき内容と記述していく。
まぁ、といっても仕組みの大体の内容なので、そんなに細かいわけではない。
書いている内容もこのページとか公式のドキュメントとかの内容を自分が覚えやすいようにまとめているだけだ。

Chefの仕組みについて

前回、非常に簡素化した概要図を書いたが、今回は公式ドキュメントから転載させて頂いた図を元に記述していこうと思う。 (http://docs.opscode.com/chef_overview.htmlより転載)

大きく分けて、以下の3つの固まりに分かれている。

  1. workstations
  2. chef server
  3. nodes

以下に、それぞれの構成要素についてを書いていく。

1.workstations

上の図でいうworkstationsは、作業担当者が使用するPCをイメージしてもらえればいい。
以下に、先ほどの図からworkstationsの箇所だけ抜粋したものを記載する。

chef-repo

chef-repoという大きな固まりがあるが、これが各機器の構成情報を保有している「設定ファイルの固まり」のような物にあたる。
Chefでの構成管理は、このchef-repoをシコシコ作成して各機器へ適用させる。

chef-repoの中でも重要なのが、Cookbooksという固まりの中に存在する「recipe」というものになる。
Chefでは、この「recipe」に構成情報がRubyで記述されている。

いまは、このchef-repoというものが設定ファイルの固まりであること、設定を記述するファイルは「recipe」というファイルであることを認識していればいい。

knife

chef serverを管理するためのコマンドツール。
図ではworkstationsの中に記述されているが、インストールされているのはchef server上になる。

2.chef server

Chefで各ノードを管理している、管理サーバに当たる。
以下に公式HPでのchef serverに関しての図を転載する。

http://docs.opscode.com/chef_overview_server.htmlより転載

何やら色々な役割の存在がいるが、公式のドキュメント及びこちらのページでわかりやすく解説されていた。
とりあえず、以下の事だけ把握しておけばただ使用する上では問題無いだろう。

  1. chef serverのメイン機能は、『Erchef』という部分が担っている
  2. Cookbookは、『Bookshelf』というものに実ファイルとして保持される
  3. 『Nginx』というリバースプロキシサーバがHTTPリクエストをWebUI、Erchef、Bookshelfに割り振っている

まずは、大体このような作りになっていると捉えておけば良さそうだ。

3.nodes

Chefでは、管理されるサーバの事を指しで『nodes』と呼んでいる。
この『nodes』には、chef-clientというクライアントソフトウェアがインストールされており、それによってchef serverで管理がされている。

nodesにインストールされているchef-clientの挙動については、公式のこちらのドキュメントから図面を持ってきた。

http://docs.opscode.com/chef_overview_nodes.htmlより転載

以上。chefの全体的な仕組みについて個人的に勉強した内容をまとめてみた。
次回以降は実際に実機でChefをインストールする等を行っていこうと思う。

…そのうち、AnsibleやPuppet、HP-UXのIgnite-UXもやってみたいなぁ