Vagrant で Windows に Postgres on CentOS 環境を構築

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

をベースにもう少し設定したので、忘備録として。

事前準備

コンソール

Windows の標準コマンドプロンプトだと色々ツライ。個人的に今は cmder を使用中。

cmder | Console Emulator

仮想環境

おなじみ virtualbox

Oracle VM VirtualBox

Vagrant のインストール

Download Vagrant - Vagrant から Windows インストーラをダウンロードしてインスコ

λ vagrant -v
Vagrant 1.6.2

とパス通ってることを確認。

Vagrant box を追加

A list of base boxes for Vagrant - Vagrantbox.es からベースとなる box を選択。

λ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box

Vagrantfile を作成

λ mkdir c:\postgres93
λ cd c:\postgres93
λ vagrant init

Vagrantfile を編集

# 利用する box の名前
config.vm.box = "centos64"
# プロビジョニングに使用するシェル
config.vm.provision :shell, :path => "provision_postgresql93.sh"
# Windows 側からアクセスする IP
config.vm.network "private_network", ip: "192.168.33.10"

と、編集(コメントを外す)しておきます。

プロビジョニングシェルを用意

以下のファイルを Vagrantfile を同じディレクトリに用意しておきます。

# Yumレポジトリを登録
sudo rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm

# RPMをインストール
sudo yum install -y postgresql93 postgresql93-server postgresql93-contrib postgresql93-libs

# initdbコマンドでデータベースクラスタを初期化
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

# postgresql.conf の設定
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /var/lib/pgsql/9.3/data/postgresql.conf
sudo sed -i "s/#port = 5432/port = 5432/"                               /var/lib/pgsql/9.3/data/postgresql.conf
sudo sed -i "s/timezone = 'UTC'/timezone = 'Asia/Tokyo'/"               /var/lib/pgsql/9.3/data/postgresql.conf

# pg_hba.conf の設定
echo 'host    all             all             0.0.0.0/0               trust' | sudo tee -a /var/lib/pgsql/9.3/data/pg_hba.conf

# 再起動
sudo /sbin/service postgresql-9.3 restart

# F/W の設定
sudo perl -pi -e 's/--dport 22 -j ACCEPT/--dport 22 -j ACCEPT\n-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT/' /etc/sysconfig/iptables
sudo /etc/rc.d/init.d/iptables restart

# MAC アドレスマッピングを無効化
sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

環境を作成する

λ vagrant up

で、実際に box から仮想環境起動、ポスグレインストールし、あとは

λ vagrant ssh

で中に入って、 psql でデータベース作ればおk。ホスト Windows 側から pgadmin とかで 192.168.33.10:5432 に繋いで確認する。

更に

λ vagrant plugin install sahara
λ vagrant sandbox on

と、プラグイン sahara を入れておくと、いつでも

λ vagrant sandbox rollback

で戻れるから便利です。