41
i COPYRIGHT FUJITSU LIMITED 2014 ※本資料は CloudStack Advent Calendar 2014 16 日目のエントリです。 CloudFoundry 2 on Apache CloudStack 4.2.1 Powered by 富士通株式会社 OSS 技術センター はじめに 本資料は、Apache CloudStack 4.2.1 の上に CloudFoundry 2 環境を構築した際の手順メモです。 本手順は以下の環境を想定しています。 クラウド基盤 Cloudstack Ver4.2.1 VM Ubuntu 12.04 ストレージ領域 プライマリストレージ:約 350GB セカンダリストレージ:約 150GB また、本手順では、特に指定がない限り管理者(root)を使用しています。

CloudFoundry 2 on Apache CloudStack 4.2.1

Embed Size (px)

Citation preview

Page 1: CloudFoundry 2 on Apache CloudStack 4.2.1

i

COPYRIGHT FUJITSU LIMITED 2014

※本資料は CloudStack Advent Calendar 2014の 16日目のエントリです。

CloudFoundry 2 on Apache CloudStack 4.2.1

Powered by 富士通株式会社 OSS技術センター

はじめに

本資料は、Apache CloudStack 4.2.1の上に CloudFoundry 2環境を構築した際の手順メモです。

本手順は以下の環境を想定しています。

クラウド基盤 Cloudstack Ver4.2.1

VM Ubuntu 12.04

ストレージ領域 プライマリストレージ:約 350GB

セカンダリストレージ:約 150GB

また、本手順では、特に指定がない限り管理者(root)を使用しています。

Page 2: CloudFoundry 2 on Apache CloudStack 4.2.1

1

COPYRIGHT FUJITSU LIMITED 2014

1. 前提

CloudFoundry環境を動作させる(構築する)環境として、以下をあらかじめ準備しておく。

・CloudStack環境(KVM使用)

・UbuntuOS イメージ(Ver12.04)

・以下のコンピュータオファリング

○ コンピュータオファリング

コンピュータオファリング名 CPU メモリ

m1.small 1core 500MB

m1.medium2 1core 2GB

m1.large 2core 2GB

m1.large2 2core 4GB

○ ディスクオファリング

ディスクオファリング名 サイズ

disk2gb 2GB

disk10gb 10GB

disk20gb 20GB

Page 3: CloudFoundry 2 on Apache CloudStack 4.2.1

2

COPYRIGHT FUJITSU LIMITED 2014

2. インセプションサーバの構築

CloudFoundryのインストールにあたり、BOSHによるデプロイを行うための最初の BOSH(Micro BOSH)サー

バ(インセプションサーバ)を Cloudstack上に UbuntuVM を起動して構築する。

2.1. Ubuntu イメージの起動

あらかじめ Cloudstack上に準備した Ubuntu12のイメージを利用してインセプションサーバとなる Ubuntu

の VMを起動する。

※使用コンピュータオファリング:m1.small

2.2. インセプションサーバ上での各設定変更

起動した Ubuntuの VM上で、以下の各設定を行う。

2.2.1. root ログイン設定

インセプションサーバに rootユーザでのログインとリモートでの root ログイン許可の設定を行う。

(1) rootでログインし、パスワードの設定を行う。

$ sudo su –

# passwd

(2) rootでの ssh接続を許可する設定

設定ファイル(sshd_config)を修正。

# vi /etc/ssh/sshd_config

PermitRootLogin without-password

PermitRootLogin yes

-----

#PasswordAuthentication yes

PasswordAuthentication yes

(3) 設定更新

上記修正後プロセス再起動。

# initctl restart ssh

Page 4: CloudFoundry 2 on Apache CloudStack 4.2.1

3

COPYRIGHT FUJITSU LIMITED 2014

2.2.2. 内部作業領域のサイズ拡張

作業時に内部で使用される領域(/tmp)に対して、領域不足にならないようにあらかじめ Cloudstack上で

ストレージを作成しアタッチ・マウントしておく。

(1)ストレージの作成

アタッチするストレージ(20GB)を GUIから作成しアタッチする。

(2)領域のマウント

作成したストレージを/tmpにマウントする。

# mount /dev/vdb /tmp

※ アタッチしたボリュームが/dev/vdbの場合

メモ:

参考インストール手順のインセプションサーバのデフォルト設定では、当該作業領域の容量不足により内部

処理でエラーが発生していたため、上記設定を追加することで対応を行っている。

2.2.3. プロキシサーバの設定

必要に応じて、以下のコマンドを例に、インセプションサーバの環境変数(http_proxy、https_proxy)へ

プロキシサーバを設定する。

設定例)

export http_proxy=http://{Proxy Server}:{Port}

export https_proxy=http:// {Proxy Server}:{Port}

2.3. インセプションサーバへのインストール

2.3.1. パッケージリポジトリの追加と upgradeの実行

apt-get実行用に、Japanese Teamのパッケージリポジトリを以下のコマンドを例に追加する。

# wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo

apt-key add -

# wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-

key add -

# wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sou

rces.list.d/ubuntu-ja.list

# apt-get update

Page 5: CloudFoundry 2 on Apache CloudStack 4.2.1

4

COPYRIGHT FUJITSU LIMITED 2014

パッケージの更新(upgrade)を行う。

# apt-get upgrade

2.3.2. acpiphp カーネルモジュールのアクティブ化

以下のコマンドを例に、acpiphp カーネルモジュールのアクティブ化を行う。

# modprobe acpiphp

# sh -c "echo acpiphp >> /etc/modules"

2.3.3. 関連ツールのインストール

必要となる関連ツール(パッケージ)のインストールを以下のコマンドを例に行う。

(1) git インストール

# apt-add-repository ppa:git-core/ppa

# apt-get update

# sudo apt-get install git-core

(2) Ruby、Gems関連の事前インストール

# apt-get install g++ make libxslt-dev libxml2-dev libsqlite3-dev zlib1g-dev l

ibreadline-dev libssl-dev libcurl4-openssl-dev

(3) stemcell関連のインストール

# apt-get install libsqlite3-dev genisoimage libmysqlclient-dev libpq-dev debo

otstrap kpartx

2.3.4. Ruby インストール

(1) プロキシサーバの設定

git インストールのために以下のコマンドを例にプロキシサーバを gitの configに設定する。

# git config --global http.proxy http://mp067159:[email protected]

itsu.com:8080/

# git config --global https.proxy http://mp067159:[email protected]

jitsu.com:8080/

Page 6: CloudFoundry 2 on Apache CloudStack 4.2.1

5

COPYRIGHT FUJITSU LIMITED 2014

(2) rbenvのインストール

rbenvおよび関連パッケージを以下のコマンドを例にインストールする。

# apt-get install build-essential bison libreadline6-dev curl git-core zlib1g-

dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev aut

oconf libncurses5-dev

# git clone http://github.com/sstephenson/rbenv.git .rbenv

# git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rub

y-build

(3) profileの設定

rbenvを使うために必要な設定を ~/.bash_profile に記述する。

$ vi ~/.bash_profile

export PATH="$HOME/.rbenv/bin:$PATH"

eval "$(rbenv init -)"

保存後に反映する。

$ source ~/.bash_profile

(4) Ruby インストール

rbenvを利用し、Rubyのインストールリストを表示する。

# rbenv install --list

リストされたバージョンを参照して Rubyのインストールを行う。

# rbenv install 1.9.3-p547

# rbenv global 1.9.3-p547

# ruby --version

ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

Page 7: CloudFoundry 2 on Apache CloudStack 4.2.1

6

COPYRIGHT FUJITSU LIMITED 2014

3. BOSH インストール

3.1. BOSHのインストールと MicroBOSHの実行

3.1.1. BOSHのインストール

以下のコマンドを例に、gitを使用して Boshのインストールを行う。

# git clone https://github.com/cloudfoundry-community/bosh-cloudstack-cpi.git

~/bosh

# cd ~/bosh

3.1.2. 依存 gemのインストール

以下のコマンドを例に、依存 gemをインストールする

# gem install bundler

# bundle

3.1.3. stemcellの作成

メモ:

stemcell(用 VMイメージ)は、公開手順では公開済みイメージをダウンロードし使用するように記述されて

いるが、同イメージは使用できないため独自に用意する必要あり。(AWS 向け、Hper-V 向け、Openstak

向け等の stemcell は公開されているものがいくつもあるが、Cloustack 向けは上記手順指定の古いも

の 2つ以外にはない)

また公開手順にはstemcellの作成コマンドも記述されているが、実際には使えないため、Openstack用

ドキュメントやソース等を参考に以下の手順を作成した。

(1) ベースイメージ作成

Boshで使用する VM イメージ(stemcell)を作成する。

# bundle exec rake stemcell:build_os_image[ubuntu,precise,/tmp/ubuntu_base_im

age.tgz]

オプション説明:ubuntu … OS名を指定する。

:precise … OSのバージョンを指定(ubuntuの場合、preciseや lucid)

:/tmp/ubuntu_base_image.tgz … 作成ファイル名

(2) ソース(bosh-stemcell)内のカーネルバージョン指定箇所修正

上記コマンドで一時的に作成されるイメージファイル作成用ディレクトリ(/mnt/stemcells/null/null/

ubuntu/work/work/chroot)もしくは作成した圧縮イメージファイル内の「/boot」内に格納されているカ

Page 8: CloudFoundry 2 on Apache CloudStack 4.2.1

7

COPYRIGHT FUJITSU LIMITED 2014

ーネルファイル(initrd.img-xxx-virtual、vmlinuz-xxx-virtual)のバージョンを確認し、/root/

bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rb の 3行目から 14行目(desc

ribe ~ end まで)に記載されている各カーネルバージョンを確認したバージョンに合わせて修正する。

# ls /mnt/stemcells/null/null/ubuntu/work/work/chroot/boot

System.map-3.2.0-70-virtual config-3.2.0-70-virtual initrd.img-3.2.0-70-vir

tual

abi-3.2.0-70-virtual grub vmlinuz-3.2.0-70-virtual

※作成した ubuntuのカーネルバージョンが「3.2.0-70」であることを確認

# vi /root/bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rb

(略)

describe 'Ubuntu 12.04 stemcell', stemcell_image: true do

context 'installed by image_install_grub' do

describe file('/boot/grub/grub.conf') do

it { should be_file }

it { should contain 'default=0' }

it { should contain 'timeout=1' }

it { should contain 'title Ubuntu 12.04.5 LTS (3.2.0-68-virtual)' }

it { should contain ' root (hd0,0)' }

it { should contain ' kernel /boot/vmlinuz-3.2.0-68-virtual ro root=UUI

D=' }

it { should contain ' selinux=0' }

it { should contain ' initrd /boot/initrd.img-3.2.0-68-virtual' }

end

(略)

↓ 以下のように修正

(略)

describe 'Ubuntu 12.04 stemcell', stemcell_image: true do

context 'installed by image_install_grub' do

describe file('/boot/grub/grub.conf') do

it { should be_file }

it { should contain 'default=0' }

it { should contain 'timeout=1' }

it { should contain 'title Ubuntu 12.04.5 LTS (3.2.0-70-virtual)' }

it { should contain ' root (hd0,0)' }

Page 9: CloudFoundry 2 on Apache CloudStack 4.2.1

8

COPYRIGHT FUJITSU LIMITED 2014

it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUI

D=' }

it { should contain ' selinux=0' }

it { should contain ' initrd /boot/initrd.img-3.2.0-70-virtual' }

end

(略)

(3) stemcell イメージの作成

以下のコマンドを実行し、(1)で作成したベースイメージから stemcell イメージを生成する。

# bundle exec rake stemcell:build_with_local_os_image[cloudstack,ubuntu,preci

se,ruby,/tmp/ubuntu_base_image.tgz]

3.1.4. Proxyサーバの非参照設定

内部のローカルアドレス(インセプションサーバやインセプションサーバから起動される Firstboshサーバ)を

Proxyサーバなしで参照するように「no_proxy」環境変数を指定する。

# export no_proxy=172.16.10.224,172.16.10.227,172.16.10.228

※管理サーバの IP、ルータ VMの IP とインセプションサーバ自身の IPを除外対象に指定

3.1.5. キーペアファイルの作成

(1) スクリプトファイル作成

Cloudstack の API を使用して SSH キーペアファイルを作成するため、以下のスクリプトファイルを作成す

る。

メモ:

公開手順にあるキーペア作成用スクリプトは正常に動作しなかったため、以下のスクリプトを独自に作成し

てキーペアファイル作成を行っている。

# cat kick_api.sh

-----------------------------------------

#!/bin/bash

#

# kick_api.sh

#

# please set your host

address="http://172.16.10.224:8080" # Cloudstack管理サーバの URL

# please set your api key (CloudStackGUIであらかじめ作成しておく)

Page 10: CloudFoundry 2 on Apache CloudStack 4.2.1

9

COPYRIGHT FUJITSU LIMITED 2014

api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5

WaJZNPwY0o1Y_ORP2A"

# please set your secret key(CloudStackGUIであらかじめ作成しておく)

secret_key="oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWL

uM9OOdnCEtyVpPy02rOkg"

api_path="/client/api?"

if [ $# -lt 1 ]; then

echo "usage: $0 command=... paramter=... parameter=..."; exit;

elif [[ $1 != "command="* ]]; then

echo "usage: $0 command=... paramter=... parameter=..."; exit;

elif [ $1 == "command=" ]; then

echo "usage: $0 command=... paramter=... parameter=..."; exit;

fi

data_array=("$@" "apikey=${api_key}")

temp1=$(echo -n ${data_array[@]} | ¥

tr " " "¥n" | ¥ sort -fd -t'=' | ¥

perl -pe's/([^-_.~A-Za-z0-9=¥s])/sprintf("%%%02X", ord($1))/seg'| ¥

tr "A-Z" "a-z" | ¥ tr "¥n" "&" )

signature=$(echo -n ${temp1[@]})

signature=${signature%&}

signature=$(echo -n $signature | ¥

openssl sha1 -binary -hmac $secret_key | ¥

openssl base64 )

signature=$(echo -n $signature | ¥

perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg')

url=${address}${api_path}$(echo -n $@ | tr " " "&")"&"apikey=$api_key"&"signat

ure=$signature

echo " SEND URL: $url"

curl ${url}

(2) キーペア作成

上記で作成したスクリプトファイルを以下のコマンドのとおりに実行し、キーペアを作成する。(name=はキー名

として任意の名前を指定可能)

コマンド:./kick_api.sh command=createSSHKeyPair name=<キー名>

例)

Page 11: CloudFoundry 2 on Apache CloudStack 4.2.1

10

COPYRIGHT FUJITSU LIMITED 2014

# ./kick_api.sh command=createSSHKeyPair name=cfmykey

SEND URL: http://172.16.10.224:8080/client/api?command=createSSHKeyPair&name

=cfmykey&apikey=QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKI

vmx4Ok5WaJZNPwY0o1Y_ORP2A&signature=gPmSPYqd2fIaSf5%2BX2K%2FvEdgaD8%3D

<?xml version="1.0" encoding="UTF-8"?><createsshkeypairresponse cloud-stack-v

ersion="4.2.1"><keypair><privatekey>-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCqPLtCyjC3GeLwJODEI9eJLnaanRzxpvU2BWfuUTMem5/s8hwe

FN2cr7ZC5deW9cR1P394OFtWVarOdvDymHntUsZeJMxGY3ad5WlNL5OBLy1aqSIk

T7p7S7ZHfFpEZ8Qx6M13E3xc27T9o+DJMPV300vjSL3sJy+vAcrIGyusQQIDAQAB

AoGAE/mwV3P2J2YINPl+zkUOY3BqRlYtMUXP/BjCSzqH7w1/xIPcPMNiBaKwlkT1

+Sa5eLCMuoSSYx0GP9fBChZOKBPScMrC/77s03U8lLDSaDPid45st8U9dQy6Id97

ny1D3+hU2NNvaVPCZYqtvsGhhLhQ3Hj7YnmbqEJN7I8pTUkCQQDRXknbOkjjm1uX

rqter6jU8r1TS9a3HpJIgbxWD+9qNZmBDJJIb7dB+6NXg3/oljJynB48LRgDlU5Y

cfwCAGlTAkEA0CdGyBRFNWaqKpLR1wugN0CPDrh4AkwSOCne64ReJiLDaLohcCjr

ASHF/ShwyQ/lX/fZfo4u/Nld3c5IO9ydmwJBAK024Muq8Nq9kY1wSP9RPNDQ8qmT

ONTPSh8KlpJtJJouNg16JRwgsPC6C20/sfbvLFV9q9YFSLTONb8ermvJg1kCQCsw

WxFck1eXK6uVtxBliyKrtIMbZ1siqY0ZsvUvC9Hh2KW8KP/6nXgop8n1QCGXuMIG

zQvjOICiIUXKbVZuWg0CQEqhaJ1xWZkxd2EuDcPr+JPBJSS/DyOOtdqNQBTpoJLz

fVkHNwwStJIU4x9/CULbRtvqedyTsIYmnfSKWZtoVJ0=

-----END RSA PRIVATE KEY-----

</privatekey><name>cfmykey</name><fingerprint>db:12:1e:5c:79:0c:ba:06:35:51:7

e:4c:21:a9:c9:94</fingerprint></keypair></createsshkeypairresponse>root@ubunt

u14:~#

(3) キーファイル保存

表示された実行結果の「-----BEGIN RSA PRIVATE KEY-----」から「-----END RSA PRIVATE KEY-

----」の間の内容について、キーファイルを作成して保存する。

# vi /root/cfmykey

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCqPLtCyjC3GeLwJODEI9eJLnaanRzxpvU2BWfuUTMem5/s8hwe

FN2cr7ZC5deW9cR1P394OFtWVarOdvDymHntUsZeJMxGY3ad5WlNL5OBLy1aqSIk

T7p7S7ZHfFpEZ8Qx6M13E3xc27T9o+DJMPV300vjSL3sJy+vAcrIGyusQQIDAQAB

AoGAE/mwV3P2J2YINPl+zkUOY3BqRlYtMUXP/BjCSzqH7w1/xIPcPMNiBaKwlkT1

+Sa5eLCMuoSSYx0GP9fBChZOKBPScMrC/77s03U8lLDSaDPid45st8U9dQy6Id97

ny1D3+hU2NNvaVPCZYqtvsGhhLhQ3Hj7YnmbqEJN7I8pTUkCQQDRXknbOkjjm1uX

rqter6jU8r1TS9a3HpJIgbxWD+9qNZmBDJJIb7dB+6NXg3/oljJynB48LRgDlU5Y

Page 12: CloudFoundry 2 on Apache CloudStack 4.2.1

11

COPYRIGHT FUJITSU LIMITED 2014

cfwCAGlTAkEA0CdGyBRFNWaqKpLR1wugN0CPDrh4AkwSOCne64ReJiLDaLohcCjr

ASHF/ShwyQ/lX/fZfo4u/Nld3c5IO9ydmwJBAK024Muq8Nq9kY1wSP9RPNDQ8qmT

ONTPSh8KlpJtJJouNg16JRwgsPC6C20/sfbvLFV9q9YFSLTONb8ermvJg1kCQCsw

WxFck1eXK6uVtxBliyKrtIMbZ1siqY0ZsvUvC9Hh2KW8KP/6nXgop8n1QCGXuMIG

zQvjOICiIUXKbVZuWg0CQEqhaJ1xWZkxd2EuDcPr+JPBJSS/DyOOtdqNQBTpoJLz

fVkHNwwStJIU4x9/CULbRtvqedyTsIYmnfSKWZtoVJ0=

-----END RSA PRIVATE KEY-----

3.1.6. マニフェストファイルの作成

インセプションサーバから最初の BOSH サーバ(firstbosh)をデプロイする際に使用するマニフェストファイ

ル(micro_bosh.yml)を作成する。

・micro_bosh.yml ファイルを準備します

# mkdir -p ~/deployments/firstbosh

# vi ~/deployments/firstbosh/micro_bosh.yml

メモ:

以下のマニフェスト作成において、公開手順ではわからなかったものや変更を加えた部分は以下。

・networkの ipにインセプションサーバの ipを指定

・endpointの URL指定で/client/api をアドレスに付与して指定

・default_security_groupsでセキュリティグループ名を[""]で括って指定する。

・指定するセキュリティグループは、TCP、UDPでの全ての通信が可能になっている必要あり。

※上記は全てデフォルトで発生したエラーから判断し、ソースや Openstack用マニュアルを参考に確認し

たもの

以下の内容で作成する。

name: firstbosh

logging:

level: DEBUG

network:

type: dynamic

ip: 172.16.10.227

#インセプションサーバの IPアドレス

Page 13: CloudFoundry 2 on Apache CloudStack 4.2.1

12

COPYRIGHT FUJITSU LIMITED 2014

resources:

persistent_disk: 20512

cloud_properties:

instance_type: m1.large2

# VM タイプ(コンピュータオファリング)

cloud:

plugin: cloudstack

properties:

cloudstack:

endpoint: http://172.16.10.224:8080/client/api

# Cloudstackの管理サーバのアドレスに、/client/api を付与したものを指定

api_key: QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx

4Ok5WaJZNPwY0o1Y_ORP2A

# キーペア作成時に指定したもの

secret_access_key: oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT

2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg

# キーペア作成時に指定したもの

default_key_name: cfmykey

# キーペア作成時に指定したキーペア名

private_key: /root/cfmykey # キーペア作成時に出力内容を保存したキーファイル名

state_timeout: 600

state_timeout_volume: 1200

stemcell_public_visibility: true

default_zone: zone01 # Zone name of your instaption server

# Only for Basic Zone users. Delete these lines on Advanced Zone

default_security_groups: ["default"]

# TCP、UDPでの全ての通信が可能なセキュリティグループ名を[""]で括って指定

registry:

endpoint: http://admin:[email protected]:25889

# インセプションサーバの IPを指定

user: admin

password: admin

Page 14: CloudFoundry 2 on Apache CloudStack 4.2.1

13

COPYRIGHT FUJITSU LIMITED 2014

3.1.7. ソースコードの修正

(1) デバイスアタッチ処理関連

メモ:

デバイス名の仕様の違いから、デフォルトのモジュールではデバイスアタッチ時にエラーが発生するため、

ソースを修正しエラーが発生しないように対応

デバイスアタッチの不具合対応として、以下のソースコードの修正を行っておく。

ファイル名:~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb

コード最下部の以下の部分を修正

-----------------------------------------

def volume_device_name(device_id)

# assumes device name begins with "dev/sd" and volume_name is numeric

cloud_error("Unkown device id given") if device_id.nil?

suffix = ('a'..'z').to_a[device_id]

cloud_error("too many disks attached") if suffix.nil?

"/dev/sd#{suffix}"

end

-----------------------------------------

↓以下に修正

-----------------------------------------

def volume_device_name(device_id)

# assumes device name begins with "dev/sd" and volume_name is numeric

cloud_error("Unkown device id given") if device_id.nil?

suffix = ('a'..'z').to_a[device_id-1]

cloud_error("too many disks attached") if suffix.nil?

"/dev/vd#{suffix}"

end

-----------------------------------------

メモ:

ソースコードは virtio 前提ではないため、virtio でのディスクアタッチに合うようにデバイス名を取得す

る部分で「-1」している

Page 15: CloudFoundry 2 on Apache CloudStack 4.2.1

14

COPYRIGHT FUJITSU LIMITED 2014

(2) stemcellテンプレート VMのイメージサイズ変更

stemcell はクラウドにテンプレート登録する際に rsync されるので、その時点でルートのサイズを決められ

る。以下のソース修正をすることで、使用するストレージ領域の状況に合わせて stemcell テンプレートのイ

メージサイズを調整することが可能。

■ firstbosh(MicroBOSH)の VMサイズ変更方法

# vi ~/bosh/bosh_cloudstack_cpi/lib/cloud/cloudstack/cloud.rb

100行目:

# disk_size = stemcell_properties["disk"] || (1024 * 10)

disk_size = stemcell_properties["disk"] || (1024 * 5)

⇒ bosh micro deploy <path_to_stemcell>

■ cfのデプロイ時 VM(各 job用)のサイズ変更方法

firstboshサーバにログイン

該当ソースを検索

# find /var/vcap -name cloud.rb | grep cloudstack

/var/vcap/data/packages/director/5c21b3ba0f4303ff3a767092b55e6cf446a9b42b/..

中略../cloudstack/cloud.rb

上記と同様に 100行目付近を編集

# disk_size = stemcell_properties["disk"] || (1024 * 10)

disk_size = stemcell_properties["disk"] || (1024 * 5)

sed で編集するとき

# sed -i -e "s/(1024 ¥* 10)/(1024 ¥* 5)/g" <cloud.rbのパス>

⇒ upload stemcell <path_to_stemcell>

メモ:

cloudstack が保持する stemcell のディスクサイズはソースコードに直書きされている。10GB では大き

すぎる(リソースを節約したい)ため stemcell登録時にサイズ調整した。

Page 16: CloudFoundry 2 on Apache CloudStack 4.2.1

15

COPYRIGHT FUJITSU LIMITED 2014

3.1.8. マイクロボッシュのデプロイ

(1) Proxyサーバの無効化

必要に応じて、デプロイ処理のため、proxyの設定を一度無効にしておく。

# unset http_proxy

# unset https_proxy

(2) Micro BOSHによるデプロイ

以下のコマンドを例に、デプロイを実行する。

# cd ~/deployments

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh micro deployment firstbosh

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh micro deploy /tmp/<3.1.3.(3)

で作成した stemcell ファイル名>

(3) firstboshのアドレスの確認

デプロイが正常に行われると、デプロイ実行用の最初のインスタンス(firstbosh)が起動される。

インスタンスの IPアドレスを /root/deployments/firstbosh/bosh_micro_deploy.log ファイルの

targetへの接続ログから確認する。

(4) ターゲットの指定

上記で確認した IPを使用して、新たに起動されたインスタンスをターゲットとして指定する。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh target https://172.16.10.229:

25555

※ ユーザー名/パスワードは admin/admin

※ ログインし直す場合は、

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh login

でログインする

(5) ステータスの確認

上記でデプロイした bosh環境の状況を以下のコマンドで確認する。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh status

-----------------------------------------

Config

/root/.bosh_config

Page 17: CloudFoundry 2 on Apache CloudStack 4.2.1

16

COPYRIGHT FUJITSU LIMITED 2014

Director

Name firstbosh

URL https://172.16.10.230:25555

Version 1.2063.0 (release:c8e032de bosh:c8e032de)

User admin

UUID f90c0235-6a22-401a-a0b0-2e619fb8f31a

CPI cloudstack

dns enabled (domain_name: microbosh)

compiled_package_cache disabled

snapshots disabled

Deployment

not set

3.2. BOSHデプロイの準備

3.2.1. Proxyサーバの設定

環境変数へ proxyの再設定を行い、Cloudstack管理サーバ、インセプションサーバ、

Firstbosh(ターゲット)の各 IPアドレスを no_proxy環境変数へ追加して設定する。

# export no_proxy=172.16.10.224,172.16.10.227,172.16.10.228,172.16.10.230,17

2.16.10.229,192.168.3.224

3.2.2. 不足領域の追加

メモ:

Firstbosh 上では、あらかじめ最終的なパッケージ格納領域として/var/vcap/store については特別

な領域が確保(領域確保用ボリュームのアタッチ)がされているが、当該作業領域は同様の領域が必要

(格納パッケージの一時展開作業用)にもかかわらず、特別な領域の準備はされていないために同処理で

エラーとなってしまう。そのため手動で領域を確保しておかなければならない。

次項の bosh upload release を行う際に、Firstbosh の VM で領域不足エラー「Error 500001: U

ploading release archive failed. Insufficient space on BOSH director in /var/vc

ap/data/tmp/director/release20140910-2239-1mz1yey」が発生するため、FirstboshVM へロ

グインして対象ディレクトリに追加ディスクをマウントして領域の確保を行う。

Page 18: CloudFoundry 2 on Apache CloudStack 4.2.1

17

COPYRIGHT FUJITSU LIMITED 2014

(1) 追加ストレージの準備

CloudstackGUIで追加用のボリューム(disk20gb)を作成し、FirstboshVMにアタッチしておく

(2) FirstboshVMへのログイン

キーファイルを使用して FirstboshVMへのログインを行う。

# ssh -i cfmyke [email protected]

password:c1oudc0w

(3.1.5.で作成したキーペアを指定する)

(3)ストレージ領域の作成とマウント

以下のコマンドを例に、FirstboshVM内からアタッチしたボリュームのマウントを行う。

○マウント実行例

$ ls /dev/vd*

/dev/vda /dev/vda1 /dev/vdb /dev/vdb1 /dev/vdc

$ sudo mkfs -t ext4 /dev/vdc

mke2fs 1.41.11 (14-Mar-2010)

Filesystem label=

OS type: Linux

(略)

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 20 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

$ sudo ls /mnt

$ sudo mount /dev/vdc /mnt

$ sudo cp -r /var/vcap/data/tmp/* /mnt

$ ls /mnt

director lost+found

$ ls tmp/

director

$ sudo umount /mnt

$ sudo mount /dev/vdc /var/vcap/data/tmp

$ ls /var/vcap/data/tmp

director lost+found

$ df -h

Page 19: CloudFoundry 2 on Apache CloudStack 4.2.1

18

COPYRIGHT FUJITSU LIMITED 2014

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 10G 5.1G 4.5G 54% /

none 480M 168K 480M 1% /dev

none 486M 0 486M 0% /dev/shm

none 486M 56K 486M 1% /var/run

none 486M 0 486M 0% /var/lock

none 486M 0 486M 0% /lib/init/rw

/dev/loop0 127M 7.8M 118M 7% /tmp

/dev/vdb1 30G 621M 28G 3% /var/vcap/store

/dev/vdc 20G 431M 19G 3% /var/vcap/data/tmp

3.2.3. cf-releaseの設定

(1) cf-releaseのインストール

以下のコマンドを実行し、cf-releaseのインストールを行う。

# git clone https://github.com/cloudfoundry/cf-release.git ~/cf-release

# cd ~/cf-release

(2) cf-releaseのアップロード

/root/cf-release/releases内で一番新しい cf-xxx.yml ファイルを確認して、以下のコマンドの通り

に指定してアップロードを実行する。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload release releases/cf-18

3.yml

※時間がかなりかかる

※実行後「Release uploaded」の表示で完了。完了せず終わった場合には再実行する。

3.2.4. stemcellのアップロード

以下のコマンドを例に stemcellのアップロードを行う。

コマンド:BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload stemcell /tmp/<3.

1.3.(3)で作成した stemcell ファイル名>

例)

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload stemcell /tmp/bosh-stem

cell-3-cloudstack-kvm-ubuntu-precise.tgz

Page 20: CloudFoundry 2 on Apache CloudStack 4.2.1

19

COPYRIGHT FUJITSU LIMITED 2014

Verifying stemcell...

File exists and readable OK

Verifying tarball...

Read tarball OK

Manifest exists OK

Stemcell image file OK

Stemcell properties OK

Stemcell info

-------------

Name: bosh-cloudstack-kvm-ubuntu

Version: 3

Checking if stemcell already exists...

No

Uploading stemcell...

bosh-stemcell: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooo| 444.

2MB 205.8KB/s Time: 00:36:49

Director task 3

Started update stemcell

Started update stemcell > Extracting stemcell archive. Done (00:00:22)

Started update stemcell > Verifying stemcell manifest. Done (00:00:00)

Started update stemcell > Checking if this stemcell already exists. Done (00:

00:00)

Started update stemcell > Uploading stemcell bosh-cloudstack-kvm-ubuntu/2063

to the cloud. Done (00:05:18)

Started update stemcell > Save stemcell bosh-cloudstack-kvm-ubuntu/2063 (3a51

4c5b-1c41-471f-95ad-459ac64dfb79). Done (00:00:01)

Done update stemcell (00:05:41)

Task 3 done

Started 2014-09-11 01:42:33 UTC

Finished 2014-09-11 01:48:14 UTC

Duration 00:05:41

Page 21: CloudFoundry 2 on Apache CloudStack 4.2.1

20

COPYRIGHT FUJITSU LIMITED 2014

Stemcell uploaded and created.

Page 22: CloudFoundry 2 on Apache CloudStack 4.2.1

21

COPYRIGHT FUJITSU LIMITED 2014

4. CloudFounryの展開

4.1. CloudFoundryデプロイの準備

4.1.1. Cloudstack インスタンスの帯域制限の解除

起動されたインスタンスに対して Cloudstack で帯域制限が掛けられているため、全てのインスタンスの制

限を以下のコマンド実行例を参考にあらかじめ解除しておく。

メモ:

cf のデプロイ時に多量のダウンロードを行うため、帯域制限がかかったままではタイムアウトが発生しデプロ

イが進まない状況に。解決策として cloudstackが設定している各インスタンスの帯域制限(tc)を解除。

cloudstack側の設定でも可能だが、必要な帯域幅等の情報もないためとりあえず全解除。

(1) kvmホストにログイン

(2) インスタンスのネットワークデバイス名を確認

# cat /var/run/libvirt/qemu/i-2-21-VM.xml | grep "<target dev='vnet"

<target dev='vnet9'/>

(3) 帯域制限を確認

# tc -s qdisc | grep vnet9 -A1

qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

Sent 6095754871 bytes 12742204 pkt (dropped 0, overlimits 3292486 requeues 0)

--

qdisc ingress ffff: dev vnet9 parent ffff:fff1 ----------------

Sent 19413493186 bytes 19071637 pkt (dropped 3642733, overlimits 0 requeues

0)

(4) 帯域制限を解除

解除前の制限一覧:

# tc qdisc show

qdisc mq 0: dev eth1 root

qdisc mq 0: dev eth2 root

qdisc mq 0: dev eth3 root

qdisc pfifo_fast 0: dev vnet0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

Page 23: CloudFoundry 2 on Apache CloudStack 4.2.1

22

COPYRIGHT FUJITSU LIMITED 2014

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

qdisc ingress ffff: dev vnet7 parent ffff:fff1 ----------------

qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc htb 1: dev vnet9 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

qdisc ingress ffff: dev vnet9 parent ffff:fff1 ----------------

qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

qdisc ingress ffff: dev vnet10 parent ffff:fff1 ----------------

解除:

# tc qdisc del dev vnet10 root

# tc qdisc del dev vnet10 ingress

解除後の制限一覧:

# tc qdisc show

qdisc mq 0: dev eth1 root

qdisc mq 0: dev eth2 root

qdisc mq 0: dev eth3 root

qdisc pfifo_fast 0: dev vnet0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet3 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

Page 24: CloudFoundry 2 on Apache CloudStack 4.2.1

23

COPYRIGHT FUJITSU LIMITED 2014

qdisc pfifo_fast 0: dev vnet4 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet5 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet6 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc htb 1: dev vnet7 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

qdisc ingress ffff: dev vnet7 parent ffff:fff1 ----------------

qdisc pfifo_fast 0: dev vnet8 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

qdisc htb 1: dev vnet10 root refcnt 2 r2q 10 default 1 direct_packets_stat 0

qdisc ingress ffff: dev vnet10 parent ffff:fff1 ----------------

(5) 解除を確認

# tc -s qdisc | grep vnet9 -A1

qdisc pfifo_fast 0: dev vnet9 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1

1 1 1 1 1 1 1

Sent 66374090 bytes 982435 pkt (dropped 0, overlimits 0 requeues 0)

4.1.2. デプロイ用マニフェストの作成

以下の内容でデプロイ用のマニフェストファイル(cf.yml)を作成する。

※以下の内容はデフォルト値。追加の修正内容は以降に記載

name: cf

director_uuid: 884aab78-3b73-494c-aa6f-b7fe9b2d7e1b # UUID shown by the bosh st

atus command ●●確認して記述●●

releases:

- name: cf

version: 147 # Verison number of the uploded release ●●現環境で使用しているのは

183 ●●

Page 25: CloudFoundry 2 on Apache CloudStack 4.2.1

24

COPYRIGHT FUJITSU LIMITED 2014

networks:

- name: default

type: dynamic

cloud_properties:

# Only for Basic Zone users

security_groups:

## - bosh # Securiy group which opens all TCP and UDP ports

- default # ●defaultで全 port開けているのでそのまま指定●

## # Only for Advanced Zone users

## network_name: <network_name> # subnetwork ●無効化●

# Only for Advanced Zone users

# Network with floating IP addresses

- name: floating

type: vip

cloud_properties: {}

compilation:

workers: 6

network: default

reuse_compilation_vms: true

cloud_properties:

instance_type: m1.medium # VM type

ephemeral_volume: Datadisk 40GB # Data disk offering name of additonal disk

update:

canaries: 1

canary_watch_time: 30000-60000

update_watch_time: 30000-60000

max_in_flight: 4

resource_pools:

- name: small

network: default

Page 26: CloudFoundry 2 on Apache CloudStack 4.2.1

25

COPYRIGHT FUJITSU LIMITED 2014

size: 8

stemcell:

name: bosh-cloudstack-kvm-ubuntu

version: latest

cloud_properties:

instance_type: m1.small # VM type

ephemeral_volume: Datadisk 40GB # Data disk offering name of additonal dis

k

- name: large

network: default

size: 1

stemcell:

name: bosh-cloudstack-kvm-ubuntu

version: latest

cloud_properties:

instance_type: m1.large # VM type

ephemeral_volume: Datadisk 40GB # Data disk offering name of additional di

sk

jobs:

- name: nats

release: cf

template:

- nats

instances: 1

resource_pool: small

networks:

- name: default

default: [dns, gateway]

- name: syslog_aggregator

release: cf

template:

- syslog_aggregator

instances: 1

resource_pool: small

persistent_disk: 65536

Page 27: CloudFoundry 2 on Apache CloudStack 4.2.1

26

COPYRIGHT FUJITSU LIMITED 2014

networks:

- name: default

default: [dns, gateway]

- name: postgres

release: cf

template:

- postgres

instances: 1

resource_pool: small

persistent_disk: 65536

networks:

- name: default

default: [dns, gateway]

properties:

db: databases

- name: nfs_server

release: cf

template:

- debian_nfs_server

instances: 1

resource_pool: small

persistent_disk: 65536

networks:

- name: default

default: [dns, gateway]

- name: uaa

release: cf

template:

- uaa

instances: 1

resource_pool: small

networks:

- name: default

default: [dns, gateway]

Page 28: CloudFoundry 2 on Apache CloudStack 4.2.1

27

COPYRIGHT FUJITSU LIMITED 2014

- name: cloud_controller

release: cf

template:

- cloud_controller_ng

instances: 1

resource_pool: small

networks:

- name: default

default: [dns, gateway]

properties:

ccdb: ccdb

- name: router

release: cf

template:

- gorouter

instances: 1

resource_pool: small

networks:

- name: default

default: [dns, gateway]

# Only for Advanced zone users

# You can set floating addresses to jobs

# Acquire Public IP addresses on your Web UI before deploying

# (Don't remove `default` network above even if `floating` is added)

- name: floating

static_ips:

- <IP address for Router>

- name: health_manager

release: cf

template:

- health_manager_next

instances: 1

resource_pool: small

networks:

- name: default

Page 29: CloudFoundry 2 on Apache CloudStack 4.2.1

28

COPYRIGHT FUJITSU LIMITED 2014

default: [dns, gateway]

- name: dea

release: cf

template: dea_next

instances: 1

resource_pool: large

networks:

- name: default

default: [dns, gateway]

properties:

domain: your.domain.name # replace these values with your domain name

system_domain: your.domain.name

system_domain_organization: your.domain.name

app_domains:

- your.domain.name

networks:

apps: default

management: default

nats:

address: 0.nats.default.cf.microbosh

port: 4222

user: nats

password: c1oudc0w

authorization_timeout: 5

router:

port: 8081

status:

port: 8080

user: gorouter

password: c1oudcow

dea: &dea

Page 30: CloudFoundry 2 on Apache CloudStack 4.2.1

29

COPYRIGHT FUJITSU LIMITED 2014

memory_mb: 2048

disk_mb: 20000

directory_server_protocol: http

dea_next: *dea

syslog_aggregator:

address: 0.syslog-aggregator.default.cf.microbosh

port: 54321

nfs_server:

address: 0.nfs-server.default.cf.microbosh

network: "*.cf.microbosh"

idmapd_domain: your.domain.name

debian_nfs_server:

no_root_squash: true

databases: &databases

db_scheme: postgres

address: 0.postgres.default.cf.microbosh

port: 5524

roles:

- tag: admin

name: ccadmin

password: c1oudc0w

- tag: admin

name: uaaadmin

password: c1oudc0w

databases:

- tag: cc

name: ccdb

citext: true

- tag: uaa

name: uaadb

citext: true

ccdb: &ccdb

Page 31: CloudFoundry 2 on Apache CloudStack 4.2.1

30

COPYRIGHT FUJITSU LIMITED 2014

db_scheme: postgres

address: 0.postgres.default.cf.microbosh

port: 5524

roles:

- tag: admin

name: ccadmin

password: c1oudc0w

databases:

- tag: cc

name: ccdb

citext: true

ccdb_ng: *ccdb

uaadb:

db_scheme: postgresql

address: 0.postgres.default.cf.microbosh

port: 5524

roles:

- tag: admin

name: uaaadmin

password: c1oudc0w

databases:

- tag: uaa

name: uaadb

citext: true

cc_api_version: v2

cc: &cc

logging_level: debug

external_host: api

srv_api_uri: http://api.your.domain.name

cc_partition: default

db_encryption_key: c1oudc0w

bootstrap_admin_email: [email protected]

bulk_api_password: c1oudc0w

uaa_resource_id: cloud_controller

Page 32: CloudFoundry 2 on Apache CloudStack 4.2.1

31

COPYRIGHT FUJITSU LIMITED 2014

staging_upload_user: uploaduser

staging_upload_password: c1oudc0w

resource_pool:

resource_directory_key: cc-resources

# Local provider when using NFS

fog_connection:

provider: Local

packages:

app_package_directory_key: cc-packages

droplets:

droplet_directory_key: cc-droplets

default_quota_definition: runaway

ccng: *cc

login:

enabled: false

uaa:

url: http://uaa.your.domain.name

spring_profiles: postgresql

no_ssl: true

catalina_opts: -Xmx768m -XX:MaxPermSize=256m

resource_id: account_manager

jwt:

signing_key: |

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQDHFr+KICms+tuT1OXJwhCUmR2dKVy7psa8xzElSyzqx7oJyfJ1

JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMXqHxf+ZH9BL1gk9Y6kCnbM5R6

0gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBugspULZVNRxq7veq/fzwIDAQAB

AoGBAJ8dRTQFhIllbHx4GLbpTQsWXJ6w4hZvskJKCLM/o8R4n+0W45pQ1xEiYKdA

Z/DRcnjltylRImBD8XuLL8iYOQSZXNMb1h3g5/UGbUXLmCgQLOUUlnYt34QOQm+0

KvUqfMSFBbKMsYBAoQmNdTHBaz3dZa8ON9hh/f5TT8u0OWNRAkEA5opzsIXv+52J

duc1VGyX3SwlxiE2dStW8wZqGiuLH142n6MKnkLU4ctNLiclw6BZePXFZYIK+AkE

xQ+k16je5QJBAN0TIKMPWIbbHVr5rkdUqOyezlFFWYOwnMmw/BKa1d3zp54VP/P8

+5aQ2d4sMoKEOfdWH7UqMe3FszfYFvSu5KMCQFMYeFaaEEP7Jn8rGzfQ5HQd44ek

lQJqmq6CE2BXbY/i34FuvPcKU70HEEygY6Y9d8J3o6zQ0K9SYNu+pcXt4lkCQA3h

jJQQe5uEGJTExqed7jllQ0khFJzLMx0K6tj0NeeIzAaGCQz13oo2sCdeGRHO4aDh

Page 33: CloudFoundry 2 on Apache CloudStack 4.2.1

32

COPYRIGHT FUJITSU LIMITED 2014

HH6Qlq/6UOV5wP8+GAcCQFgRCcB+hrje8hfEEefHcFpyKH+5g1Eu1k0mLrxK2zd+

4SlotYRHgPCEubokb2S1zfZDWIXW3HmggnGgM949TlY=

-----END RSA PRIVATE KEY-----

verification_key: |

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHFr+KICms+tuT1OXJwhCUmR2d

KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX

qHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug

spULZVNRxq7veq/fzwIDAQAB

-----END PUBLIC KEY-----

cc:

client_secret: c1oudc0w

admin:

client_secret: c1oudc0w

batch:

username: batchuser

password: c1oudc0w

client:

autoapprove:

- cf

clients:

cf:

override: true

authorized-grant-types: password,implicit,refresh_token

authorities: uaa.none

scope: cloud_controller.read,cloud_controller.write,openid,password.wri

te,cloud_controller.admin,scim.read,scim.write

access-token-validity: 7200

refresh-token-validity: 1209600

scim:

users:

- admin|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin

- services|c1oudc0w|scim.write,scim.read,openid,cloud_controller.admin

Page 34: CloudFoundry 2 on Apache CloudStack 4.2.1

33

COPYRIGHT FUJITSU LIMITED 2014

Page 35: CloudFoundry 2 on Apache CloudStack 4.2.1

34

COPYRIGHT FUJITSU LIMITED 2014

4.1.3. マニフェスト内容の修正内容

上記 4.1.2.で作成したマニフェストの内容を修正し保存する。

-----------------------------------------

メモ:必要な編集点

■ヘルスマネージャの名前変更:cfのバージョンアップに対応

health_manager ⇒ hm9000

■etcdの追加:hm9000その他の jobに必要なため

■nfs_serverのアクセス制限 allow_from_entries: の設定

■ccの quota_definitionsを設定

■ccの security_group_definitionsの設定

■ccに buildpackのインストール設定:pushするアプリの動作のため

■項目名 ccdb: ⇒ db: に変更

■デプロイ時コンパイル用の VM台数:compilation.workers デフォルトの 6台ではタイムアウト多数発

生のため 2台に変更

■loggregator、trafficcontrollerの追加:cf コマンドユーザへのログ参照機能提供のため

■haproxyの追加:haproxy job動作確認のため

など

■VM台数変化、および cloudstackのリソース状況に合わせて resource_poolsを変更

4.2. CloudFoundryのデプロイ

4.2.1. デプロイの実行

以下のコマンドを例に、マニフェストファイルを使用して BOSHデプロイを実行。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deployment ~/cf.yml

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy

メモ:

deploy がマニフェスト設定不足止等で止まった場合は、設定修正後再度 deploy コマンドで続きを実行

してくれる。jobの起動待ちタイムアウト等で止まった場合は:

A. 再度 deploy コマンドで job起動待ちから続きが実行される

B. 内部ステータスの不都合によりデプロイの続きの実行が出来ない

の2つの場合があり、Bの場合は一度 delete deploymentコマンドで初期状態に戻して再度 deploy実

行。delete deployment コマンドが正常終了しない場合は残っている VMを cloudstackの UIから de

stroy して expangeの必要。

Page 36: CloudFoundry 2 on Apache CloudStack 4.2.1

35

COPYRIGHT FUJITSU LIMITED 2014

※デプロイされた VMの確認コマンド

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms

Page 37: CloudFoundry 2 on Apache CloudStack 4.2.1

36

COPYRIGHT FUJITSU LIMITED 2014

5. アプリのプッシュテスト

5.1. cf コマンドのインストール

Githubから cf-cliの deb ファイルをダウンロード

https://github.com/cloudfoundry/cli#downloads

「Debian64bit」

# pkgd -i cf-cli_amd64.deb

5.2. DNSの登録

haproxyの jobが動いている VMの IPアドレスを DNSに登録して、「api」「uaa」「loggregator」およびア

プリ名(「dora」はテストアプリ名)を全てその IPに CNAME として登録。

DNS設定例:

:

cf IN A 172.16.10.243

api IN CNAME cf

uaa IN CNAME cf

loggregator IN CNAME cf

dora IN CNAME cf

:

5.3. cf クライアントとしての初期設定

# cf api http://api.subdomain.domain

# cf auth admin c1oudc0w

# cf create-org me

# cf target -o me

# cf create-space development

# cf target -s development

5.4. テストアプリのプッシュ

cf-release ソース内のテスト用アプリをプッシュして動作を確認。

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

# cf push

# curl http://dora.subdomain.domain

Page 38: CloudFoundry 2 on Apache CloudStack 4.2.1

37

COPYRIGHT FUJITSU LIMITED 2014

6. DBサービス(MySQLサービス)の展開

以下に DBサービスとして MySQLサービス(cf-mysql)のデプロイ実行手順を示す。

6.1. ソースの取得

# git clone https://github.com/cloudfoundry/cf-mysql-release

# ./update

# git checkout v14

# git submodule update --recursive

6.2. Upload Releaseの実行

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload release

releases/cf-mysql-14.yml

※実行前に、Proxyサーバの設定(http_proxy環境変数の設定)が必要

※インセプションサーバのルートディスクに、空き容量が 500MB以上必要

6.3. マニフェストの作成

MySQLサービスのデプロイ用にマニフェストファイルを作成する。

# vi ~/cf-mysql-release/cf-mysql-cloudstack.yml

※natsの ipは bosh vms で調べて記入

※lifecycle: errand の jobはとりあえずコメントアウト

※デプロイ前は VMの ipが分からないため mysql/0,1 haproxy の ip設定部分はコメントアウトしておく

コメントアウトする部分:

name: mysql

networks:

#dynamic_ips:

# - 172.16.10.244

# - 172.16.10.245

properties:

#cluster_ips:

# - 172.16.10.244

# - 172.16.10.245

#haproxy_ips:

# - 172.16.10.243

name: haproxy

properties:

#mysql_ips:

Page 39: CloudFoundry 2 on Apache CloudStack 4.2.1

38

COPYRIGHT FUJITSU LIMITED 2014

#- 172.16.10.244

#- 172.16.10.245

name: cf-mysql-broker

properties:

mysql_node:

#host: 172.16.10.243 <- haproxyの ip

6.4. MySQLサービスのデプロイ

(1) 仮デプロイの実行

以下のコマンドを実行し、MySQLサービスの仮デプロイを行う。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deployment cf-mysql-cloudstac

k.yml

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy

(2) IPアドレスの確認

上記(1)の実行で VM が作成されたのち、エラー「cluster_ips が設定されていない」で止まるため、新し

い VMの IPアドレスを以下のコマンドで確認する。

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms

(3) 再デプロイ

先ほどのコメントアウト部分に正しい IPアドレスを書き込んで再度デプロイを行う。

# vi ~/cf-mysql-release/cf-mysql-cloudstack.yml

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deploy

デプロイ後 VMディスク使用量:

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vita

ls

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

| Job/index | State | Resource Pool | IPs |..| System | E

phemeral | Persistent |

| | | | |..| Disk Usage | Disk

Usage | Disk Usage |

Page 40: CloudFoundry 2 on Apache CloudStack 4.2.1

39

COPYRIGHT FUJITSU LIMITED 2014

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

| cf-mysql-broker/0 | running | small | 172.16.10.231 |..| 26% |

81% | n/a |

| haproxy/0 | running | small | 172.16.10.243 |..| 26% |

5% | n/a |

| mysql/0 | running | large | 172.16.10.245 |..| 26% | 1

3% | 28% |

| mysql/1 | running | large | 172.16.10.244 |..| 26% | 1

3% | 28% |

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vita

ls

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

| Job/index | State | Resource Pool | IPs |..| System | E

phemeral | Persistent |

| | | | |..| Disk Usage | Disk

Usage | Disk Usage |

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

| cf-mysql-broker/0 | running | small | 172.16.10.231 |..| 26% |

81% | n/a |

| haproxy/0 | running | small | 172.16.10.243 |..| 26% |

5% | n/a |

| mysql/0 | running | large | 172.16.10.245 |..| 26% | 1

3% | 28% |

| mysql/1 | running | large | 172.16.10.244 |..| 26% | 1

3% | 28% |

+-------------------+---------+---------------+---------------+..+------------

+------------+------------+

6.5. cfサービスの設定

参照している DNS サーバに mysql-broker の IP アドレスを「p-mysql.ssl.osscloud」で登録し、以下

のコマンドを実行して cfサービスの設定を行う。

Page 41: CloudFoundry 2 on Apache CloudStack 4.2.1

40

COPYRIGHT FUJITSU LIMITED 2014

# cf create-service-broker p-mysql admin password http://p-mysql.ssl.osscloud

# cf enable-service-access p-mysql

確認

# cf service-access