BOSH-lite で 1VM Cloud Foundry

17
BOSH-lite 1VM Cloud Foundry 岩嵜 雄大 @ i_yudai NTT Laboratory Software Innovation Center 2013-10-25

description

Cloud Foundry v2 環境を BOSH-lite を使用して Vagrant VM 上に構築する方法を解説します。

Transcript of BOSH-lite で 1VM Cloud Foundry

Page 1: BOSH-lite で 1VM Cloud Foundry

BOSH-lite で 1VM Cloud Foundry

岩嵜 雄大 @ i_yudai

NTT Laboratory

Software Innovation Center

2013-10-25

Page 2: BOSH-lite で 1VM Cloud Foundry

1VM Cloud Foundry の歴史

BOSH-lite の概要

Cloud Foundry のデプロイ実践

Outline

2

Page 3: BOSH-lite で 1VM Cloud Foundry

1VM Cloud Foundry の 歴史

Page 4: BOSH-lite で 1VM Cloud Foundry

Micro Cloud Foundry

– All-in-One VM イメージ

Cloud Foundry v1 時代

4

Page 5: BOSH-lite で 1VM Cloud Foundry

Micro Cloud Foundry は提供なし

cf-vagrant-installer from Altoros

• Vagrant & Chef ベース

• “cf-vagrant-installer hasn't been updated for some time (submodules)”

cf_nise_installer from NTT

• Bare metal と Vagrant VM をサポート

•最新の cf-release に追従

Cloud Foundry v2 時代

Page 6: BOSH-lite で 1VM Cloud Foundry

古くから存在は確認されていた – https://groups.google.com/a/cloudfoundry.org/d/msg/bos

h-dev/dnSJemZayjo/m60nd8umm6IJ

8月ぐらいに BOSH-lite が公開され実

用化され、最近実用レベルに

幻の Warden CPI と BOSH-lite の登場

Page 7: BOSH-lite で 1VM Cloud Foundry

BOSH-lite の概要

Page 8: BOSH-lite で 1VM Cloud Foundry

BOSH Warden CPI + Vagrant – https://github.com/cloudfoundry/bosh/tree/warden-cpi

– https://github.com/cloudfoundry/bosh-lite

– Vagrant VM 上に Lite Director を構築

• Micro BOSH 相当

• VirtualBox、VMware Fusion、AWSに対応

– VM 内に Warden CPI で子 VM 生成

• Warden CPI を使用したコンテナ VM

BOSH-lite の概要

Page 9: BOSH-lite で 1VM Cloud Foundry

ホストマシン

Vagrant VM (Micro BOSH 相当)

BOSH-Lite の構成

Warden VM DEA

Warden VM Router

Warden VM CCNG

Warden VM Login

Warden VM NATS

Warden VM Postgres

Warden VM UAA

Warden VM Log

Director

Warden CPI でコンテナを生成

BOSH CLI BOSH Lite

Page 10: BOSH-lite で 1VM Cloud Foundry

ラップトップ上でも動く BOSH 環境

– 1VM 6GB のメモリ

すべての操作が BOSH 互換

– AWS や OpenStack への移行が容易

最新の cf-release が使用できる

– cf-services-release などの混在も可能

BOSH-lite の利点

Page 11: BOSH-lite で 1VM Cloud Foundry

Cloud Foundry のデプロイ

Page 12: BOSH-lite で 1VM Cloud Foundry

Vagrantは v 1.3.4 以降をインストールしておく

– http://www.vagrantup.com/

BOSH-lite の起動

12

# 環境の準備

$ gem install bosh_cli –-pre # 1.5.0.pre $ vagrant plugin install vagrant-omnibus # bosh-lite のクローン

git clone https://github.com/cloudfoundry/bosh-lite.git # Vagrant VM 起動の準備

$ cd bosh-lite $ bundle $ librarian-chef install # Lite Director VM の起動

$ vagrant up # 起動した BOSH をターゲット(User/Password は admin/admin) $ bosh target 192.168.50.4 # IP は固定

Page 13: BOSH-lite で 1VM Cloud Foundry

通常の BOSH と同じ操作を行う

cf-release の準備

# cf-release のクローン

$ cd ~ $ git clone https://github.com/cloudfoundry/cf-release.git $ cd cf-release # サブモジュールのチェックアウト

$ ./update # 最新のコードでリリースを作成する

$ bosh –n create release # 生成したリリースを BOSH にアップロード

$ bosh upload release

Page 14: BOSH-lite で 1VM Cloud Foundry

Warden CPI 用の Stemcell を使用する

Stemcell のアップロード

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

Page 15: BOSH-lite で 1VM Cloud Foundry

Deployment Manifest の生成ツール

– https://github.com/vito/spiff

– Go 環境が必要

Spiff のインストール

# Mac の Homebrew で入れる場合 $ brew install go bzr # go get に bzr が必要

# (bzr の実行ファイルがうまく生成されないことがある?)

$ cd /usr/loca/bin $ ln -s ../share/python/bzr bzr $ export GOPATH=~/go $ export PATH=~/go/bin:$PATH $ go get github.com/vito/spiff 正しくインストールされたか確認

$ spiff

Page 16: BOSH-lite で 1VM Cloud Foundry

Deployment Manifest の生成と Deploy

# Deployment Manifest を生成

$ cf-release/generate_deployment_manifest warden ¥ bosh-lite/deployment-stub.yml > deployment.yml # Director の UUID を Manifest にセット $ vi deployment.yml # UUID に bosh status で表示される値を入力

# Deployment をセット

$ bosh deployment deployment.yml # Deploy $ bosh deploy

Page 17: BOSH-lite で 1VM Cloud Foundry

17VM

Deploy 結果

$ bosh vms +------------------------------------+---------+---------------+-------------+ | Job/index | State | Resource Pool | IPs | +------------------------------------+---------+---------------+-------------+ | api_z1/0 | running | large_z1 | 10.244.1.10 | | ha_proxy_z1/0 | running | router_z1 | 10.244.0.34 | | hm_z1/0 | running | medium_z1 | 10.244.1.14 | | loggregator_trafficcontroller_z1/0 | running | small_z1 | 10.244.0.10 | | loggregator_trafficcontroller_z2/0 | running | small_z2 | 10.244.2.10 | | loggregator_z1/0 | running | small_z1 | 10.244.0.14 | | loggregator_z2/0 | running | small_z2 | 10.244.2.14 | | login_z1/0 | running | medium_z1 | 10.244.1.6 | | logs_z1/0 | running | medium_z1 | 10.244.0.2 | | logs_z2/0 | running | medium_z2 | 10.244.2.2 | | nats_z2/0 | running | medium_z2 | 10.244.2.6 | | postgres_z1/0 | running | large_z1 | 10.244.0.30 | | router_z1/0 | running | router_z1 | 10.244.0.22 | | router_z2/0 | running | router_z2 | 10.244.2.22 | | runner_z1/0 | running | runner_z1 | 10.244.0.26 | | taskmaster_z1/0 | running | runner_z1 | 10.244.1.18 | | uaa_z1/0 | running | large_z1 | 10.244.1.2 | +------------------------------------+---------+---------------+-------------+ VMs total: 17