大規模システム構築に求められる自動化とChefの基本的な考え方とは

2013年11月18日(月)
喜納 健

Chefを使用する環境

Chefを使用して構築・運用できる環境は、現状、UNIX/Linux系OSが中心です。Windows系OSもサーバ系で開発が進んでいます。Opscode社の下記のページが参考になります。

> System Requirements

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によって構成されています。

図3:スタンドアロンタイプ(A)とClient/Server タイプ(B)(クリックで拡大)

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回をお楽しみに!

※記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。

株式会社 日立ソリューションズ

(株)日立ソリューションズ、オープンソース技術開発センタにてクラウド関連技術の調査に従事。Hadoop関連のプロジェクトで大規模クラスタの構築を担当したことを機に、システム構築・運用自動化について調査を行っている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています