BOSHでお手軽CFデプロイon AWS

  • 5,361 views
Uploaded on

構成管理ツールのBOSHを使用して、AWSにCloud Foundry環境を簡単に構築する方法を紹介します。

構成管理ツールのBOSHを使用して、AWSにCloud Foundry環境を簡単に構築する方法を紹介します。

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,361
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
19
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. BOSH でお手軽 CF デプロイon AWS Iwasaki Yudai @i_yudai NTT Laboratory Software Innovation Center 2013-08-23
  • 2. AWS環境でのCFインスタンス構築 – MicroBOSH – Cloud Foundry – ビルトインサービス 今日の内容 2
  • 3. BOSHとCloud Foudryのインストール 3 Based on: Dr Nic’s “Build Your Own Heroku With Open Source Cloud Foundry” https://github.com/cloudfoundry-community/bosh-cloudfoundry/blob/master/tutorials/
  • 4. AWSアカウント AWS使用料 Ruby1.9.3 Git 必要なもの 4
  • 5. $500/月 程度 (ap-northeast-1 Tokyo) – 生成されるVM • m1.small * 4 (Cloud Foundry) • m1.small * 1 (Inception Server) • m1.medium * 1 (MicroBOSH) – その他 • Elastic IP * 2 • Volumes が数十GB AWS使用料について
  • 6. Inceptionサーバとは – 諸般の事情によりus-east-1以外のリージョンで 必要となる踏み台サーバ – inception-serverを使用 • https://github.com/cloudfoundry-community/inception-server Inception Serverのセットアップ(1) # Gem のインストール $ gem install inception-server
  • 7. Inception Serverのセットアップ(2) # 新しいInceptionサーバーを起動 $ inception-server deploy 1. AWS 2. OpenStack Choose your infrastructure: 1 Using provider AWS Access key: *********************** Secret key: ******************************** 1. *US East (Northern Virginia) Region (us-east-1) 2. US West (Oregon) Region (us-west-2) 3. US West (Northern California) Region (us-west-1) 4. EU (Ireland) Region (eu-west-1) 5. Asia Pacific (Singapore) Region (ap-southeast-1) 6. Asia Pacific (Sydney) Region (ap-southeast-2) 7. Asia Pacific (Tokyo) Region (ap-northeast-1) 8. South America (Sao Paulo) Region (sa-east-1) Choose AWS region: 7 Confirming: Using AWS/ap-northeast-1 .... 注)使用しない Elastic IPが 払い出されているので削除する
  • 8. Inception Serverのセットアップ(3) # InceptionサーバーにSSHで接続 $ inception-server ssh # SSH鍵を生成しておく $ ssh-keygen -N '' -f ~/.ssh/id_rsa # 少しだけ細かい環境の修正(Gemをインストールできるようにす る) $ sudo usermod -a -G rvm ubuntu $ sudo chmod g+w /usr/local/rvm –R # グループ変更を反映するために再接続する $ exit $ inception-server ssh 以降の操作はすべてInceptionサーバ上で行います
  • 9. bosh-bootstrap を使用する – https://github.com/cloudfoundry-community/bosh-cloudfoundry – MicroBOSH を1コマンドでデプロイできる – Inceptionサーバ上で使用する場合はアクセ スキーの再入力は不要 MicroBOSHのセットアップ(1) # Gem のインストール $ gem install bosh-bootstrap
  • 10. MicroBOSHのセットアップ(2) $ bosh-bootstrap deploy Auto-detected infrastructure API credentials at ~/.fog (override with $FOG) 1. AWS (default) 2. Alternate credentials Choose an auto-detected infrastructure: 1 Using provider AWS 1. *US East (Northern Virginia) Region (us-east-1) 2. US West (Oregon) Region (us-west-2) 3. US West (Northern California) Region (us-west-1) 4. EU (Ireland) Region (eu-west-1) 5. Asia Pacific (Singapore) Region (ap-southeast-1) 6. Asia Pacific (Sydney) Region (ap-southeast-2) 7. Asia Pacific (Tokyo) Region (ap-northeast-1) 8. South America (Sao Paulo) Region (sa-east-1) Choose AWS region: 7 Confirming: Using AWS/ap-northeast-1 ...
  • 11. MicroBOSHのセットアップ(3) # bosh-bootstrap deploy の実行結果の続き # 最後から3行目に表示される IP アドレスが MicroBOSH のIPアドレスとなる ... WARNING! Your target has been changed to `https://203.0.113.1:25555'! Deployment set to '/home/ubuntu/.microbosh/deployments/firstbosh/micro_bosh.yml‘ Deployed `firstbosh/micro_bosh.yml' to `https://firstbosh:25555', took 00:19:34 to complete # MicroBOSH をターゲットする $ bosh target https://203.0.113.1:25555 Target set to `firstbosh‘ Your username: admin Enter password: admin Logged in as `admin'
  • 12.  bosh-cloudfoundry を使用する – https://github.com/cloudfoundry-community/bosh-cloudfoundry – BOSH CLIのプラグイン – Deployment Manifestを自動生成してくれる  事前準備 – Elastic IPを1つ払いだしておく • 例:203.0.113.2 – Security Groupを作っておく • 名前: cf • 開放ポート: – TCP (Source 0.0.0.0/0): 22, 80, 443 – TCP (Source 同一SG): 1-65535 –UDP(Source 同一SG): 1-65535 Cloud Foundryのセットアップ(1)
  • 13. Cloud Foundryのセットアップ(2) # 最新の BOSH CLI をインストールする $ gem install bosh_cli -v "~> 1.5.0.pre" ¥ --source https://s3.amazonaws.com/bosh-jenkins-gems/ # bosh-cloudfoundryのインストール $ gem install bosh-cloudfoundry # デプロイの準備(cr-releaseのダウンロードなど) $ bosh prepare cf
  • 14. Cloud Foundryのセットアップ(3) $ bosh create cf --ip 203.0.113.2 --security-group cf Fetching bosh information OK CPI: aws DNS mapping: 203.0.113.2.xip.io --> ["203.0.113.2"] Deployment name: cf-1377155859 Deployment size: medium Persistent disk: 4096 Security group: cf Validating deployment size OK Resolve DNS OK Resolve DNS 'api.203.0.113.2.xip.io' to IP '203.0.113.2' OK `api.203.0.113.2.xip.io' maps to 203.0.113.2 Resolve DNS OK Resolve DNS 'demoapp.203.0.113.2.xip.io' to IP '203.0.113.2' OK `demoapp.203.0.113.2.xip.io' maps to 203.0.113.2 Security group cf exists with ports 22, 80, 443, 4222 (type 'yes' to continue): yes Creating Cloud Foundry (type 'yes' to continue): yes Checking/creating /home/ubuntu/deployments/cf for deployment files OK Creating deployment file /home/ubuntu/deployments/cf/cf-1377155859.yml OK Deployment set to `/home/ubuntu/deployments/cf/cf-1377155859.yml' Getting deployment properties from director... Unable to get properties list from director, trying without it... Compiling deployment manifest... Cannot get current deployment information from director, possibly a new deployment Please review all changes carefully Deploying `cf-1377155859.yml' to `firstbosh' (type 'yes' to continue): yes ...
  • 15. Cloud Foundryのセットアップ(4) # デプロイされた VM の確認 $ bosh vms ... +-----------+---------+---------------+-----------------------------+ | Job/index | State | Resource Pool | IPs | +-----------+---------+---------------+-----------------------------+ | api/0 | running | small | 10.122.54.35, 203.0.113.2 | | core/0 | running | small | 10.121.11.212 | | data/0 | running | small | 10.121.14.213 | | dea/0 | running | small | 10.122.29.169 | +-----------+---------+---------------+-----------------------------+ VMs total: 4 # CFの設定値を確認 # common_password が admin ユーザのパスワードになる $ bosh show cf attributes Fetching bosh information OK Immutable attributes: common_password: e80011989a71 deployment_size: medium name: cf-1377155859 Mutable (changable) attributes: ip_addresses: ["203.0.113.2"] persistent_disk: 4096 security_group: cf dns: 203.0.113.2.xip.io
  • 16. Cloud Foundryのセットアップ(5) # cf コマンドのインストール # 今回インストールされるCFは 5.x に対応していないので 4.2.8 $ gem install cf –v 4.2.8 # デフォルトのターゲットは xip.io で設定されている # 例)api.203.0.113.2.xip.io $ cf target api.203.0.113.2.xip.io # admin ユーザでログイン # パスワードは前頁参照 $ cf login admin target: http://api.203.0.113.2.xip.io Password> e80011989a71 Authenticating... OK There are no spaces. You may want to create one with create-space.... OK
  • 17. bosh create cf のオプション – --size • VMの台数(medium, large, xlarge) • デフォルトはmedium – --domain • ドメイン名 • デフォルトは <IP Address>.xip.io 個別の設定 – deploymentsディレクトリ内のマニフェ ストファイルを手動で編集して bosh deploy Cloud Foundryのカスタマイズ
  • 18. ビルトインサービスの追加
  • 19. ビルトインサービスは別途インストールす る必要がある – https://github.com/cloudfoundry/cf-services-contrib-release – コミュニティ版 • cf-services-releaseはPivotalがメンテナンスしている がMySQLしかない m1.small * 8 が追加で必要 ビルトインサービスを追加する 19
  • 20. ビルトインサービスのデプロイ # ソースコードを Clone $ git clone https://github.com/cloudfoundry/cf-services-contrib- release.git # 最新版で構成するために、dev リリースを生成する $ cd cf-services-contrib-release $ git submodule update --init –recursive $ bosh create release # BOSH にリリースをアップロード $ bosh upload release dev_releases/cf-services-contrib-1.1-dev.yml # デプロイメントマニフェストを記述 # 変更点は gist 参照のこと:https://gist.github.com/yudai/6308528 $ vi examples/dns-all.yml # デプロイの実行 $ bosh deployment example/dns-all.yml $ bosh deploy
  • 21. ビルトインサービスの使用 # AUTH TOKEN の登録 # Tokenの値はデプロイメントマニフェストに記述されている # postgres 以外のサービスについても同様に実行する $ cf create-service-auth-token Label> postgresql Token> POSTGRESQL_SERVICE_TOKEN Creating service auth token... OK # 使用可能なサービスの一覧を表示して確認 $ cf services --marketplace Getting services... OK service version provider plans description blob 0.51 core default Blob store elasticsearch 0.20 core free Elasticsearch search service memcached 1.4 core default Memcached in-memory cache mongodb 2.2 core default MongoDB NoSQL database postgresql 9.2 core default PostgreSQL database rabbitmq 3.0 core default RabbitMQ message queue redis 2.6 core default Redis key-value store