cloud founryインストール手順
TRANSCRIPT
CloudFoundry V2
環境構築手順書
(第 1版)
富士通株式会社
更新履歴
Ver 更新年月日 更新者 更新内容
1 2014/09/25 若林 新規作成
iCOPYRIGHT FUJITSU LIMITED 2014
はじめに本ドキュメントは CroudFoudy V2環境を構築する手順を記述したドキュメントである。
本ドキュメントは以下の環境での作業を想定している。
クラウド基盤 Cloudstack Ver4.2.1
VM Ubuntu 12.04
ストレージ領域 プライマリストレージ:約 350GB
セカンダリストレージ:約 150GB
本作業で必要なユーザーの種類・権限は以下の通り。
環境 ユーザーの種類 権限 本ドキュメントで使用するユーザー
インスタンス Linuxユーザー 管理者 root
一般
本ドキュメントでは、特に指定がない限り管理者(root)を使用すること。
iiCOPYRIGHT FUJITSU LIMITED 2014
目次
目次 i i i
1 .前提1
2.インセプションサーバの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.Ubuntuイメージの起動.................................................................................................................................................2
2.2.インセプションサーバ上での各設定変更.........................................................................................................2
2.2.1.rootログイン設定........................................................................................................................................................2
2.2.2.内部作業領域のサイズ拡張..................................................................................................................................3
2.2.3.プロキシサーバの設定...........................................................................................................................................3
2.3.インセプションサーバへのインストール.........................................................................................................3
2.3.1.パッケージリポジトリの追加と upgradeの実行............................................................................................3
2.3.2.acpiphpカーネルモジュールのアクティブ化..................................................................................................4
2.3.3.関連ツールのインストール..................................................................................................................................4
2.3.4.Rubyインストール....................................................................................................................................................4
3.BOSHインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1.BOSHのインストールとMicroBOSHの実行......................................................................................................6
3.1.1.BOSHのインストール..............................................................................................................................................6
3.1.2.依存 gemのインストール.........................................................................................................................................6
3.1.3.stemcelの作成..................................................................................................................................................................6
3.1.4.Proxyサーバの非参照設定......................................................................................................................................8
3.1.5.キーペアファイルの作成.......................................................................................................................................8
3.1.6.マニフェストファイルの作成............................................................................................................................10
3.1.7.ソースコードの修正...............................................................................................................................................12
3.1.8.マイクロボッシュのデプロイ............................................................................................................................14
3.2.BOSHデプロイの準備...............................................................................................................................................15
3.2.1.Proxyサーバの設定..................................................................................................................................................15
3.2.2.不足領域の追加........................................................................................................................................................15
3.2.3.cf-releaseの設定.............................................................................................................................................................17
3.2.4.stemcellのアップロード...........................................................................................................................................17
4.CloudFounryの展開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.1.CloudFoundryデプロイの準備...................................................................................................................................20
4.1.1.Cloudstackインスタンスの帯域制限の解除.....................................................................................................20
4.1.2.デプロイ用マニフェストの作成......................................................................................................................22
4.1.3.マニフェスト内容の修正内容...........................................................................................................................32
4.2.CloudFoundryのデプロイ............................................................................................................................................32
4.2.1.デプロイの実行........................................................................................................................................................32
iiiCOPYRIGHT FUJITSU LIMITED 2014
4.2.2.cfコマンドのインストール.................................................................................................................................32
5.DBサービス(MySQLサービス)の展開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.ソースの取得................................................................................................................................................................33
5.2.Upload Releaseの実行.....................................................................................................................................................33
5.3.マニフェストの作成.................................................................................................................................................33
5.4.MySQLサービスのデプロイ..................................................................................................................................34
5.5.cfサービスの設定.......................................................................................................................................................35
ivCOPYRIGHT 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
1COPYRIGHT 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
2COPYRIGHT 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://mp067159:[email protected]:8080/
export https_proxy=http://mp067159:[email protected]:8080/
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/sources.list.d/ubuntu-ja.list
# apt-get update
パッケージの更新(upgrade)を行う
3COPYRIGHT FUJITSU LIMITED 2014
# 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 libreadline-dev libssl-dev libcurl4-openssl-dev
(3) stemcell関連のインストール
# apt-get install libsqlite3-dev genisoimage libmysqlclient-dev libpq-dev debootstrap kpartx
2.3.4. Rubyインストール
(1) プロキシサーバの設定
gitインストールのために以下のコマンドを例にプロキシサーバを gitの configに設定する。
# git config --global http.proxy http://mp067159:[email protected]:8080/
# git config --global https.proxy http://mp067159:[email protected]:8080/
(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 autoconf libncurses5-dev
4COPYRIGHT FUJITSU LIMITED 2014
# git clone http://github.com/sstephenson/rbenv.git .rbenv
# git clone http://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-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]
5COPYRIGHT 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. stemcelの作成
(1) ベースイメージ作成
Boshで使用する VMイメージ(stemcell)を作成する。
# bundle exec rake stemcell:build_os_image[ubuntu,precise,/tmp/ubuntu_base_image.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」内
に格納されているカーネルファイル( initrd.img-xxx-virtual、vmlinuz-xxx-virtual)のバージョンを確認し 、
/root/bosh/bosh-stemcell/spec/stemcells/ubuntu_precise_spec.rbの 3行目から 14行目(describe ~ 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-virtual
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
6COPYRIGHT FUJITSU LIMITED 2014
(略)
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=UUID=' }
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)' }
it { should contain ' kernel /boot/vmlinuz-3.2.0-70-virtual ro root=UUID=' }
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,precise,ruby,/tmp/ubuntu_base_image.tgz]
7COPYRIGHT FUJITSU LIMITED 2014
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であらかじめ作成しておく)
api_key="QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o
1Y_ORP2A"
# please set your secret key(CloudStackGUIであらかじめ作成しておく)
secret_key="oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWLuM9OOdnCEtyV
pPy02rOkg"
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'=' | \
8COPYRIGHT FUJITSU LIMITED 2014
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"&"signature=$signature
echo " SEND URL: $url"
curl ${url}
(2) キーペア作成
上記で作成したスクリプトファイルを以下のコマンドのとおりに実行し、キーペアを作成する。
(name=はキー名として任意の名前を指定可能)
コマンド:./kick_api.sh command=createSSHKeyPair name=<キー名>
例)
# ./kick_api.sh command=createSSHKeyPair name=cfmykey
SEND URL: http://172.16.10.224:8080/client/api?
command=createSSHKeyPair&name=cfmykey&apikey=QBbqiA_mGMp23w8lX1zadH_PCruxaqj55iTtQgCQst5Pd5aJ1
TrXKErTX3UKIvmx4Ok5WaJZNPwY0o1Y_ORP2A&signature=gPmSPYqd2fIaSf5%2BX2K%2FvEdgaD8%3D
<?xml version="1.0" encoding="UTF-8"?><createsshkeypairresponse cloud-stack-
version="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
9COPYRIGHT FUJITSU LIMITED 2014
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:7e:4c:21:a9:c9:94</fingerprint>
</keypair></createsshkeypairresponse>root@ubuntu14:~#
(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
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
10COPYRIGHT FUJITSU LIMITED 2014
以下の内容で作成します。
name: firstbosh
logging:
level: DEBUG
network:
type: dynamic
ip: 172.16.10.227
#インセプションサーバの IPアドレス
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_PCruxaqj55iTtQgCQst5Pd5aJ1TrXKErTX3UKIvmx4Ok5WaJZNPwY0o1Y_ORP2
A
# キーペア作成時に指定したもの
secret_access_key:
oN5z4NafX9OrwknE39f9sT_rhSrfdCa1CRuoCjO3iD214wzM4JGLIT2TjwmvBerWLuM9OOdnCEtyVpPy02rOkg
# キーペア作成時に指定したもの
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
11COPYRIGHT FUJITSU LIMITED 2014
# 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
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?
suf f ix = ('a'..'z'). to_a[dev ice_id]
cloud_error("too many disks attached") if suffix.nil?
"/dev/ sd#{suf f ix}"
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?
suf f ix = ('a'..'z'). to_a[device_id-1]
cloud_error("too many disks attached") if suffix.nil?
12COPYRIGHT FUJITSU LIMITED 2014
"/dev/vd#{suf f ix}"
end
-----------------------------------------
(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>
13COPYRIGHT 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環境の状況を以下のコマンドで確認する。
14COPYRIGHT FUJITSU LIMITED 2014
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh status
-----------------------------------------
Config
/root/.bosh_config
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,172.16.10.229,192.168.3.224
3.2.2. 不足領域の追加
次項の bosh upload release を行う際に、Firstboshの VMで領域不足エラー「Error 500001: Uploading release
archive failed. Insufficient space on BOSH director in /var/vcap/data/tmp/director/release20140910-2239-1mz1yey」が発
生するため、FirstboshVMへログインして対象ディレクトリに追加ディスクをマウントして領域の確
保を行う。
(1) 追加ストレージの準備
CloudstackGUIで追加用のボリューム(disk20gb)を作成し、FirstboshVMにアタッチしておく
15COPYRIGHT FUJITSU LIMITED 2014
(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
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 10G 5.1G 4.5G 54% /
16COPYRIGHT FUJITSU LIMITED 2014
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-183.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-stemcell-3-cloudstack-kvm-ubuntu-
precise.tgz
Verifying stemcell...
File exists and readable OK
17COPYRIGHT FUJITSU LIMITED 2014
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 (3a514c5b-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
Stemcell uploaded and created.
18COPYRIGHT FUJITSU LIMITED 2014
19COPYRIGHT FUJITSU LIMITED 2014
4. CloudFounryの展開4.1. CloudFoundryデプロイの準備
4.1.1. Cloudstackインスタンスの帯域制限の解除
起動されたインスタンスに対して 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 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
20COPYRIGHT FUJITSU LIMITED 2014
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
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)
21COPYRIGHT FUJITSU LIMITED 2014
4.1.2. デプロイ用マニフェストの作成
以下の内容でデプロイ用のマニフェストファイル(cf.yml)を作成する。
※以下の内容はデフォルト値。追加の修正内容は以降に記載
name: cf
director_uuid: 884aab78-3b73-494c-aa6f-b7fe9b2d7e1b # UUID shown by the bosh status command ●●確認して記
述●●
releases:
- name: cf
version: 147 # Verison number of the uploded release ●● 現環境で使用しているのは 183 ●●
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:
22COPYRIGHT FUJITSU LIMITED 2014
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
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 disk
- 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 disk
jobs:
- name: nats
release: cf
template:
23COPYRIGHT FUJITSU LIMITED 2014
- 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
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
24COPYRIGHT FUJITSU LIMITED 2014
networks:
- name: default
default: [dns, gateway]
- name: uaa
release: cf
template:
- uaa
instances: 1
resource_pool: small
networks:
- name: default
default: [dns, gateway]
- 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
25COPYRIGHT FUJITSU LIMITED 2014
# 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
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:
26COPYRIGHT FUJITSU LIMITED 2014
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
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
27COPYRIGHT FUJITSU LIMITED 2014
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
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
28COPYRIGHT FUJITSU LIMITED 2014
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
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
29COPYRIGHT FUJITSU LIMITED 2014
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
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
30COPYRIGHT FUJITSU LIMITED 2014
authorities: uaa.none
scope: cloud_controller.read,cloud_controller.write,openid,password.write,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
31COPYRIGHT FUJITSU LIMITED 2014
4.1.3. マニフェスト内容の修正内容
上記 4.1.2.で作成したマニフェストの内容を修正し保存する。
-----------------------------------------
修正詳細は実際に使用したファイル「cf.yml」を参照してください。
-----------------------------------------
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
※デプロイされた VMの確認コマンド
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms
4.2.2. cfコマンドのインストール
Githubから cf-cliの debファイルをダウンロード
https://github.com/cloudfoundry/cli#downloads
「Debian64bit」
# pkgd -i cf-cli_amd64.deb
32COPYRIGHT FUJITSU LIMITED 2014
5. DBサービス(MySQLサービス)の展開以下に DBサービスとしてMySQLサービス(cf-mysql)のデプロイ実行手順を示す。
5.1. ソースの取得
# git clone https://github.com/cloudfoundry/cf-mysql-release
# ./update
# git checkout v14
# git submodule update --recursive
5.2. Upload Releaseの実行
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh upload release releases/cf-mysql-14.yml
※実行前に、Proxyサーバの設定(http_proxy環境変数の設定)が必要
※インセプションサーバのルートディスクに、空き容量が 500MB以上必要
5.3. マニフェストの作成
MySQLサービスのデプロイ用にマニフェストファイルを作成する。
# vi ~/cf-mysql-release/cf-mysql-cloudstack.yml
nats※ の ip は bosh vms で調べて記入
lifecycle: errand ※ の jobはとりあえずコメントアウト
※デプロイ前は VMの ip が分からないため mysql/0,1 haproxy の ip設定部分はコメントアウトしてお
く
○ cf-mysql-cloudstack.ymlファイルの内容
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:
33COPYRIGHT FUJITSU LIMITED 2014
# - 172.16.10.243
name: haproxy
properties:
#mysql_ips:
#- 172.16.10.244
#- 172.16.10.245
name: cf-mysql-broker
properties:
mysql_node:
#host: 172.16.10.243 <- haproxyの ip
5.4. MySQLサービスのデプロイ
(1) 仮デプロイの実行
以下のコマンドを実行し、MySQLサービスの仮デプロイを行う。
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh deployment cf-mysql-cloudstack.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 --vitals
+-------------------+---------+---------------+---------------+..+------------+------------+------------+
| Job/index | State | Resource Pool | IPs |..| System | Ephemeral | Persistent |
34COPYRIGHT FUJITSU LIMITED 2014
| | | | |..| 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% | 13% | 28% |
| mysql/1 | running | large | 172.16.10.244 |..| 26% | 13% | 28% |
+-------------------+---------+---------------+---------------+..+------------+------------+------------+
# BUNDLE_GEMFILE=~/bosh/Gemfile bundle exec bosh vms cf-cloudstack-mysql --vitals
+-------------------+---------+---------------+---------------+..+------------+------------+------------+
| Job/index | State | Resource Pool | IPs |..| System | Ephemeral | 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% | 13% | 28% |
| mysql/1 | running | large | 172.16.10.244 |..| 26% | 13% | 28% |
+-------------------+---------+---------------+---------------+..+------------+------------+------------+
5.5. cfサービスの設定
参照している DNSサーバに mysql-brokerの IPアドレスを「p-mysql.ssl.osscloud」で登録し、以下のコマンド
を実行して cfサービスの設定を行う。
# cf create-service-broker p-mysql admin password http://p-mysql.ssl.osscloud
# cf enable-service-access p-mysql
確認
# cf service-access
35COPYRIGHT FUJITSU LIMITED 2014