Your SlideShare is downloading. ×
Nise-BOSH で Cloud Foundry を 1VM に構築
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Nise-BOSH で Cloud Foundry を 1VM に構築


Published on

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Nise-BOSHでCloudFoundryを1VMに構築2014/04/26 NECソフト大塚元央
  • 2. Page 2 © NEC Corporation 2013▌ 導入 自己紹介 モチベーション Cloud Foundry 構成▌ 1VM Cloud Foundry の構築 流れ Nise-BOSH のインストール Cloud Foundry のリリース作成 Cloud Foundry のインストール目次目次
  • 3. 大塚元央 (Yuanying)▌ 所属: NECソフト ITシステム事業部▌ Twitter: @yuanying▌ 趣味 トライアスロン▌ 古い昔の趣味 Mac• iExtractMP3 Ruby• ConnectImporter ( 3 © NEC Corporation 2010導入自己紹介
  • 4. もっと気軽に Cloud Foundry の最新版を試したい▌ BOSH IaaS統合は良いんだけど、ローカルで環境作るのどうするの? BOSH 自体で 1VM+ も使いたくない。▌ Nise-BOSH これがあれば Vagrant で試せる! 複数ジョブテンプレートを一度にインストールすれば 1VM で CloudFoundry が動くんじゃ?••– cf-release もちょっと修正する必要があった。 参考• 4 © NEC Corporation 2013導入モチベーション
  • 5. Cloud Foundry の最低構成は?▌ cf-release/jobs たくさんあるけど全部使ったりしないよね? とりあえず service なんて無くて良い、動けば。 最新のコンポーネントを使いたい。• router よりgorouter• cloud_controller_ngPage 5 © NEC Corporation 2013導入Cloud Foundry 構成
  • 6. Cloud Foundry を構成する最低インタフェースPage 6 © NEC Corporation 2013導入Cloud Foundry 構成じゃあこれらをcf-release の Job Template で実装すると?
  • 7. Page 7 © NEC Corporation 2013導入Cloud Foundry 構成依存関係を調査してみた。(実行時には上にあるコンポーネントから)
  • 8. Page 8 © NEC Corporation 2013導入Cloud Foundry 構成最新コンポーネントを試そうと思うと、こうなる。
  • 9. Page 9 © NEC Corporation 20131. Nise-BOSH のインストール2. Cloud Foundry のリリース作成3. Cloud Foundry のインストール1VM Cloud Foundry の構築流れ
  • 10. Page 10 © NEC Corporation 2013▌ 本家でなく、複数ジョブテンプレートインストールに対応したブランチを利用する。 後々もっと奇麗な形で複数ジョブテンプレートのインストールに対応するので、この手順は多分非推奨…。 dea_next用に gen-stemcellする必要があるかと思いきや、、最新版のdea_nextだとrootfs用のパッケージがcf-release に用意してあるため必要ない模様。1VM Cloud Foundry の構築Nise-BOSH のインストール$ git clone$ git checkout –bmulti-monitrc-spike origin/multi-monitrc-spike$ bundle install$ ./bin/init$ apt-get install debootstraprunit
  • 11. Page 11 © NEC Corporation 20131VM Cloud Foundry の構築Cloud Foundry のリリース作成$ git clone$ cd ./cf-release$ git remote add yuanying$ git pull yuanying masterFrom* branch master -> FETCH_HEADUpdating 4fd9c30..c9d596aFast-forwardjobs/cloud_controller_ng/monit | 2 ++jobs/dea_next/templates/dea.yml.erb | 12 ++++++++++++jobs/dea_next/templates/warden_ctl | 18 ------------------jobs/hbase_master/templates/+--hbase_zookeeper_ctl | 4 +packages/nginx/packaging | 1 +packages/nginx_next/packaging | 1 +packages/ruby/packaging | 1 +packages/ruby_next/packaging | 1 +8 files changed, 20 insertions(+), 20 deletions(-)1VM で動くように、いくつかcf-release を修正。
  • 12. cloud_controllerでのnginxの無効化▌ 何故かnginxが 1VM で CF 構築時に、staging の邪魔をしていたのでよくわからないけど使うのを止めた。Page 12 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/cloud_controller_ng/monit+++ b/jobs/cloud_controller_ng/monit@@ -4,10 +4,8 @@ check process cloud_controller_ngstop program "/var/vcap/jobs/cloud_controller_ng/bin/cloud_controller_ng_ctl stop"group vcap+<% if p("ccng.use_nginx", true) %>check process nginx_ccngwith pidfile /var/vcap/sys/run/nginx_ccng/nginx.pidstart program "/var/vcap/jobs/cloud_controller_ng/bin/nginx_ctl start"stop program "/var/vcap/jobs/cloud_controller_ng/bin/nginx_ctl stop"group vcap+<% end %>
  • 13. warden_ctrからstemcell.tar.gz関連を削除Page 13 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/dea_next/templates/warden_ctl+++ b/jobs/dea_next/templates/warden_ctl@@ -24,24 +24,6 @@ case $1 inulimit -c unlimited- rootfs_path=$DATA_DIR/rootfs- rootfs_tgz=/var/vcap/stemcell_base.tar.gz-- # Extract rootfs if needed- if [ ! -d $rootfs_path ]- then- # Make sure its parent directory exists- mkdir -p $(dirname $rootfs_path)-- # Extract to temporary path, then rename to target path.- # This makes sure that it is not possible that we end up with directory- # that contains a partially extracted archive.- tmp_path=$(mktemp --tmpdir=$(dirname $rootfs_path) -d)- chmod 755 $tmp_path- tar -C $tmp_path -zxf $rootfs_tgz- mv $tmp_path $rootfs_path- fiこれはたぶん、本家の消し忘れ。
  • 14. 1VM なのでnfsの利用を削除Page 14 © NEC Corporation 20101VM Cloud Foundry の構築Cloud Foundry のリリース作成--- a/jobs/serialization_data_server/templates/serialization_data_server_ctl+++ b/jobs/serialization_data_server/templates/serialization_data_server_ctl@@ -36,7 +36,9 @@ case $1 in<% end %>mkdir -p $SNAPSHOT_DIR+ <% unless properties.micro %>check_mount "$MT_OPTS" "$MT_EXPORT" "$SNAPSHOT_DIR"+ <% end %>mkdir -p $SDS_TMP_UPLOAD_DIRchownvcap:vcap $SDS_TMP_UPLOAD_DIR
  • 15. Page 15 © NEC Corporation 2013▌ ここでNise-BOSH にリクエスト 最新のリリースを試したいだけな場合にわざわざ bosh create release したくない!• bosh sync blobs だけで大丈夫なんじゃ? Job Template と Package の取得方法がちょっとごっちゃになってる。• Job Template はリリースレポジトリのソース(jobs ディレクトリ)そのまま使うのに、• Package はなんで .dev_builds / .final_buildsを使うのか? リリースファイルを指定したら .dev_builds / .final_buildsの jobs とpackage を使う、 リリースレポジトリを指定したら、レポジトリ下のソースを利用するようにして欲しい(したい)。1VM Cloud Foundry の構築Cloud Foundry のリリース作成$ ./update$ gem install –no-ri –no-rdocbosh_cli$ bosh create release --force
  • 16. Page 16 © NEC Corporation 2013▌ 最低構成の Job Template をインストール。 問題は、deployment manifest (micro_ng.yml) の内容…。 cloudfoundry/micro を参考に• 実際に使った deployment manifest• Cloud Foundry の構築Cloud Foundry のインストール$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n postgres$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n nats$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n gorouter$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n dea_next$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n health_manager_next$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n cloud_controller_ng$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n serialization_data_server$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n uaa$ bundle exec ./bin/nise-bosh ../cf-release ../micro_ng.yml -n vcap_redis
  • 17. Page 17 © NEC Corporation 2013▌ properties.microを true に▌ ドメインにxip.ioを指定。 IP アドレスベースのワイルドカードDNS。便利。1VM Cloud Foundry の構築Cloud Foundry のインストール---deployment: microproperties:micro: truedomain: ccnghm_props: health_manager_ccng
  • 18. Page 18 © NEC Corporation 2013▌ ccng.use_nginxを false に▌ ccngのプロパティはデフォルト値が spec で決まっているものが多いが、Nise-BOSH がプロパティのデフォルト値に対応していないため、すべて指定する必要があり大変。。1VM Cloud Foundry の構築Cloud Foundry のインストールccng: &ccnguse_nginx: falsedefault_quota_definition: freesrv_api_uri: http://api. debugbulk_api_password: bulk_api_passwordstaging_upload_user: stagingstaging_upload_password: stagingexternal_host: apiuaa_resource_id: cloud_controllerquota_definitions:free:total_services: 10memory_limit: 1024non_basic_services_allowed: false… (以下略)
  • 19. Page 19 © NEC Corporation 2013▌ uaa.no_sslを true に▌ cfクライアントを追加 (vmcの代わり) autoapproveに登録しないとブラウザベースの認証しないと使えない。 cloud_controller.admin scope の追加。1VM Cloud Foundry の構築Cloud Foundry のインストールuaa:spring_profiles: postgresqlno_ssl: trueautoapprove:- cfscim:users:-|micro|scim.write,,openidclients:cf:override: trueauthorized-grant-types: implicitauthorities:,cloud_controller.write,openid,password.write,cloud_controller.admin,,scim.write
  • 20. 起動!Page 20 © NEC Corporation 20131VM Cloud Foundry の構築Cloud Foundry のインストール$ mkdir -p /var/vcap/shared$ chownvcap:vcap /var/vcap/shared$ mkdir -p /var/vcap/store$ ./bin/run-job start postgres$ ./bin/run-job start nats$ ./bin/run-job start gorouter$ ./bin/run-job start dea_next$ ./bin/run-job start health_manager_next$ ./bin/run-job start cloud_controller_ng$ ./bin/run-job start serialization_data_server$ ./bin/run-job start uaa$ ./bin/run-job start vcap_redis
  • 21. Page 21 © NEC Corporation 2012