エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。初回は、Chef 12、Chef Solo、Chef Server、Chef-Zero、Knife-Solo、Knife-Zeroの概要と、Chef-ZeroをKnife-Zero経由で利用するCookbook開発環境の構築について解説します。
Chefは「Infrastructure as Code」を実現するためのツールの一つです。「Infrastructure as Code」とは、手順書を元に手動で行うITインフラの構成管理を、定められたコードの形式として記述し、自動で実行する仕組みのことです。
従来、サーバー環境の構築は「コマンド」や「スクリプト」を駆使して、それらを「手順書」という形で残す方が多かったかと思いますが、それには、以下のようなさまざまな問題があります。「Infrastructure as Code」の適用によって問題の解決が期待できます。
本連載では、従来型のサーバーインフラ構築/管理手法からサーバー構成管理ツール「Chef」に移行するに当たって、つまずきやすいポイントについて集中的に取り扱い、高速かつ精度の高いサーバーインフラの構築/管理の手助けをすることを目的とします。
2014年にChef 12がリリースされました。その主な特徴について説明します。
かねてよりChef-Soloが廃止され、軽量版Chef Serverである「Chef-Zero」へ移行する必要があることがアナウンスされておりますが(なおChef 12時点では廃止されておりませんし、現時点では明確な廃止時期も提示されておりません)。
今回のアップデートはChef Serverに開発リソースを集中し、コードの統一により開発効率を向上させ、ChefそのものをChef Serverを中心とした「大規模環境のインフラ管理にフォーカスしたシステム」と位置付けてより進化させようとしていることがうかがえます。
またChef 12のアップデートにおいても、サブスクリプションモデル・VMware対応などエンタープライズ向けの機能が充実してきたという印象を受けます。
Chefはその実行形式により何種類かのプログラムに分かれます。それぞれのアーキテクチャについて解説します。なお、以降はCookbookを適用する対象のコンピューターを「ノード」と記載します。
Chef-ServerなしでノードにCookbookを適用します。Chef Serverとの互換性はなく別のプログラムとして存在しています。
Chef Serverをコントロールする「Chef Workstation」、構成情報を集中管理し、Clientをコントロールする「Chef Server」、Chef Serverの管理下に置かれる「Chef Client」から構成されるクライアント・サーバー形式のChefアーキテクチャです。
Chef SoloおよびChef Serverについては以下記事で詳説されていますので、ご参照ください。
Chef ServerなしでローカルサーバーにCookbookを適用します。Chef Serverの仕組みを使ってChef Clientがスタンドアロンで動作しています。
また上記アーキテクチャのコマンドラインインターフェースとして提供されているのが「knife」と呼ばれるプログラム群です。
レシピ一式をリモートサーバーへ転送し、Chef-Soloをリモートサーバー上で実行しCookbookを適用するものです。Chef SoloではノードにChefのインストールおよびCookbookの配置を手動で実施する必要がありましたが、Knife-Soloを使用することで、Cookbookの開発環境からノードへのChefインストールおよびCookbookの実行が行えるようになっています。
Cookbookの開発環境からノードへのChefインストールおよびCookbookの実行が行えるようになっている点はKnife-Soloと同一ですが、ノード側で実行されるChefがChef SoloからChef-Zero(Chef Client LocalMode)に変更されています。レシピ一式をリモートサーバーへ転送せず、SSH経由でChef Client LocalModeをノード上で実行させCookbookを適用するものです。
Copyright © ITmedia, Inc. All Rights Reserved.