Edited at

Cloud Foundry V2 (v172)をBosh-liteで構築する(VirtualBox+Vagrant編)

More than 5 years have passed since last update.

今回はCloud Foundry V2をAll in oneでデプロイしてみます。

All in oneをデプロイするにはいくつか方法がありますが、今回はCloud Foundryが公式に提供している、Bosh-liteを使ってデプロイを試します。


前提環境

VirtualBox

Vagrant(1.4.3以上)
Ruby(1.9.3以上), Bundler

上記2つが動作するOSX,あるいはLinux

メモリ: 6GBのVMを上げられるだけの空きメモリがあること

これらの環境を予め用意しておいてください。

VirtualBoxの他に、VMWare FusionやAWSでも利用可能ですが、今回はVirtualBox前提で解説します。

また、Windows環境でも動作させることは可能ですが、今回の解説では対象外とします。


Bosh-liteのセットアップ


bosh-liteをclone

mkdir ~/workspace

cd ~/workspace
git clone git@github.com:cloudfoundry/bosh-lite.git

~/workspace を作ってcloneしてください。異なるディレクトリにすると、後々スクリプト修正が必要になってしまいます。


vagrant up

cd bosh-lite

bundle install
vagrant up --provider virtualbox


BOSHにログイン

$ bundle install

$ bosh target 192.168.50.4 lite
Target set to `Bosh Lite Director'
$ bosh login
Your username: admin
Enter password: *****
Logged in as `admin'

bundle installで必要なgemをインストールします。

--pathなどを付けずに、グローバルな領域にインストールすることをお勧めします。もし環境を汚したくないと言う場合は、rbenv等でRubyの環境を分けておきましょう。bundle install後、rbenv rehashするのを忘れずに。

インストールが終わったら、boshコマンドでログインします。

username/passwordは admin/admin です。


Routeの追加

sudo scripts/add-route


Warden Stemcellのセットアップ

wget http://bosh-jenkins-gems-warden.s3.amazonaws.com/stemcells/latest-bosh-stemcell-warden.tgz

bosh upload stemcell latest-bosh-stemcell-warden.tgz

VMやコンテナのベースになる、Stemcellをセットアップします。350MB前後あるので、少々時間がかかります。


何かうまく行かないとき

vagrant ssh -c "sudo sv restart director"

何故かboshへのログインやstemcellのアップロードが上手くいかないときは、このコマンドでboshの再起動を試しましょう。


Cloud Foundryのセットアップ


cf-releaseのcloneとセットアップ

cd ~/workspace

git clone https://github.com/cloudfoundry/cf-release
cd cf-release
git checkout v172
git submodule update --init --recursive --force

Cloud Foundryのリポジトリをworkspaceにcloneしたあと、セットアップしたいCFのバージョンをcheckoutします。


releaseのアップロード

cd ~/workspace/bosh-lite

bosh upload release ../cf-release/releases/cf-172.yml

release ymlをboshにアップロードします。チェックアウトしたcf-releaseのバージョンと、ymlのファイル名が一致している必要があります。

しばらく時間がかかるので、気長に待ちます


spiffのセットアップ

https://github.com/cloudfoundry-incubator/spiff/releases

次に、このURLから最新のspiffをダウンロードします。

OSXならば spiff_darwin_amd64.zip

Linuxならば spiff_linux_amd64.zip

をダウンロードし、解凍して出てきたspiffを、パスの通っている場所(/usr/local/bin など)にコピーし、パーミッションを755にしておきます。

(linuxでの例)

wget https://github.com/cloudfoundry-incubator/spiff/releases/download/v1.0/spiff_linux_amd64.zip

unzip spiff_linux_amd64.zip
sudo mv spiff /usr/local/bin
sudo chmod 755 /usr/local/bin/spiff


manifestの作成

./scripts/make_manifest_spiff

manifestを作成するスクリプトを実行します。spiffのセットアップができていなかったり、workspaceディレクトリ以外にbosh-liteをcloneしていると、失敗するので要注意。


CFのデプロイ

bosh deployment manifests/cf-manifest.yml

bosh deploy

長かったセットアップ作業もこれで最後です。

boshにmanifestをアップロードし、deployコマンドでデプロイを開始します。

これも30分程度時間がかかりますので、ゆっくり待ちましょう。スクリプトが流れ終わったらデプロイ完了です。


ログインしてみる


cfコマンドのセットアップ

CFにデプロイするために、cfコマンドをセットアップします。

https://github.com/cloudfoundry/cli

のDownloadsから、各OS向けのCLIインストーラがダウンロードできるので、ダウンロードしてインストールしておきます。


ログインして最初の設定を行う

cf api http://api.10.244.0.34.xip.io

cf auth admin admin
cf create-org me
cf target -o me
cf create-space development
cf target -s development

cfコマンドをインストール出来たら、上記コマンドでログインし、最初の設定を行います。この一連の作業では


  • APIエンドポイントの指定

  • ログイン

  • Orgの作成→指定

  • Spaceの作成→指定

を行っています。


アプリのデプロイ

それでは、さっそくアプリのデプロイをしてみましょう。

さきほどセットアップに利用したcf-releaseの中に、サンプルアプリケーションがあるのでそれを使ってみます。

cd ~/workspace/cf-release/src/acceptance-tests/assets/dora/

cf push dora

Sinatraで書かれた、doraというサンプルアプリをpushしました。

Showing health and status for app dora in org me / space development as admin...

OK

requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: dora.10.244.0.34.xip.io

state since cpu memory disk
#0 running 2014-07-06 09:31:09 PM 0.0% 22.4M of 256M 0 of 1G

こういう表示が出たら、デプロイ成功です。

curl dora.10.244.0.34.xip.io

Hi, I'm Dora!%

ブラウザが使える環境なら、ブラウザを使ってアプリにアクセスしてみましょう。


QA


v172以外をデプロイしたい

チェックアウトするcf-releaseのtagをデプロイしたいバージョンにして、bosh upload releaseで上げるymlも変更すれば、他のバージョンをデプロイできます。


カスタマイズしてデプロイしたい

spiffで作られたmanifestを変更することで、カスタマイズした構成でデプロイできます(といっても、All in oneで出来ることは限られますが・・・)


MySQLやPostgresなどのServiceはデプロイ出来ないの?

Service系はreleaseが分けられているため、今回の手順だけではデプロイ出来ません。Service付きのデプロイ方法は、また後日解説します。


gem install cfで入るcfコマンドは使えないの?

使えなくはないですが、Ruby CFコマンドはもうメンテされていないので、お勧めしません。

https://github.com/cloudfoundry/cli

からダウンロードできる、Go版のCFコマンドを使いましょう。


ぶっちゃけこれデプロイ面倒くさくない?

めんどいよ!

いくつか簡単にする方法はあるんですが、それはまた後日。