Your SlideShare is downloading. ×
0
すごいBOSHたのしく学ぼう岩嵜 雄大NTT Software Innovation Center2012-06-21                          NTT Software Innovation Center
もくじ              BOSHとは              BOSHの基礎              BOSH環境の構築              BOSHによるオペレーション              まとめ2012-...
もくじ              BOSHとは              BOSHの基礎              BOSH環境の構築              BOSHによるオペレーション              まとめ2012-...
BOSHとは              CloudFoundryの環境構築はとても大変               – サーバが増えると何処で何が動いているのか分からなくなる               – 動いてるサービスのバージョン管理も...
それ ~ でできるよ  分散システムの構成管理ツールは前からあるのでは?  車輪の再発名になってませんか?             • Puppet                – 細かい作業も出来て素敵                –...
それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか?             • Puppet                – 大体あってる                   ロジ...
それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか?             • Puppet                – 大体あってる                   ロジ...
それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか?             • Puppet                – 大体あってる                   ロジ...
もくじ              BOSHとは              BOSHの基礎              BOSH環境の構築              BOSHによるオペレーション              まとめ2012-...
BOSHの基礎                                                                                                   BOSHはそれ自身が複数のシス...
Stemcell                           Package    Package        Package                              A          B            ...
Releases     common        nats        ruby    (Package)    (package)   (package)                                         ...
Jobs  使用するパッケージとテンプレートの一覧を定義する     – 実態は設定ファイルのみ     – jobsディレクトリを見よ                                          cf-release/...
Packages  パッケージのコンパイル方法を指定する     – packagesディレクトリを見よ                                                 cf-release/packages/...
srcとblob              パッケージのソースコードはsrcディレクトリに保存しておく              – gitのサブモジュールでもよい              – 実際はパッチ程度しか置いてない        ...
もくじ              BOSHとは              BOSHの基礎              BOSH環境の構築              BOSHによるオペレーション              まとめ2012-...
デプロイ作業の流れ             1. ローカルにBOSH CLI環境を構築する             2. ローカル環境にStemcellをダウンロードする             3. リモートのBOSHにStemcellをアッ...
BOSH CLIのインストール  リモートにあるBOSHを操作するためのコマンドラインインターフェース     – CloudFoundryにおけるVMCのようなもの     – ローカルに環境を作る  インストール方法は公式ドキュメントを...
デプロイ作業の流れ             1. ローカルにBOSH CLI環境を構築する             2. ローカル環境にStemcellをダウンロードする             3. ローカル環境にReleasesを作成(作成...
Micro BOSHとBOSH Deployer  Micro BOSHとは     – BOSH自体が分散システムなので、BOSHのデプロイにはBOSHが必要(無限ループ)     – 単体構成(全部入り)のBOSHであるMicro BOS...
デプロイ作業の流れ             1. ローカルにBOSH CLI環境を構築する             2. ローカル環境にStemcellをダウンロードする             3. ローカル環境にReleasesを作成(作成...
Micro BOSHのデプロイ  設定ファイルを書いてデプロイを実行する     – 設定に沿って自動的にVMが新規作成され、Micro BOSHが起動する      # Micro BOSHのデプロイ設定用ディレクトリを作る      mk...
Micro BOSHのデプロイ              動いているか確認                   bosh micro status                   Stemcell CID   sc-fa7998fa-6b...
BOSHへのログイン              BOSH CLIに対してリモートのBOSH環境を指定する                   # さっき作った(Micro)BOSHをターゲットに設定                   bos...
Stemcellのダウンロードとアップロード              Stemcellは基本的に公式のものをダウンロードして使う              # 公式stemcell一覧を見てみる              bosh publ...
Releasesの作製とアップロード              今回は独自にReleaseを作らずにcf-releaseを使う                     •   https://github.com/cloudfoundry/c...
Manifestファイルとデプロイ  Manifestファイルを作り、どのような構成でデプロイを行うかを定義する     – サンプルはこちら:https://github.com/cloudfoundry/oss-docs/blob/mas...
Manifestファイルとデプロイ networks:                           自動的に                                   払い出さないIP                  - n...
Manifestファイルとデプロイ jobs:                                                        Manifestが書けたらデプロイで実行 - name: debian_nfs_se...
もくじ              BOSHとは              BOSHの基礎              BOSH環境の構築              BOSHによるオペレーション              まとめ2012-...
BOSHによるオペレーション              BOSH CLIからJobやTaskの操作が可能              Job management                start <job> [<index>]    ...
まとめ              BOSHを使うことでシステム全体の構成管理が楽になる              Manifestファイルを書くのが大変だけど頑張ろう              まだまだ不安定な部分が多いので今後に期待  ...
Upcoming SlideShare
Loading in...5
×

すごいBOSHたのしく学ぼう

11,281

Published on

VMWareが開発を行っているOSSの分散システム構成管理ツールBOSHの紹介。環境構築からCloudFoundryのデプロイまで。

「第7回CloudFoundry輪読会」で発表を行いました: http://atnd.org/events/29652

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
11,281
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
134
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

Transcript of "すごいBOSHたのしく学ぼう"

  1. 1. すごいBOSHたのしく学ぼう岩嵜 雄大NTT Software Innovation Center2012-06-21 NTT Software Innovation Center
  2. 2. もくじ  BOSHとは  BOSHの基礎  BOSH環境の構築  BOSHによるオペレーション  まとめ2012-06-21 NTT Software Innovation Center 2
  3. 3. もくじ  BOSHとは  BOSHの基礎  BOSH環境の構築  BOSHによるオペレーション  まとめ2012-06-21 NTT Software Innovation Center 3
  4. 4. BOSHとは  CloudFoundryの環境構築はとても大変 – サーバが増えると何処で何が動いているのか分からなくなる – 動いてるサービスのバージョン管理も煩雑  BOSHが解決してくれること – 分散システム全体の構成管理を一元管理 – サービスのバージョンも管理できる – VMWare謹製なのでCloudFoundryと相性が良い https://github.com/cloudfoundry/bosh2012-06-21 NTT Software Innovation Center 4
  5. 5. それ ~ でできるよ  分散システムの構成管理ツールは前からあるのでは?  車輪の再発名になってませんか? • Puppet – 細かい作業も出来て素敵 – でもPuppet使って実際に構成管理ツール作るのすごく大変 • Chef – より新しい – でもChef使って実際に構成管理ツール作るのすごく大変 • Capistorano – Capistorano使って実際に構成管理ツール作ったら爆発した!2012-06-21 NTT Software Innovation Center 5
  6. 6. それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか? • Puppet – 大体あってる ロジック – でもPuppet使って実際に構成管理ツール作るのすごく大変 問題はココ デプロイ 起動・終了 • Chef ステータス監視 – 大体あってる バージョン管理 – でもChef使って実際に構成管理ツール作るのすごく大変 • Capistorano フレームワーク – Capistorano使って実際に構成管理ツール作ったら爆発した! Puppet Chef Capistrano2012-06-21 NTT Software Innovation Center 6
  7. 7. それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか? • Puppet – 大体あってる ロジック – でもPuppet使って実際に構成管理ツール作るのすごく大変 デプロイ BOSHはロジックを定形化 起動・終了 • Chef ステータス監視 – 大体あってる バージョン管理 – でもChef使って実際に構成管理ツール作るのすごく大変 すぐに使える • Capistorano フレームワーク – Capistorano使って実際に構成管理ツール作ったら爆発した! Puppet Chef Capistrano2012-06-21 NTT Software Innovation Center 7
  8. 8. それ ~ でできるよ  分散システムの構成管理システムは前からあるのでは?  車輪の再発名になってませんか? • Puppet – 大体あってる ロジック – でもPuppet使って実際に構成管理ツール作るのすごく大変 デプロイ BOSHはロジックを定形化 起動・終了 • Chef ステータス監視 – 大体あってる バージョン管理 – でもChef使って実際に構成管理ツール作るのすごく大変 すぐに使える • Capistorano (環境構築さえ出来れば) フレームワーク – Capistorano使って実際に構成管理ツール作ったら爆発した! Puppet Chef Capistrano2012-06-21 NTT Software Innovation Center 8
  9. 9. もくじ  BOSHとは  BOSHの基礎  BOSH環境の構築  BOSHによるオペレーション  まとめ2012-06-21 NTT Software Innovation Center 9
  10. 10. BOSHの基礎  BOSHはそれ自身が複数のシステム からなる分散システム  BOSH DirectorがVMの管理を行う  BOSH CLIを用いてユーザはBOSH Directorに指示を出す  CPIというインターフェース経由で BOSH DirectorはIaaSを操作し、 VMの作製や起動を行う (A) – vShphereとAWSに対応 – OpenStackはPistonが開発中 – CloudStackはCloudBridgeで対応? • https://groups.google.com/a/cloudfoundry.org/group/bosh-dev/browse_thread/thread/5fdec0ace4439d12?pli=1  BOSH AgentはVMにインストール され、BOSH Directorの指示に従っ https://github.com/cloudfoundry/oss-docs/blob/master/bosh/documentation/documentation.md てサービスなどの操作を行う(B)2012-06-21 NTT Software Innovation Center 10
  11. 11. Stemcell Package Package Package A B C Job A Agent Stemcell VM  StemcellはBOSHが生成するVMの基本イメージ – 実態はBOSH Agent+etc 入りのUbuntuイメージ – Stemcell自体は単体では何もサービスを提供できない – 上にJobをデプロイして使う – イメージファイルはBlobstoreに保存されている2012-06-21 NTT Software Innovation Center 11
  12. 12. Releases common nats ruby (Package) (package) (package) common nats ruby mysql nats (Job) common nats ruby mysql Agent common nats ruby mysql Stemcell common nats ruby mysql VM nats mysql_node nats mysql_node nats mysql_node nats mysql_node Release Release Release Release Release 78  BOSHが扱うアプリケーションの全体構成 – VMにデプロイする単位=Job – Jobを構成する各種サービス・プロセス=Package – バージョンアップごとにReleaseとしてスナップショットを取る • bosh create release するとreleasesディレクトリに保存される2012-06-21 NTT Software Innovation Center 12
  13. 13. Jobs  使用するパッケージとテンプレートの一覧を定義する – 実態は設定ファイルのみ – jobsディレクトリを見よ cf-release/jobs/acm/spec specファイルにJobが必要と --- name: acm • するpackageの一覧を記述す templates: acm_ctl.erb: bin/acm_ctl る acm.yml.erb: config/acm.yml syslog_forwarder.conf.erb: config/syslog_forwarder.conf packages: - libpq templateは設定ファイルなど - common - ruby • の生成に利用 - syslog_aggregator - acm --- cf-release/jobs/templates/acm.yml.erb <% db = properties.acmdb.databases.find { |db| db.tag == "acm" } %> <% role = properties.acmdb.roles.find { |role| role.tag == "admin" } %> pid: /var/vcap/sys/run/acm/acm.pid name: ACM port: 9090 mbus: nats://<%= properties.nats.user %>:<%= properties.nats.password %>@<%= properties.nats.address %>:<%= properties.nats.port %>/ logging: level: info file: /var/vcap/sys/log/acm/acm.log syslog: vcap.acm db: database: postgres://<%= role.name %>:<%= role.password %>@<%= properties.acmdb.address %>:<%= properties.acmdb.port %>/<%= db.name %> max_connections: 25 pool_timeout: 2000 basic_auth: ERB内で user: <%= properties.acm.user %> Manifestの値が password: <%= properties.acm.password %> 参照される(後述)2012-06-21 NTT Software Innovation Center 13
  14. 14. Packages  パッケージのコンパイル方法を指定する – packagesディレクトリを見よ cf-release/packages/acm/spec --- name: acm • packgeはデプロイ時にコンパ dependencies: - libpq イルが行われる(キャッシュ コンパイル時の - ruby が無い場合) files: 依存パッケージ - acm/Gemfile* - acm/bin/**/* (運用時ではない) • コンパイルはコンパイル用の - acm/lib/**/* - acm/db/**/* VMを生成してその上で行われ - acm/vendor/**/* - core/common/**/ る cf-release/packages/acm/packaging • packagingファイル がコンパイルを行う # abort script on any command that exit with a non zero value set -e スクリプトとなる cp -a * ${BOSH_INSTALL_TARGET} ( cd ${BOSH_INSTALL_TARGET}/acm bundle_cmd=/var/vcap/packages/ruby/bin/bundle libpq_dir=/var/vcap/packages/libpq $bundle_cmd config build.pg --with-pg-lib=$libpq_dir/lib --with-pg-include=$libpq_dir/include $bundle_cmd install --local --deployment --without development test )2012-06-21 NTT Software Innovation Center 14
  15. 15. srcとblob  パッケージのソースコードはsrcディレクトリに保存しておく – gitのサブモジュールでもよい – 実際はパッチ程度しか置いてない  .tar.gzなどの巨大なファイルはblobsディレクトリに入れる – releasesが肥大化するのを防ぐ • 他のマシンに環境を構築する場合に便利 – blobs内のファイルはblobstoreにアップロードする • blobstoreの設定は config/final.yml もしくはconfig/private.yml – ローカル環境にファイルが無い場合、デプロイ時(bosh upload deployment)にblobstoreからダウンロードされる – cf-releaseではblob.cfblobl.comからファイルがダウンロードされる --- cf-release/config/final.yml final_name: appcloud min_cli_version: 0.19.1 blobstore: provider: atmos options: tag: BOSH url: https://blob.cfblob.com uid: bb6a0c89ef4048a8a0f814e25385d1c5/user1 blobstore_options: deprecated2012-06-21 NTT Software Innovation Center 15
  16. 16. もくじ  BOSHとは  BOSHの基礎  BOSH環境の構築  BOSHによるオペレーション  まとめ2012-06-21 NTT Software Innovation Center 16
  17. 17. デプロイ作業の流れ 1. ローカルにBOSH CLI環境を構築する 2. ローカル環境にStemcellをダウンロードする 3. リモートのBOSHにStemcellをアップロードする 4. ローカル環境にReleasesを作成(ダウンロード)する 5. リモートのBOSHにReleaseをアップロードする – 足りないファイルはblobstoreからローカルにダウンロードされた後にアップロードされる 6. 構成を記載したManifestファイルを作る 7. Manifestファイルを使ってデプロイを行う2012-06-21 NTT Software Innovation Center 17
  18. 18. BOSH CLIのインストール  リモートにあるBOSHを操作するためのコマンドラインインターフェース – CloudFoundryにおけるVMCのようなもの – ローカルに環境を作る  インストール方法は公式ドキュメントを見よ – https://github.com/cloudfoundry/oss-docs/blob/master/bosh/documentation/documentation.md – 「Installing BOSH Command Line Interface」 – Ubuntu10.04で構築するとすんなりインストールできる # 依存パッケージのインストール # dotfileの再読み込み sudo apt-get install git-core build-essential libsqlite3-dev curl ¥ source ~/.bash_profile libmysqlclient-dev libxml2-dev libxslt-dev libpq-dev # デフォルトのRubyを1.9.2に設定 # 最新版rbenv(Ruby環境構成ツール)の取得 rbenv global 1.9.2-p290 cd ~ # gemとbundlerをアップデート・インストール(rehash忘れずに) git clone git://github.com/sstephenson/rbenv.git .rbenv rbenv rehash # rbenvにパスを通す gem update –system echo export PATH="$HOME/.rbenv/bin:$PATH" >> ~/.bash_profile gem install bundler # shimsとautocompletionを有効に rbenv rehash echo eval "$(rbenv init -)" >> ~/.bash_profile # bosh_cliをインストール # ruby1.9.2をダウンロードしてインストール gem install bosh_cli wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz rbenv rehash tar xvfz ruby-1.9.2-p290.tar.gz cd ruby-1.9.2-p290 # 動いているか確認 ./configure --prefix=$HOME/.rbenv/versions/1.9.2-p290 bosh --version make make install2012-06-21 NTT Software Innovation Center 18
  19. 19. デプロイ作業の流れ 1. ローカルにBOSH CLI環境を構築する 2. ローカル環境にStemcellをダウンロードする 3. ローカル環境にReleasesを作成(作成)する 4. リモートのBOSHにStemcellをアップロードする 5. リモートのBOSHにReleaseをアップロードする あ、BOSH環境作らないと – 足りないファイルはblobstoreからローカルにダウンロードされた後にアップロードされる 6. 構成を記載したManifestファイルを作る 7. Manifestファイルを使ってデプロイを行う2012-06-21 NTT Software Innovation Center 19
  20. 20. Micro BOSHとBOSH Deployer  Micro BOSHとは – BOSH自体が分散システムなので、BOSHのデプロイにはBOSHが必要(無限ループ) – 単体構成(全部入り)のBOSHであるMicro BOSHでブートストラップする • Micro BOSHで十分使い物になる  BOSH Deployerとは – Micro BOSHをデプロイするためのBOSH CLIの拡張 • Micro BOSHは少し特殊なので専用の拡張が必要 • 専用のStemcellをデプロイするだけで動作する – bosh micro コマンドでMicro BOSHを扱う  BOSH Deployerのインストール – BOSHリポジトリ内のファイルをinstall git clone https://github.com/cloudfoundry/bosh.git cd bosh/deployer bundle install rake install2012-06-21 NTT Software Innovation Center 20
  21. 21. デプロイ作業の流れ 1. ローカルにBOSH CLI環境を構築する 2. ローカル環境にStemcellをダウンロードする 3. ローカル環境にReleasesを作成(作成)する 4. リモートのBOSHにStemcellをアップロードする 5. リモートのBOSHにReleaseをアップロードする ここから先は IaaS が vSphare の場合です – 足りないファイルはblobstoreからローカルにダウンロードされた後にアップロードされる AWSでは設定が異なります 6. 構成を記載したManifestファイルを作る 7. Manifestファイルを使ってデプロイを行う2012-06-21 NTT Software Innovation Center 21
  22. 22. Micro BOSHのデプロイ  設定ファイルを書いてデプロイを実行する – 設定に沿って自動的にVMが新規作成され、Micro BOSHが起動する # Micro BOSHのデプロイ設定用ディレクトリを作る mkdir ~/deployments; cd ~/deployments mkdir micro01; cd micro01 vi micro_bosh.yml --- name: micro01 (デプロイ名:任意) # 専用のStemcellをダウンロードしてくる network: (Micro Boshを動かすネットワークの設定) ip: 192.168.12.132 (Micro BOSHのサーバIP) mkdir ~/stemcells; cd ~/stemcells netmask: 255.255.252.0 bosh download public stemcell ¥ gateway: 192.168.12.1 micro-bosh-stemcell-0.1.0.tgz dns: - 192.168.3.1 # デプロイを実行(新しいVMが自動で作成される) cloud_properties: (vCenter上でどのネットワークにつなげるか) cd ~/deployments name: VM Network bosh micro deployment micro01 cloud: bosh micro deploy ¥ plugin: vsphere (vSphereを使うという宣言) ~/stemcells/micro-bosh-stemcell-0.1.0.tgz properties: agent: ntp: - 192.168.3.1 vcenters: (デプロイ先のvCenterの設定) - host: 192.168.15.1 user: Administrator password: ****** datacenters: - name: dell1 (データセンター名) vm_folder: bosh_vm template_folder: bosh_template disk_path: bosh_disk datastore_pattern: netstor2 persistent_datastore_pattern: netstor2 allow_mixed_datastores: true vCenter上で clusters: - BoshTest (オプション) 設定に合わせてフォルダを作る2012-06-21 NTT Software Innovation Center 22
  23. 23. Micro BOSHのデプロイ  動いているか確認 bosh micro status Stemcell CID sc-fa7998fa-6bd0-4c69-bcde-6c7fde5c653c Stemcell name micro-bosh-stemcell-0.1.0 VM CID vm-b2d540a2-59a7-4b83-9476-6bfdcb0a4652 Disk CID 1 Micro BOSH CID bm-82a2b61f-eee4-4d4c-afc4-9021873e50ea Deployment /home/testuser/deployments/micro01/micro_bosh.yml Target micro (http://192.168.12.132:25555) Ver: 0.4 (00000000)  以降ではこのMicro BOSH環境を単なるBOSH環境として扱う – bosh(not bosh micro)コマンドを使う上では両者は同一である2012-06-21 NTT Software Innovation Center 23
  24. 24. BOSHへのログイン  BOSH CLIに対してリモートのBOSH環境を指定する # さっき作った(Micro)BOSHをターゲットに設定 bosh target 192.168.12.132:25555 # admin/adminでログイン可能2012-06-21 NTT Software Innovation Center 24
  25. 25. Stemcellのダウンロードとアップロード  Stemcellは基本的に公式のものをダウンロードして使う # 公式stemcell一覧を見てみる bosh public stemcells +-------------------------------+-------------------------------------------------------+ | Name | Url | +-------------------------------+-------------------------------------------------------+ | bosh-stemcell-0.3.0.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca41e1... | | bosh-stemcell-0.4.4.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca51e1... | | bosh-stemcell-0.4.7.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca21e1... | | bosh-stemcell-0.5.2.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca31e1... | | bosh-stemcell-aws-0.5.1.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca21e1... | | micro-bosh-stemcell-0.1.0.tgz | https://blob.cfblob.com/rest/objects/4e4e78bca51e1... | +-------------------------------+-------------------------------------------------------+ To download use bosh download public stemcell <stemcell_name>.For full url use --full. # stemcellのダウンロード(単なるtgzファイルなので適当なフォルダに置いておく) bosh download public stemcell bosh-stemcell-0.5.2.tgz  BOSHへアップロード bosh upload stemcell bosh-stemcell-0.5.2.tgz # 確認してみる bosh stemcells +---------------+---------+-----------------------------------------+ | Name | Version | CID | +---------------+---------+-----------------------------------------+ | bosh-stemcell | 0.5.2 | sc-c7758729-77df-4884-b2e2-c798e6be1a37 | +---------------+---------+-----------------------------------------+ Stemcells total: 12012-06-21 NTT Software Innovation Center 25
  26. 26. Releasesの作製とアップロード  今回は独自にReleaseを作らずにcf-releaseを使う • https://github.com/cloudfoundry/cf-release – 独自にReleaseを作りたい場合は公式ドキュメントが参考になる # リリースファイルをgithubからクローン git clone https://github.com/cloudfoundry/cf-release.git cd cf-release # リリース78をBOSHにアップロード bosh upload release releases/appcloud-78.yml # 確認してみる bosh releases +----------+----------+ | Name | Versions | +----------+----------+ | appcloud | 78 | +----------+----------+ Releases total: 12012-06-21 NTT Software Innovation Center 26
  27. 27. Manifestファイルとデプロイ  Manifestファイルを作り、どのような構成でデプロイを行うかを定義する – サンプルはこちら:https://github.com/cloudfoundry/oss-docs/blob/master/bosh/samples/cloudfoundry.yml – ただし、古いので最新リリースでは動かない  非常に長いので要点だけ bosh status で確認できるUUID --- name: cf01 director_uuid: 2f27ef11-29ea-47b9-b416-979d15b25b6c release: name: appcloud version: 78 Releaseの 名前とバージョン compilation: workers: 4 コンパイル用VMの network: default 設定 cloud_properties: ram: 4096 workers: VM数 disk: 8096 cpu: 2 update: canaries: 1 canary_watch_time: 3000-90000 アップデート時の update_watch_time: 3000-90000 検証用VMの設定 max_in_flight: 2 max_errors: 12012-06-21 NTT Software Innovation Center 27
  28. 28. Manifestファイルとデプロイ networks: 自動的に 払い出さないIP - name: deas - name: default network: default subnets: size: 4 VMのリソースプール - reserved: - 192.168.12.2 - 192.168.12.255 stemcell: name: bosh-stemcell DEAだけは別に設定 - 192.168.13.1 - 192.168.13.255 version: 0.5.2 - 192.168.14.1 - 192.168.14.9 cloud_properties: - 192.168.15.1 - 192.168.15.254 ram: 2048 static: disk: 16384 - 192.168.14.10 - 192.168.14.140 cpu: 2 range: 192.168.12.0/22 env: gateway: 192.168.12.1 bosh: dns: password: ******************** - 192.168.3.1 IPを払い出すレンジ # c1oudc0w - password generated using mkpasswd -m sha- cloud_properties: 512 name: VM Network resource_pools: - name: infrastructure network: default size: 32 VMのリソースプール stemcell: name: bosh-stemcell 共通設定 version: 0.5.2 cloud_properties: ram: 2048 disk: 8192 cpu: 1 env: bosh: password: ******************** # c1oudc0w - password generated using mkpasswd -m sha-5122012-06-21 NTT Software Innovation Center 28
  29. 29. Manifestファイルとデプロイ jobs:  Manifestが書けたらデプロイで実行 - name: debian_nfs_server template: debian_nfs_server # Manifestを指定 instances: 1 bosh deployment ./cf01.yml resource_pool: infrastructure persistent_disk: 8192 # デプロイ networks: bosh deploy Jobごとに - name: default static_ips: - 192.168.14.10 いくつVMを - 以下他のJobの設定 作るかを指定 … properties: domain: cloudfoundry.test env: {} networks: apps: default 共通設定を記述 management: default 値はJobのtemplate内で nats: 利用可能 user: nats password: aaa3ij3122 address: 192.168.14.11 port: 4222 以下他のpropertyの設定 …2012-06-21 NTT Software Innovation Center 29
  30. 30. もくじ  BOSHとは  BOSHの基礎  BOSH環境の構築  BOSHによるオペレーション  まとめ2012-06-21 NTT Software Innovation Center 30
  31. 31. BOSHによるオペレーション  BOSH CLIからJobやTaskの操作が可能 Job management start <job> [<index>] Start job/instance stop <job> [<index>] Stop job/instance --soft stop process only --hard power off VM restart <job> [<index>] Restart job/instance (soft stop + start) recreate <job> [<index>] Recreate job/instance (hard stop + start) Log management logs <job> <index> Fetch job (default) or agent (if option provided) logs --agent fetch agent logs --only <filter1>[...] only fetch logs that satisfy given filters (defined in job spec) --all fetch all files in the job or agent log directory Task management tasks Show the list of running tasks tasks recent [<number>] Show <number> recent tasks task [<task_id>|last] Show task status and start tracking its output --no-cache dont cache output locally --event|--soap|--debug different log types to track --raw dont beautify log cancel task <id> Cancel task once it reaches the next cancel checkpoint  Manifest変更後に再度bosh deployすると変更が反映される2012-06-21 NTT Software Innovation Center 31
  32. 32. まとめ  BOSHを使うことでシステム全体の構成管理が楽になる  Manifestファイルを書くのが大変だけど頑張ろう  まだまだ不安定な部分が多いので今後に期待  よくあるトラブル – デプロイ中にBOSH Agentが応答しなくなる • メモリ不足の可能性あり。VMのメモリは最低4GBにしておく – bosh upload releaseが失敗する • HDDがいっぱいになっている可能性あり。/tmpにたまってるファイルを消す – UAADBとCCDB周りでManifestのエラーが出る • テンプレートが変わったので対応する • https://github.com/cloudfoundry/cf-release/commit/3a1abefe7352c22b4fff70dee9ae27c111ba75c82012-06-21 NTT Software Innovation Center 32
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×