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

  • 16
    いいね
  • 3
    コメント
この記事は最終更新日から1年以上が経過しています。

今回は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コマンドを使いましょう。

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

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