技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

サービスデプロイのテスト環境を作るか

そろそろアプリをデプロイしようかと思ったのだけど、実はここで一つ問題が発生。

いや、問題と言うほどの問題ではないのかもしれないが、どうせ試行錯誤してセキュリティ的にアレな状態がそこそこ長く続きそうなので、仮想環境できちっと手段を確立してからいこうかと思った。

加えて言えば、人の手では実行速度に難があるので、Chef と Vagrant で手段をローカルに確立しようと思っただけ。

Ubuntu13.10 がホスト環境。

まずは vagrant, virtualbox の最新をインストール。

http://www.vagrantup.com/

https://www.virtualbox.org/

次は chef と chef solo を突っ込もう。

まずは Ruby だ。

sudo apt-get install build-essential bison libreadline6-dev curl git-core zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libncurses5-dev -y

次は rbenv 突っ込む

$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ vi ~/.bashrc

# add follow lines to tail
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

source コマンドで .bash_profile 読み込めばOK

Ruby の 1.9 系最新を突っ込む。

rbenv install --list で 1.9 系の最新を探す。とりあえずこのドキュメント執筆時に 1.8.3-p545 だったのでそれを入れる。

$ rbenv install 1.9.3-p545
$ rbenv rehash
$ rbenv global 1.9.3-p545
$ ruby --version
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]

次は Chef か。

公式(http://www.getchef.com/)から落としてみる

$ sudo install bundler -y
$ gem update
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
$ knife configure

# 適当に yes マンしとけばいいよ

$ gem install knife-solo

Chef 使うなら berkshelf はないとやってられん。 ついでに omnibus 突っ込もう。

$ gem install berkshelf
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-berkshelf --plugin-version 2.0.0.rc3

で、肝心の CentOS のイメージはっと、、、、グハァ

手持ちの運用鯖が CentOS 5.10 で、VirtualBox 向けの box が現状(このテキスト書き込み時)なかったという。

http://www.vagrantbox.es/

しゃーないから CentOS 公式 から落としてコンソールモードで VirtualBox イメージを作成。

  • VirtualBox 上での名称 : CentOS5.10(Final)
  • テキストモードでインストール(最小構成)
  • IPv6 無効
  • root パスワード: "vagrant"

Vagrant 仕様にしようか

まずは update

 $ yum update
 $ reboot

そしたら GuestAdditions だけ突っ込む。 メニューから、GuestAdditions を入力して。

$ yum install gcc gcc-c++ automake autoconf make kernel-devel
$ mount /dev/cdrom /mnt
$ sh /mnt/VBoxLinuxAdditions.run

インストールが完了したら

$ yum remove gcc gcc-c++ automake autoconf make
$ yum remove kernel-devel kernel-headers

sudo にパスワードは邪魔になるので排除

$ visudo

%wheel ALL=(ALL) NOPASSWD:ALL

vagrant アカウント(パスは vagrant)を作って

 $ adduser vagrant
 $ passwd vagrant
 $ gpasswd -a vagrant wheel
 $ mkdir /home/vagrant/.ssh
 $ chmod 700 /home/vagrant/.ssh
 $ cd /home/vagrant/.ssh
 $ curl 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' > authorized_keys
 $ chown -R vagrant:vagrant /home/vagrant/.ssh

おまじない

 $ dd if=/dev/zero of=/EMPTY bs=1M
 $ rm /EMPTY

そしたらゲストOS側は終了して Box 化する

 vagrant package --base 'CentOS5.10(Final)'

すると package.box が出来上がる。

ということで作った box は dropbox で公開。

https://dl.dropboxusercontent.com/u/717203/centos5.10-final.box

サイズは 450M 位で、VirtualBox のみ対応。Chef とか諸々は入ってない。 使い方

vagrant init cent https://dl.dropboxusercontent.com/u/717203/centos5.10-final.box
vagrant up

地味に疲れたので Chef 書くのは後日。

Good luck!!

6/23 追記:メンテナンスだるいので削除しました