CloudFoundry(v194)をbosh-lite上にデプロイする
事前にインストールするもの
- virtualbox: https://www.virtualbox.org/wiki/Downloads
- vagrant: https://www.vagrantup.com/downloads.html
- vagrant-vbox-snapshot: http://qiita.com/takuan_osho/items/682b776b41989f0b016f
- spiff: https://github.com/cloudfoundry-incubator/spiff/releases
- ruby: https://github.com/sstephenson/rbenv
- cf: https://github.com/cloudfoundry/cli/releases
注意事項
- bosh-liteだけでメモリは8GB必要になる
- bosh-liteはvagrant-haltすると復旧不可になる
-- vagrant-snapshotからは復旧可能 - 稀にvagrant-sshやsnapshotまで使えなくなることがある
-- よくわからなくなったときはvagrant destoryして最初からやり直し
CloudFoundryのインストール
$ mkdir ~/workspace
$ cd ~/workspace
$ git clone https://github.com/cloudfoundry/bosh-lite
$ cd bosh-lite
$ vagrant up
$ bin/add-route
$ gem install bosh_cli --no-rdoc --no-ri
$ bosh target 192.168.50.4 lite
# admin admin でログイン
$ bosh login
#######
$ cd ~/workspace
$ git clone https://github.com/cloudfoundry/cf-release
$ cd cf-release
$ git checkout -b _v194 refs/tags/v194
$ ./update
# (時間がかかる)
$ bosh create release
# (時間がかかる)
$ bosh upload release releases/cf-194.yml
#######
$ cd ~/workspace/bosh-lite
$ wget http://bosh-jenkins-artifacts.s3.amazonaws.com/bosh-stemcell/warden/latest-bosh-stemcell-warden.tgz
$ bosh upload stemcell latest-bosh-stemcell-warden.tgz
$ bin/make_manifest_spiff
$ bosh deploy
# (時間がかかる)
## 状態の確認
$ bosh vms
Deployment `cf-warden'
Director task 4
Task 4 done
+------------------------------------+---------+---------------+--------------+
| Job/index | State | Resource Pool | IPs |
+------------------------------------+---------+---------------+--------------+
| unknown/unknown | running | small_errand | 10.244.0.182 |
| unknown/unknown | running | small_errand | 10.244.0.178 |
| api_z1/0 | running | large_z1 | 10.244.0.138 |
| etcd_z1/0 | running | medium_z1 | 10.244.0.42 |
| ha_proxy_z1/0 | running | router_z1 | 10.244.0.34 |
| hm9000_z1/0 | running | medium_z1 | 10.244.0.142 |
| loggregator_trafficcontroller_z1/0 | running | small_z1 | 10.244.0.150 |
| loggregator_z1/0 | running | medium_z1 | 10.244.0.146 |
| login_z1/0 | running | medium_z1 | 10.244.0.134 |
| nats_z1/0 | running | medium_z1 | 10.244.0.6 |
| postgres_z1/0 | running | medium_z1 | 10.244.0.30 |
| router_z1/0 | running | router_z1 | 10.244.0.22 |
| runner_z1/0 | running | runner_z1 | 10.244.0.26 |
| uaa_z1/0 | running | medium_z1 | 10.244.0.130 |
+------------------------------------+---------+---------------+--------------+
VMs total: 14
# ここで一旦snapshotを作成する
$ vagrant snapshot take cfv194
サンプルアプリをpushして動作確認
$ cf login -a api.10.244.0.34.xip.io --skip-ssl-validation -u admin -p admin
$ cf create-org admin-org
$ cf create-space admin-space -o admin-org
$ cf target -o admin-org -s admin-space
$ cd ~/workspace
$ git clone https://github.com/cloudfoundry/cf-acceptance-tests
$ cd cf-acceptance-tests/assets/golang
$ cf push go1
$ cf apps
Getting apps in org admin-org / space admin-space as admin...
OK
name requested state instances memory disk urls
go1 started 1/1 256M 1G go1.10.244.0.34.xip.io
bindするservicesをdeployする
$ cd ~/workspace
$ wget https://cf-contrib.s3.amazonaws.com/boshrelease-cf-services-contrib-6.tgz
$ bosh upload release boshrelease-cf-services-contrib-6.tgz
$ git clone https://github.com/cloudfoundry-community/cf-services-contrib-release
$ cd cf-services-contrib-release
$ git checkout v6
$ templates/make_manifest warden
$ bosh -n deploy
# (時間がかかる)
## 状態の確認
$ bosh vms
Deployment `cf-services-contrib'
Director task 7
Task 7 done
+----------------------+---------+---------------+-------------+
| Job/index | State | Resource Pool | IPs |
+----------------------+---------+---------------+-------------+
| mongodb_gateway/0 | running | gateway_z1 | 10.244.1.2 |
| mongodb_node/0 | running | node_z1 | 10.244.1.82 |
| postgresql_gateway/0 | running | gateway_z1 | 10.244.1.10 |
| postgresql_node/0 | running | node_z1 | 10.244.1.90 |
| rabbit_gateway/0 | running | gateway_z1 | 10.244.1.6 |
| rabbit_node/0 | running | node_z1 | 10.244.1.86 |
| redis_gateway/0 | running | gateway_z1 | 10.244.1.14 |
| redis_node/0 | running | node_z1 | 10.244.1.94 |
+----------------------+---------+---------------+-------------+
VMs total: 8
Deployment `cf-warden'
Director task 8
Task 8 done
+------------------------------------+---------+---------------+--------------+
| Job/index | State | Resource Pool | IPs |
+------------------------------------+---------+---------------+--------------+
| unknown/unknown | running | small_errand | 10.244.0.178 |
| unknown/unknown | running | small_errand | 10.244.0.182 |
| api_z1/0 | running | large_z1 | 10.244.0.138 |
| etcd_z1/0 | running | medium_z1 | 10.244.0.42 |
| ha_proxy_z1/0 | running | router_z1 | 10.244.0.34 |
| hm9000_z1/0 | running | medium_z1 | 10.244.0.142 |
| loggregator_trafficcontroller_z1/0 | running | small_z1 | 10.244.0.150 |
| loggregator_z1/0 | running | medium_z1 | 10.244.0.146 |
| login_z1/0 | running | medium_z1 | 10.244.0.134 |
| nats_z1/0 | running | medium_z1 | 10.244.0.6 |
| postgres_z1/0 | running | medium_z1 | 10.244.0.30 |
| router_z1/0 | running | router_z1 | 10.244.0.22 |
| runner_z1/0 | running | runner_z1 | 10.244.0.26 |
| uaa_z1/0 | running | medium_z1 | 10.244.0.130 |
+------------------------------------+---------+---------------+--------------+
VMs total: 14
servicesが使えるように設定する
# create-serviceするための設定
$ cf create-service-auth-token mongodb core c1oudc0w
$ cf create-service-auth-token postgresql core c1oudc0w
$ cf create-service-auth-token rabbitmq core c1oudc0w
$ cf create-service-auth-token redis core c1oudc0w
# アプリとserviceの通信許可設定
$ cf curl /v2/security_groups -X POST -d '
{
"name": "fullaccess",
"rules": [
{
"protocol": "all",
"destination": "0.0.0.0/0"
}
]
}'
$ cf bind-security-group fullaccess admin-org admin-space
# ここで一旦snapshotを作成する
$ vagrant snapshot take addservices
サンプルアプリ(redis)をpushして動作確認
$ cd ~/workspace
$ git clone https://github.com/k-kurumi/cf_sample_app1
$ cd cf_sample_app1
# manifest.ymlにあるmyredis1を作る
$ cf create-service redis default myredis1
$ cf push
# bind自体はmanifest.ymlを元に実施される
# serviceはアプリの環境変数VCAP_SERVICESから参照する
# redisでインクリメントされることを確認
$ curl myapp1.10.244.0.34.xip.io
Hello World! I have been seen 1 times.
$ curl myapp1.10.244.0.34.xip.io
Hello World! I have been seen 2 times.