主な構成管理ツールの概要
インフラの構成をコードで管理していくためには、構成管理ツールや仮想化ツールなどを利用します。ひとくちにインフラ構成管理ツールといっても、ネットワークやOSを含むサーバの構成を管理するものもあれば、OSやミドルウエアの定義ファイルを自動作成するもの、または複数サーバの統合管理をおこなうツールまでさまざまあります。
ツールの持つ機能を役割に応じて、おおまかに分けると次のとおりです。
OSの起動を自動化するツール(Bootstrapping)
サーバのOSをインストールしたり、仮想化ツールをインストール/設定したりする作業を自動化するためのツールです。RedHat系のLinuxディストリビューションで利用できる「KickStart」や、ローカルPCに仮想環境を作るための「Vagrant」などがあります。また、Linux上で動作するコンテナ仮想化ツールである「Docker」は、クラウド環境での実行環境として注目されています。
OSやミドルウエアの設定を自動化するツール(Configuration)
データベースサーバ/Webサーバ/監視エージェントなどのミドルウエアのインストールやバージョン管理、Unix系OSの/etc配下にあるOSやミドルウエアの設定ファイルや、OSのファイアウォール機能などの設定といったセキュリティに関する設定などを自動化するためのツールです。主なツールは、Chef社が提供するオープンソースのRubyによるインフラ構成管理ツール「Chef」や、Pythonで実装された「Ansible」があります。また、「Puppet」は2005年にリリースされたオープンソースの構成管理ツールで長い歴史があります。
複数サーバの管理を自動化するツール(Orchestration)
大規模なシステムを構成するサーバは複数台にわたります。これらの管理を自動化するためのツールです。サーバ群を監視し、新しいサーバをシステムに登録したり、障害のノードをシステムから取り除いたりできる「Serf」や複数台のサーバへのアプリケーションのデプロイをサポートする「Capistrano」などがあります。
インフラの構成管理を行うときは、これらのツールを要件に応じて組み合わせて使うことが多くなっています。ただし、各ツールの持つ機能/プラグインやそれらの使い方によっては、この分類できっちり当てはまらないものもあるので、おおまかな分類としてとらえてください。
本連載では、これらの中で、ツールの利用者が多く、インフラ構築の入門として習得がしやすい「Vagrant」「Chef」「Docker」についての機能を簡単に紹介する予定です。
Vagrantのインストールと設定 1
それでは、さっそくインフラを構築していきましょう。システム開発の現場で多発する「あっちでは動くけど、こっちでは動かない」をなくすための第一歩は、アプリケーション開発チーム全体で統一した開発環境を整えることです。
今回は、ホスト型の仮想化ソフトウエアであるVirtualBoxと、仮想環境を自動で構築するためのツールであるVagrantを使って、ローカル端末に開発環境を構築する手順を説明します。
仮想環境ってなんだろう?
ここで、すこし仮想化技術についておさらいしておきたいと思います。みなさんは、普段Windowsのパソコンを使って、開発をしているとします。そこで、Linuxの本番サーバで動くWebアプリケーションを作りたいというときは、どのようにすれば良いでしょうか?一番簡単な方法は、Linuxサーバを開発チームで新たに購入することです。Webアプリケーションを作るためには、APサーバ以外にもDBサーバなどが必要なため、複数台のハードウエアが必要になります。
しかしながら、開発環境を構築するためにハードウエアを購入すると費用もかかりますし、サーバの管理も面倒です。そこで、開発で使っているWindowsパソコンのハードウエア上で、仮想的にLinuxマシンを動かすことができれば、サーバ機器を新たに購入すること無くシステム開発が出来ます。物理的なハードウエアを持たず、仮想的にOSを動かし、その上でアプリケーションを動作させますので、「仮想環境」と呼ばれています。
仮想環境を作るためには、基本となるハードウエアの上にOS(ホストOS)をインストールし、その環境に仮想化ソフトウエアを導入します。そして、仮想化ソフトウエア上で、ホストOSと異なるゲストOSを動かすことができるものです。動作イメージは次のとおりです。仮想化ソフトウエアを使うと、1つのハードウエア上に仮想的にいくつものOSを動作させたり、破棄したりすることができます。
なお、この仮想化のしかたを「ホスト型仮想化」と言います。ホスト型の仮想化ソフトウエアはいくつか提供されていますが、その一つに米Oracle社の「VirtualBox」があります。VirtualBoxは、Javaで有名なSun Microsystems社が開発を行っていたデスクトップ向けのオープンソースの仮想化ソフトウエアで、現在は同社を買収したOracle社からリリースされています。なお仮想化技術については、ホスト型以外にもいくつかありますので、詳細については次回以降の連載で説明します。