2013年9月12日

VagrantでPostgreSQL 9.3の動く仮想サーバを自動構築してみる

PostgreSQL 9.3がリリースされて数日経ちましたが、すでに試した方もおられるでしょうか。

試してみたいと思う一方で、環境をセットアップしたりするのが面倒で、なかなかトライできない、という方もおられるかもしれません。

今回、Vagrantを使ってOSのセットアップからPostgreSQL 9.3の初期化、サービス起動までを一気通貫で実行することができましたので、その手順をご紹介したいと思います。

■「Vagrant」とは


Vagrantは、最近、特にWeb系の開発者の間で広く使われるようになってきた仮想環境の管理ツールです。
VirtualBoxやVMwareといった仮想化ソフトウェアは仮想環境を提供しますが、Vagrantはそれらのソフトウェアをラップして、さらに使いやすくします。

具体的には、仮想マシンの作成、起動、終了などに加えて、「プロビジョニング」と呼ばれる任意のコマンドやスクリプトを自動実行する仕組みがあり、環境構築などの手間を省く、反復可能にする、といった目的に対して威力を発揮します。

Vagrantの基礎については、以下のドットインストールのレッスンを参考にしてください。
以降の解説は、上記のレッスン程度の内容を理解していることを前提として進めます。

■OSの準備


それでは実際に環境構築を始めます。まずは、OSのセットアップ(Boxの作成)です。

vagrantbox.esには、さまざまなBox(Vagrant用語における仮想マシンイメージ)の情報が集約され、そこへのリンクが用意されています。
今回は、この中から以下のCentOS 6.4のBoxを使うことにします。
このCentOS 6.4のテンプレートを、vagrant box addコマンドを使ってダウンロードして手元の環境に追加します。
vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box

vagrant box listコマンドで正しく登録できたことを確認したら、仮想マシン用のディレクトリ(ここではpostgresql93)を作成して、その中で vagrant init コマンドを実行して仮想マシンの初期化を行います。


カレントディレクトリに Vagrantfile というファイルが作成されていることを確認してください。


■プロビジョニングの設定


次に、プロビジョニング(自動セットアップ)の設定を行います。

まず、以下の内容をコピーペーストをして、カレントディレクトリに provision_postgresql93.sh というファイルを作成します。
sudo rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
sudo yum install -y postgresql93 postgresql93-server postgresql93-contrib postgresql93-libs
sudo -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/9.3/data --no-locale -E utf-8 -k

sudo /sbin/chkconfig postgresql-9.3 on
sudo /sbin/service postgresql-9.3 start 
この内容は、
  1. PostgreSQL 9.3用のYumレポジトリを登録
  2. PostgreSQL 9.3のRPMをインストール
  3. initdbコマンドでデータベースクラスタを初期化
  4. PostgreSQL 9.3のサービスを自動起動するように設定
  5. PostgreSQL 9.3のサービスを起動
という流れになっています。

他のバージョン、アーキテクチャ、ディストリビューション用のPostgreSQLのYumレポジトリのRPMは以下のURLで参照できますので、適宜、自分の環境に合ったものを選んでください。
次に、Vagrantfileを開いて、config.vm.box の設定の次の行に config.vm.provision の設定を追加します。
  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "centos64"

  # 以下の行を追加
  config.vm.provision :shell, :path => "provision_postgresql93.sh"

以上でプロビジョニングの設定は完了です。この段階では、ディレクトリとプロビジョニングスクリプトの内容は以下のようになります。


■仮想マシンの起動とプロビジョニングの実行


それでは、いよいよ vagrant up コマンドでサーバを起動してみましょう。


数分経って "Machine booted and ready!" と出た後、yumによるインストールが始まって、最後に Starting postgresql-9.3 service: [ OK ] と出れば成功です。


最後に vagrant ssh コマンドでSSH接続に必要な情報を表示します。(今回はLinuxやMacOSXではないので、vagrant sshコマンドでは直接SSH接続されません。ここではPuTTYを使います)


表示された情報を使ってSSH接続し、sudo suコマンドでpostgresユーザになればPostgreSQL 9.3が使えるようになっています。


■まとめ


以上、駆け足でしたが、VagrantでPostgreSQL 9.3のセットアップをする方法をご紹介してみました。

見てお分かりいただける通り、PostgreSQLのインストールはもともと非常に簡単ですが、Vagrantを使うとさらに簡単に、またバージョンを変えたりすることも簡単にでき、開発環境、検証環境をいろいろ作ってみることも容易になると思います。

最新版のPostgreSQLには興味があるけれどまだ試していなかった方、またはVagrantそのものに興味がある、という方も、ぜひ、これを機会に最新のいろいろ試してみていただければと思います。

では、また。

0 件のコメント:

コメントを投稿