大規模システム構築に求められる自動化とChefの基本的な考え方とは
Chefを使用する環境
Chefを使用して構築・運用できる環境は、現状、UNIX/Linux系OSが中心です。Windows系OSもサーバ系で開発が進んでいます。Opscode社の下記のページが参考になります。
Chefの用語
次章以降で使用しますので、必要に応じて参照して下さい。Chefの用語で“システムの状態をコード化したもの”をレシピと言います。 Chef自体もそうですが、Chefの用語には調理に関連したものが多いようです。
用語 | 説明 |
---|---|
Recipe(レシピ) | システムをコードで定義したものの最小単位。 |
Cookbook(クックブック) | レシピや配布するファイル、メタデータなどをまとめたもの。 基本的にはクックブック単位で管理する。 |
Resources(リソース) | サービスの起動など、状態を定義するもの。例えば、ユーザが存在する状態を定義する場合は、“user”というリソースを使用して状態を定義する。 |
chef-client | 構築対象マシンでレシピに基づいて構築・設定変更を行うクライアントプログラム。 |
chef-solo | 構築対象マシンでレシピに基づいて構築・設定変更を行う単体プログラム。 |
Node(ノード) | chef-clientによって構築・設定変更が行われるマシン。 |
Chef Server | レシピやノード情報を管理するサーバ。 |
Knife(ナイフ) | Chef Serverおよびレシピを管理するリポジトリを操作するためのツール。 |
Workstation(ワークステーション) | ナイフを使用しChef Serverおよびレシピを操作するためのマシン。 |
Chefの仕組み
Chefの基本的な仕組みは構築・運用対象マシンにレシピとChefプログラムをデプロイし、Chefプログラムがレシピに基づいて人手の代わりの構築・運用を行う、という流れです。
Chefのアーキテクチャは、大きく分けて2つのタイプがあります。1つ目が、単体プログラム(スタンドアロン)で使用するタイプ(図3-A)、2つ目がClient/Server構成で使用するタイプ(図3-B)です。2つのタイプの大きな違いは、レシピを配布・管理する機能の有無です。
(1)スタンドアロンタイプ(図3-A)
スタンドアロンタイプでは、ノードごとに割り当てるレシピを使用者が直接配布します。配布したレシピを指定し、chef-soloを実行するとchef-soloがレシピに基づいて構築・設定を行います。
(2)Client/Server タイプ(図3-B)
Client/Serverタイプは、レシピやノードの管理を行うChef Serverとレシピに基づいて構築を行うchef-clientによって構成されています。
Chef Serverでレシピを適用するまでのおおまかな流れは以下の通りです。
ステップ1:Chef Serverサイド
- (a)Chef Serverにレシピを格納する
- (b)Chef Serverでノードとレシピの設定を行う
ステップ2:chef-client(ノード)サイド
- (c)chef-clientを実行すると、chef-clientはサーバにリクエストを送信し自身に設定されたレシピを取得する
- (d)chef-clientは取得したレシピに基づいて、構築・設定を行う
スタンドアロンタイプとClient/Serverタイプのポイントと注意点は、表の通りです。
項目 | ポイント | 注意点 |
---|---|---|
スタンドアロンタイプ (chef-solo) |
簡単に導入できる。 | ノードの台数が多い場合は“ノード”と“割り当てられたレシピ”の管理が煩雑になる場合がある。 |
Client/Serverタイプ (Chef Server) |
ノードの台数が多い場合でも、一元的に管理できる。 | Chef Serverを用意する必要がある。 |
chef-soloは、使用するまでの準備がChef Serverに比べ容易であり、簡単に試せます。レシピを書いてみたい方は、chef-soloで試してみて下さい。(インストール方法については、第2回で紹介いたします。)
Chef Serverはサーバを用意する必要がありますが、Opscode社が提供するインストーラを使用すればこちらもインストール自体は簡単にできます(その後の設定作業が少しだけ面倒です)。
Chefを使ってうれしいことは?
Chefを導入すると、以下の効果を期待できます。
- 構築・運用コストの削減
- 構築のやり直しがきく
- 作業時間の短縮
- 構築・運用ノウハウの共有
第1回は、自動化の必要性とChefの概要やシステムをコードで定義することの考え方について記載しました。第2回では、chef-soloと呼ばれる単体プログラムを使用して、実際にレシピを書いて試す方法をご紹介します。レシピの説明を通して、Chefの機能についても紹介していきますので、第2回をお楽しみに!
※記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。