Vagrant を触り始める

完全に「乗るしかない」的なノリではありますが、エンドツーエンドテスト実行するために AWS のインスタンス立ち上げるの若干やり過ぎだなーと思ってた所だったので、ちょうど良いかもしれんという事で。ちなみに chef とか触ったことない。。

環境

Windows 7 64bit (Thinkpad X230 core i7)

BIOS でスレッド周りの設定を有効にしないと virtualbox の起動で上手くいかない場合があるかも。(VT-d だったかな。)

インストール

VirtualBox と Vagrant.msi をダウンロードしてインストールする。今だと vagrant は 1.1 系。1.1 系になるまで触った事のないゆとり。。

C:\vagrant に各種バイナリとかが配置されます。
C:\Users\<ユーザ名>\.vagrant.d に入れた box のデータとかが入る。

今回は centos6_4_x86_64 を入れました。

vagrant init まで終わってる体で。

Vagrantfile を編集する

今回は PostgreSQL 用の環境を作りたいので 5432 だけ port forward の設定しときます。ただ、ホスト側からだけ仮想環境にアクセスするならいらないですな。
接続用の IP も設定しておきます。

Vagrant.configure("2") do |config|
  config.vm.box = "centos6_4_x86_64"

  config.vm.network :forwarded_port, guest: 5432, host: 15432

  config.vm.network :private_network, ip: "192.168.33.10"
end

これで、vagrant up で立ち上げ。

仮想環境とのやり取り

仮想環境への ssh 接続は vagrant のコマンドを使って

> vagrant ssh

でいくか、普通にターミナルから localhost に対して ssh 接続すれば良い。デフォルトで vagrant ユーザが存在する。

$ ssh vagrant@localhost -p 2222

Vagrantfile があるフォルダが、仮想環境側の /vagrant にマウントされているので、ココ経由でやり取りもできます。

PostgreSQL の導入

ここらで chef でずばっと行きたい所ですが、まずは手動インストール。今回は 9.1 系を入れました。CentOS に入れる方法ググったやり方で普通にいけました。
以下で設定項目もいろいろ書いてますが、vagrant による部分はほとんど無くて pg_hba.conf の ip の部分ぐらい。

// yum でインストール
$ wget -P /tmp http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm
$ sudo rpm -ivh /tmp/pgdg-centos91-9.1-4.noarch.rpm
$ yum --disableplugin=priorities info postgresql91-server.x86_64
$ sudo yum --disableplugin=priorities install postgresql91-server.x86_64
$ psql --version

// 自動で起動するように設定
$ sudo /sbin/chkconfig --list | grep postgresql
$ sudo /sbin/chkconfig postgresql-9.1 on
$ sudo /sbin/chkconfig --list | grep postgresql
$ sudo /sbin/service  postgresql-9.1 initdb
$ sudo /sbin/service  postgresql-9.1 start

pg_hba の設定

/var/lib/pgsql/9.1/data/pg_hba.conf

以下を追加する。trust の部分はとりあえず。

host    all             all             192.168.33.0/0          trust

postgresql.conf の設定

/var/lib/pgsql/9.1/data/postgresql.conf

listen_addresses を以下のように変更する

listen_addresses = '*'

iptables の設定

今回入れた CentOS には iptables が入っているので 5432 のポートをアクセス可能にします。

vi /etc/sysconfig/iptables

以下を追加

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

ここまですれば

ホスト環境の pgAdmin から

  • ホスト:192.168.33.10
  • ポート:5432

で接続できる。(ユーザはとりあえず postgres で接続できる。)

次は

テストに必要なデータを入れて、そっからどうするかですね。sahara を使いたかったのだけど 1.1 はまだ未対応という事でちょっと残念。

参考にしたサイト