17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-07-06

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

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

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

17
16
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?