: O. Yuanying

Nise-BOSH で 1VM Cloud Foundry の構築

CloudFoundry という PaaS 環境を自分で作れるオープンソースがあるのだが、 いかんせんそれを構築しようとすると、IaaS が必要だったり、 古いバージョンしかインストールできなかったりと気軽に最新バージョンを試すための環境を作るのがめんどくさい。

ところがつい最近、Nise-BOSH という、 気軽に Cloud Foundry のコンポーネントのインストールを試すことができるツールが出てきたので、 それを使って 1VM 上に Cloud Foundry の必須コンポーネントを全部インストールしてやって、 実際に動作する Cloud Foundry を 1VM で構築してみた。

環境

試した環境は、MacBook Air 11-inch, Late 2010 @ 4GB 上に Vagrant で構築した、 こんな構成。

  • OS: Ubuntu 10.04 LTS (Lucid Lynx) 64 bit
    • http://files.vagrantup.com/lucid64.box
  • Memory: 2048 MB
  • IP Address: 192.168.33.10
  • HDD: 10GB
  • Ruby: ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]

インストールするコンポーネント

本当は、以下を説明する前に BOSH とはなんぞやとかそのような説明をするのが筋と言うものだと思うが、 面倒なので割愛する。slideshare に すごいBOSHたのしく学ぼう という資料があがってるのでそれですべてを理解してもらいたい。

理解したなら、Cloud Foundry には cf-release という BOSH 用のレシピが公開されていて、 そのレシピ中の以下の Job Template をインストールすれば、 Cloud Foundry が構築されるということを把握できているはずであろう。

  • potgres
  • vcap_redis
  • nats
  • uaa
  • cloud_controller_ng
  • serialization_data_server
  • dea_next
  • gorouter
  • health_manager_next

以降の操作はすべて Vagrant で起動した VM 上で root でおこなう。 だって頻繁に root 権限が必要になって面倒なのですもの。

Nise-BOSH のインストール

本来ならば、本物の BOSH を利用して cf-release をインストールするのが手順なのだが、 そのためには aws やら OpenStack などが必要になってくるので、 自分の PC 上に Cloud Foundry をインストールするために OpenStack をインストールするだとかよくわからない行動をとることになってしまいがち。

そこで Nise-BOSH ですよ。

apt-get install debootstrap runit
cd /vcap
git clone https://github.com/nttlabs/nise_bosh.git
cd ./nise_bosh
git remote add yuanying https://github.com/yuanying/nise_bosh.git
git fetch yuanying
git checkout -b multi-monitrc-spike yuanying/multi-monitrc-spike
bundle install
./bin/init
reboot

以上で Nise-BOSH のインストールが完了。vap ユーザの作成や必須パッケージがインストールされて、 Cloud Foundry がインストールされる準備が整う。

ちなみに、本家の Nise-BOSH を利用しても良いのだが、 今のところ本家では複数の Job Template を 1VM にインストールすることを想定していないので、 複数 Job Template のインストールに対応しているブランチを利用することにした。

Cloud Foundry のインストール

リリースの作成

Cloud Foundry のインストールの前に、cf-release というリリースのソースから、 リリースを作成する必要がある。

cf-release は本家のものを使いたいところだが、1VM で動くことを考えていないのかわからないが、 そのまま使うとうまくインストールできないため、 これまたワタクシ作成のパッチを適用してあげたものを利用する。

cd /vcap
git clone https://github.com/cloudfoundry/cf-release.git
cd ./cf-release
git remote add yuanying https://github.com/yuanying/cf-release.git
git pull yuanying master
./update
gem install bosh_cli
bosh create release --force

リリースをダウンロードした後に、bosh create release でリリースを作成した。

インストール

BOSH はシステムの構築のために、リリースと、Deployment Manifest という、 そのシステムをどういう構成で構築するのかの情報を記述したファイルを必要とする。

今回はとりあえず 1VM で動くための Deployment Manifest を用意したのでそれを利用する。 ドメインは自分の利用したいドメインに修正すること。xip.io を使うと便利かもしれない。

ダウンロードした Deployment Manifest を、 micro-ng.yml という名前で保存した後に、nise_bosh コマンドで Cloud Foundry の各コンポーネントをインストールする。

cd /vcap/nise_bosh
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 postgres
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 nats
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 gorouter
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 dea_next
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 health_manager_next
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 cloud_controller_ng
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 serialization_data_server
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 uaa
yes | bundle exec ./bin/nise-bosh /vcap/cf-release /vcap/micro_ng.yml -n 127.0.0.1 vcap_redis

使ってみる

インストールした Cloud Foundry を、以下のコマンドで実行する。

cd /vcap/nise_bosh

mkdir -p /var/vcap/shared
chown vcap:vcap /var/vcap/shared
mkdir -p /var/vcap/store

./bin/run-job start postgres
./bin/run-job start nats
./bin/run-job start gorouter
./bin/run-job start dea_next
./bin/run-job start health_manager_next
./bin/run-job start cloud_controller_ng
./bin/run-job start serialization_data_server
./bin/run-job start uaa
./bin/run-job start vcap_redis

メールアドレス micro@vcamp.me、パスワード micro というアカウントができているので、 適当なクライアントで試せます。起動して安定するまで時間がかかるので、コーヒーを一杯飲んでから試すのが良いかもしれない。

cf target http://api.192.168.33.10.xip.io
cf login micro@vcap.me