第2回では、Chefの使用イメージをつかむためchef-soloを使用しました。chef-soloは各ノードに設定されたレシピをそれぞれのマシンに配布する必要があるため、構築・運用台数が多くなってくると、レシピとノードの関連付け設定が大変になります。一方、Chef Serverはレシピやノードの管理を一元化できるため、台数の多い環境でも管理が簡単です。
第3回では、オープンソース版Chef Serverの基本的な仕組みと使用イメージ、特徴について説明した後、Chef Serverを活用したベアメタルマシン(何も書き込まれていない状態のマシン)に対する自動構築方法についてご紹介します。
Chef Serverの基本的な仕組み
まず、Chef Serverの基本的な仕組みについてご紹介します。
(1)Chefの構成要素
Chef Serverを使用するには、次の3つの構成要素を理解する必要があります。以下、順にご紹介しましょう。
(a)Workstation
Workstationは、CUIツールのKnifeを使用してクックブック作成やChef Serverの設定を行う操作端末です。Chef Serverの設定とは、認証やレシピとノードの関連付け等の設定を指します。
(b)Chef Server
Chef Serverは、内部DBを持ち、クックブックやノードのデータを1元管理するサーバです。
(c)ノード
ノードは、chef-clientによって構築・設定変更が行われるマシンです。chef-clientは、ノード上でレシピにもとづいてシステム構築・設定(状態)変更を行うエンジンです。
(2)Chef Serverを使用した自動構築の流れ
Chef Serverを使用してレシピを適用する流れは以下の通りです。
(a)レシピの作成
Workstationでクックブックを作成します。クックブックの作成は、第2回でご紹介した通りKnifeを使用します。
(b)レシピのアップロード
Knifeを使用して作成したクックブックをChef Serverにアップロードします。
(c)レシピとノードの関連付け
Chef Serverでノードオブジェクト(論理インスタンス)を作成し、アップロードしたクックブックとオブジェクトとの関連付けを行います。これはChef Server上で行われる論理的な設定です。
(d)レシピにもとづいた構築・設定
ノードでchef-clientを実行します。chef-clientには、あらかじめノード名を設定しておきます(デフォルトは、FQDN)。chef-clientは、ノード名をキーにしてChef Serverにリクエストを行い、自身に関連付けられたクックブックとランリストを取得した後、レシピにもとづいて構築・設定を行います。
設定変更を行う場合は、Workstationでレシピ(またはクックブック)を修正後Chef Serverにアップロードしchef-clientを実行します。すると、chef-clientが修正されたレシピを取得し設定変更を行います。
- この記事のキーワード
