サーバー設定ツール「Chef」をより便利に使うためのテクニック

図8 設定内容をData Bagに分離した場合

 サーバー管理ツール「Chef(シェフ)」は、ファイルに記述した設定内容に応じて自動的にユーザーの作成やパッケージのインストール、設定ファイルの編集などを行うツールだ。今回はChefの応用編として、Chefサーバーなしに複数台のサーバー管理を行う「knife-solo」というツールと、設定のためのデータなどを一元管理できる「Data Bag」という仕組みを紹介する。

knife-soloを使った複数台サーバー管理

 Chefは「Cookbook(クックブック)」や「Recipe(レシピ)」と呼ばれる設定ファイルに従って、ユーザーの作成やソフトウェアのインストール、ネットワークやファイアウォール、データベースなどの設定など、さまざまな設定作業を自動で実行するツールだ。利用するメリットとしてサーバーの設定を一元的に管理できる、実行する設定内容をチェックしやすくミスを防ぎやすいなどがあり、近年注目を集めている。

 Chefの基本的な使い方については以前の『サーバー設定ツール「Chef」の概要と基礎的な使い方』という記事で紹介しているが、今回はChefの応用編として、小規模な環境でのChefの使い勝手を向上させる「knife-solo」というツールの使い方と、設定データなどを別ファイルやデータベースで管理する「Data Bag」という仕組みについて紹介していこう。

Chefの構成——Chef Serverとchef-solo

 さて、今回紹介するknife-soloというツールは、Chef Serverを使わずに複数台のサーバーをChefで管理するためのツールだ。『サーバー設定ツール「Chef」の概要と基礎的な使い方』記事で解説したとおり、Chefを利用するための構成としてはChef Serverを利用するものと、Chef Serverを使わず、代わりに「chef-solo」というツールを使うものの2通りがある。

 Chef Serverを利用する場合、Cookbookなどの設定ファイルはすべてChef Server上に保存される。設定対象となるマシン側にはあらかじめChefのクライアントをインストールしておき、このクライアントがChef Server上のCookbookなどを参照して各種設定を実行する(図1)。また、Cookbookなどの作成作業は「Workstation」と呼ばれる作業用マシン上で行い、Chefに含まれるknifeコマンドを使ってChef Serverにそれらを登録する、という形になっている(WorkstationとChef Serverは同一のマシンでも構わない)。

図1 Chef Serverを使った構成
図1 Chef Serverを使った構成

 この構成の場合、Cookbookなどの設定ファイルはChef Server上で一元管理されるため、設定対象のマシンの台数が増えても管理の手間は大きくは変わらないというメリットがある。ただ、Chef Serverを用意する必要がある点や、Chef Serverを実行するマシンにはFQDNが与えられている必要があるなど、やや大がかりになってしまうという欠点もある。

 いっぽうchef-soloを使った構成では、設定対象のそれぞれのマシン上にChef ClientやCookbookなどの設定ファイルを配置し、chef-soloコマンドで設定処理を実行する(図2)。この場合Chef Serverは不要だが、設定対象のマシンそれぞれにCookbookを配置する必要がある。

図2 chef-soloを使った構成
図2 chef-soloを使った構成

 この構成では、管理するマシンが少数なら良いが、管理対象が増えると設定ファイルの管理が大変になる。また、設定作業を実行する際は対象のマシンそれぞれにログインしてchef-soloコマンドを実行しなければならない。

knife-soloを使ったChef環境

 chef-soloはChef Serverが不要であるため気軽に利用できるが、設定対象のそれぞれのサーバーにChef ClientやCookbookを配置して管理しなければならない。この作業を自動化するツールが、今回紹介するknife-soloだ。

 knife-soloは、作業用マシン上に用意したCookbookなどの設定ファイルを設定対象のマシンにコピーし、設定対象のマシン上でchef-soloコマンドを実行する、という一連の作業を自動実行するツールだ(図3)。設定ファイルのコピーにはrsyncが、chef-soloコマンドの実行にはsshが利用される。

図3 knife-soloを使った構成
図3 knife-soloを使った構成

 knife-soloを利用することで、作業用マシン上でCookbookなどを一元管理することができ、Cookbookを変更した際も簡単に設定対象のマシンにそれを反映させることが可能になる。

 以下ではこのknife-soloを使ったChef環境の構築方法を説明していくが、これらはすべて作業用マシンでの作業になる。設定対象のマシンではSSHでのリモートログインおよびrsyncが利用できる必要があるが、それ以外の設定は基本的には不要だ。