インフラ構成管理ツールを使いこなす! コードではじめるサーバ構築 第3回
WINGSプロジェクト 阿佐 志保 [著] 山田 祥寛 [監修] 2015/02/04 14:00
このエントリーをはてなブックマークに追加

サンプルファイル 4.12 KB
1 2 3 →

 本連載は、SI業界に入ったばかりの新米業務アプリケーション開発者や、SI業界を目指す学生さんを対象とした、インフラ構成管理ツールを使ってコードでインフラを構築するための講座です。また、インフラエンジニア/システムオペレータで、物理環境でのインフラ構築/運用管理は経験があるけど、プログラミングが苦手という方にも読み進めていただけるように、文法などの解説を入れながら説明します。今回は、Chefというツールのご紹介と、Chefを使ってWebサーバを構築する方法について説明します。

はじめに

 前回は、コードでインフラ構成を行う第一歩としてVagrantを使ってローカルPCに仮想環境を構築する手順をご紹介しました。

 今回は、Chefというツールのご紹介と、Chefを使ってWebアプリケーションの開発環境にWebサーバであるApache httpdやPHPの実行環境などをインストールする方法について説明します。

対象読者

 本記事は、次の方を対象にしています。

  • コードを使ってインフラの構成管理がしたい人
  • ネットワークやLinuxの基礎知識がある人
  • Webシステムの開発環境を構築したことがある人

Chefってなんだろう

 インフラの構成管理を自動で行うツールのことをプロビジョニングツールと呼びます。Chef(シェフ)は、Chef社が提供するプロビジョニングツールです。Chefは、物理環境だけでなく、クラウドなどの仮想環境でも、サーバやアプリケーションなどのインフラを自動構成/管理できます。Rubyで実装されているのが特徴で、インフラの構成情報もRubyを使ってコードで管理します。Chefは米Facebook社などで利用実績があります。前回の記事でご紹介したVagrantによるシェルスクリプトの実行でも簡単なプロビジョニングは可能ですが、たとえば、複数台のサーバを統合管理したり、OSによって異なるコマンドの差異などを考慮しながら構築したりするのは、大きな負荷になります。

 Chefは、インフラ環境構築を簡単に行うための便利な機能が用意されています。

おさえておきたいChefの用語

 Chefのコマンドや設定ファイルなどは、料理になぞらえて独特の名前がつけられています。そのため、Chefをはじめて触るときは混乱しがちなので、はじめに用語を簡単に説明します。

Chef Server

 管理したい複数のサーバ群のインフラの構成情報を集中管理するホストのことです。Webベースの管理ツールやChefを操作するためのAPIを提供しており、それらをつかってインフラを自動構成したり、状態を管理したりします。大規模/複雑なインフラ構成の場合に導入されます。

Chef Client

 実際にインフラが自動構成される対象のホストです。実環境でのサーバの場合もあれば、Amazon Web ServicesのEC2インスタンスのように、クラウドの仮想環境の場合もあります。Chef Serverを導入するときの管理対象下のホストにインストールされるのがChef Clientです。

Chef Solo

 Chefは、システムの本番環境で複数台のサーバを自動構成することができるソフトウエアですので、通常Chef ServerとChef Clientを導入して、クライアントサーバ型のアーキテクチャで利用します。しかし、開発環境を構築するときなどは、Chefをスタンドアロンで利用することもできます。そのときに使うコマンドがChef Soloです。

 また、スタンドアロンでChefを利用したい場合は、Chef Zeroを使うこともできます。Chef Zeroは、インメモリで動く軽量なChef Serverです。ただしChef Zeroを使うには、Chefのクライアントサーバ型アーキテクチャの知識が必要になります。今回の連載では、インフラアーキテクチャが理解しやすく、現時点での利用者の多いChef Soloを使って環境を構築します。ただし、今後は、Chef SoloからChef Zeroに移行していくものと思われます。

Recipe(レシピ)

 Chef Clientで実際に設定されるインフラの構成情報を書いたプログラムのことです。Rubyの文法をベースにしてChefのDSL(Chef固有の命令)を使って記述します。たとえば、ミドルウエアをインストールして、サービスを起動するなど、従来、対象の端末にログインしてコマンド操作/各種スクリプトで行っていた処理などを、すべてRubyのコードで書きます。

CookBook(クックブック)

 インフラの構成をコードで行うと一口でいっても、インストールコマンドを実行するだけで動作するものもあれば、DBサーバのように専用のユーザアカウントを用意して、適切な設定ファイルを用意しなければいけないものなどがあります。そこで、作成したレシピを実行するために必要になる設定ファイルのひな形やパラメータ一覧などをまとめたものが、CookBookです。CookBookの中には、Recipeも含まれます。

Knifeコマンド

 Chefを管理するための便利なコマンドラインツールです。Chef Clientをインストールすると自動的に使えます。

Chefの基本構成

 これらをふまえて、Chefでインフラの構成管理をするときのアーキテクチャの例をいくつかご紹介します。

大規模なインフラ構成の場合

 サーバ台数の多い大規模なシステムや、役割の異なる多くのサーバを一元管理するときには、Chef Serverを用意して、インフラを統合管理します。業務アプリケーション設計と同じく、拡張性や再利用性などを考慮してCookBookを作成し、インフラの状態を管理します。そのためChefの使い方やコーディングはもちろん、実運用も考慮する必要があります。

大規模なインフラ構成の場合
大規模なインフラ構成の場合

小規模なインフラ構成の場合

 部門内で使用するなどサーバ数台規模の小規模なインフラ構成の場合、Chef Clientをスタンドアロンで使用することができます。作成したCookBookは手動で各サーバに配布/展開します。

小規模なインフラ構成の場合
小規模なインフラ構成の場合

開発環境などの場合

 複数の開発プロジェクトが並行で進んでいて、プロジェクト毎に開発環境を用意しなければいけないときなどは、前回の記事でご紹介したVagrantとChefを連携して、ローカルPCに仮想環境を構築できます。業務システム開発の現場でよくありがちな、本番環境にデプロイしたとたん「ライブラリのバージョンが……」で動かないなど、環境に依存する問題を、開発の早い段階で回避することができます。CookBookを作成し、Gitなどの構成管理ツールで管理しておけば、どの端末でも同じインフラ構成で環境構築できるので、開発メンバー全員がインフラの知識を習得する必要がありません。

開発環境の場合など
開発環境の場合など

 このようにChefは、小規模から大規模までのインフラ構成に対応したアーキテクチャをとることができます。しかし、インフラの構成管理の基本となるRecipeのコーディング部分やCookBookの考え方などについては、アーキテクチャにかかわらずあまり変わりません。

 本記事では、3つ目にご紹介したVagrantとChefを連携させてローカルPCに開発環境のインフラを構築するためのコーディングについてご紹介していきます。


1 2 3
→
INDEX
Chefで3分クッキング! Webサーバ構築のレシピをRubyで書いてみよう
Page1
はじめに
対象読者
Chefってなんだろう
Chefのインストールと設定
WebサーバをインストールするCookBookの作成
おわりに
こちらの関連記事もおすすめです

プロフィール

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2012年2月時点での登録メンバは37名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。


<個人紹介>
横浜市在住の主婦。
結婚前は基盤システム設計/構築などを行っていました。 今は子育てと家事とハンドメイドに追われる毎日です。ビーズアクセ作ったり、洋服縫ったり、電子工作したり、、、モノを作るのが大好きです。

  • 著書: 「Windows 8開発ポケットリファレンス」(技術評論社)
  • Twitter: @_dr_asa

 


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。