开源的PaaS方案:在OpenStack上部署CloudFoundry (四)使用Micro Bosh部署CloudFoundry

使用bosh部署应用是需要两部分,一个是创建虚拟机使用的模板stemcell,另外一个是应该的Release。所以,部署CloudFoundry之前需要上传stencil和release

4.1.1 使用spiff 生成 CF 配置文件

  1 安装 spiff

  官方原文 http://docs.cloudfoundry.org/deploying/cf-manifest-spiff.html

  安装  curl

  sudo yum install curl

  安装 brew

  ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  安装 xoebus

  brew tap xoebus/homebrew-cloudfoundry

  安装 spiff

  brew install spiff

  因为go godep 等 源码都是在google 上的 所以需要修改/etc/hosts 文件

  加入

  216.239.90.113 storage.googleapis.com

  216.239.90.113 go.googlesource.com

  216.239.90.113 code.google.com

  设置环境变量 gopath

$ export GOPATH=/usr/local/go

$ export PATH=$PATH:$GOPATH/bin

  克隆cloudfoundry

git clone git@github.com:cloudfoundry/cf-release
cd cf-release
./update  

  

 根据实际条件修改配置文件
原文参考
http://docs.cloudfoundry.org/deploying/cf-stub-openstack.html 修改cf-release/spec/fixtures/openstack/cf-stub.yml 文件
# The following line helps maintain current documentation at http://docs.cloudfoundry.org.
# code_snippet cf-stub-openstack start
---
director_uuid: 90c73a6e-4fd1-41bb-9282-299eb49af9fc
meta:
openstack:
net_id: 9e5a6fd5-fa2e-48da-94ce-f85337bc2451
auth_url: http://172.24.10.128:5000/v2.0
tenant: demo
username: demo
api_key: openstack
security_groups: [bosh]
floating_static_ips:
- 172.24.10.133
networks:
- name: cf1
subnets:
- cloud_properties:
static:
- 10.0.5.20 - 10.0.5.50
properties:
cc:
droplets:
droplet_directory_key: cloudfoundry-droplets
buildpacks:
buildpack_directory_key: cloudfoundry-buildpacks
staging_upload_user: update
staging_upload_password: openstack
bulk_api_password: openstack
db_encryption_key: openstack
ccdb:
roles:
- name: ccadmin
password: openstack
tag: admin
databases:
roles:
- name: ccadmin
password: openstack
- name: uaaadmin
password: openstack
dea_next:
disk_mb: 2048
memory_mb: 1024
domain: example.com
loggregator_endpoint:
shared_secret: openstack
nats:
user: nats
password: openstack
router:
enable_ssl: true
ssl_cert: |
-----BEGIN CERTIFICATE-----
MIIDBjCCAe4CCQCz3nn1SWrDdTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJB
VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTE1MDMwMzE4NTMyNloXDTE2MDMwMjE4NTMyNlowRTELMAkG
A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AKtTK9xq/ycRO3fWbk1abunYf9CY6sl0Wlqm9UPMkI4j0itY2OyGyn1YuCCiEdM3
b8guGSWB0XSL5PBq33e7ioiaH98UEe+Ai+TBxnJsro5WQ/TMywzRDhZ4E7gxDBav
88ZY+y7ts0HznfxqEIn0Gu/UK+s6ajYcIy7d9L988+hA3K1FSdes8MavXhrI4xA1
fY21gESfFkD4SsqvrkISC012pa7oVw1f94slIVcAG+l9MMAkatBGxgWAQO6kxk5o
oH1Z5q2m0afeQBfFqzu5lCITLfgTWCUZUmbF6UpRhmD850/LqNtryAPrLLqXxdig
OHiWqvFpCusOu/4z1uGC5xECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAV5RAFVQy
8Krs5c9ebYRseXO6czL9/Rfrt/weiC1XLcDkE2i2yYsBXazMYr58o4hACJwe2hoC
bihBZ9XnVpASEYHDLwDj3zxFP/bTuKs7tLhP7wz0lo8i6k5VSPAGBq2kjc/cO9a3
TMmLPks/Xm42MCSWGDnCEX1854B3+JK3CNEGqSY7FYXU4W9pZtHPZ3gBoy0ymSpg
mpleiY1Tbn5I2X7vviMW7jeviB5ivkZaXtObjyM3vtPLB+ILpa15ZhDSE5o71sjA
jXqrE1n5o/GXHX+1M8v3aJc30Az7QAqWohW/tw5SoiSmVQZWd7gFht9vSzaH2WgO
LwcpBC7+cUJEww==
-----END CERTIFICATE-----
ssl_key: |
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAq1Mr3Gr/JxE7d9ZuTVpu6dh/0JjqyXRaWqb1Q8yQjiPSK1jY
7IbKfVi4IKIR0zdvyC4ZJYHRdIvk8Grfd7uKiJof3xQR74CL5MHGcmyujlZD9MzL
DNEOFngTuDEMFq/zxlj7Lu2zQfOd/GoQifQa79Qr6zpqNhwjLt30v3zz6EDcrUVJ
16zwxq9eGsjjEDV9jbWARJ8WQPhKyq+uQhILTXalruhXDV/3iyUhVwAb6X0wwCRq
0EbGBYBA7qTGTmigfVnmrabRp95AF8WrO7mUIhMt+BNYJRlSZsXpSlGGYPznT8uo
22vIA+ssupfF2KA4eJaq8WkK6w67/jPW4YLnEQIDAQABAoIBAQCDVqpcOoZKK9K8
Bt3eXQKEMJ2ji2cKczFFJ5MEm9EBtoJLCryZbqfSue3Fzpj9pBUEkBpk/4VT5F7o
0/Vmc5Y7LHRcbqVlRtV30/lPBPQ4V/eWtly/AZDcNsdfP/J1fgPSvaoqCr2ORLWL
qL/vEfyIeM4GcWy0+JMcPbmABslw9O6Ptc5RGiP98vCLHQh/++sOtj6PH1pt+2X/
Uecv3b1Hk/3Oe+M8ySorJD3KA94QTRnKX+zubkxRg/zCAki+as8rQc/d+BfVG698
ylUT5LVLNuwbWnffY2Zt5x5CDqH01mJnHmxzQEfn68rb3bGFaYPEn9EP+maQijv6
SsUM9A3lAoGBAODRDRn4gEIxjPICp6aawRrMDlRc+k6IWDF7wudjxJlaxFr2t7FF
rFYm+jrcG6qMTyq+teR8uHpcKm9X8ax0L6N6gw5rVzIeIOGma/ZuYIYXX2XJx5SW
SOas1xW6qEIbOMv+Xu9w2SWbhTgyRmtlxxjr2e7gQLz9z/vuTReJpInnAoGBAMMW
sq5lqUfAQzqxlhTobQ7tnB48rUQvkGPE92SlDj2TUt9phek2/TgRJT6mdcozvimt
JPhxKg3ioxG8NPmN0EytjpSiKqlxS1R2po0fb75vputfpw16Z8/2Vik+xYqNMTLo
SpeVkHu7fbtNYEK2qcU44OyOZ/V+5Oo9TuBIFRhHAoGACkqHhwDRHjaWdR2Z/w5m
eIuOvF3lN2MWZm175ouynDKDeoaAsiS2VttB6R/aRFxX42UHfoYXC8LcTmyAK5zF
8X3SMf7H5wtqBepQVt+Gm5zGSSqLcEnQ3H5c+impOh105CGoxt0rk4Ui/AeRIalv
C70AJOcvD3eu5aFq9gDe/1ECgYBAhkVbASzYGnMh+pKVH7rScSxto8v6/XBYT1Ez
7JOlMhD667/qvtFJtgIHkq7qzepbhnTv5x3tscQVnZY34/u9ILpD1s8dc+dibEvx
6S/gYLVorB5ois/DLMqaobRcew6Gs+XX9RPwmLahOJpZ9mh4XrOmCgPAYtP71YM9
ExpHCQKBgQCMMDDWGMRdFMJgXbx1uMere7OoniBdZaOexjbglRh1rMVSXqzBoU8+
yhEuHGAsHGWQdSBHnqRe9O0Bj/Vlw2VVEaJeL1ewRHb+jXSnuKclZOJgMsJAvgGm
SOWIahDrATA4g1T6yLBWQPhj3ZXD3eCMxT1Q3DvpG1DjgvXwmXQJAA==
-----END RSA PRIVATE KEY-----
cipher_suites: TLS_RSA_WITH_RC4_128_SHA:TLS_RSA_WITH_AES_128_CBC_SHA
status:
user: router_user
password: openstack
secure_cookies: true
uaa:
admin:
client_secret: openstack
batch:
username: batch
password: openstack
cc:
client_secret: openstack
clients:
app-direct:
secret: openstack
developer_console:
secret: openstack
notifications:
secret: openstack
login:
secret: openstack
doppler:
secret: openstack
cloud_controller_username_lookup:
secret: cloud_controller_username_lookup_secret
gorouter:
secret: openstack
jwt:
verification_key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw6WKxiVxx5+rqoMvj4vk
X5FpipdWaVLpcPhmN8O5ut2bqcU8KV6pMV7/n+zowITVFHCbS/6J6Uk875NclTC1
UI86Pxn3c+14KYL6KLe/Gi8McRyqvO5BpkQr3BTtBe9Z0EMgoeq5fAol2Lc/8SNz
/uLdSkMc5CmtpEgZ7isnsc8ExSDCchRmrCmKaxIPxNUZvCYgqqXXduHBln1/MBJV
YjsEXZZSbhLWzVaFOdAKkU9DlWxqI6sRWFSl6qZ3JCuMh3MQqLnFFXPAX8C9hxFV
oC2i7Fe6AIFyECJijgfieqi0PiBdMZ29Kj36gssktVhE+5TAcGCdFqdfzXOBC2ih
/wIDAQAB
-----END PUBLIC KEY-----
signing_key:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAw6WKxiVxx5+rqoMvj4vkX5FpipdWaVLpcPhmN8O5ut2bqcU8
KV6pMV7/n+zowITVFHCbS/6J6Uk875NclTC1UI86Pxn3c+14KYL6KLe/Gi8McRyq
vO5BpkQr3BTtBe9Z0EMgoeq5fAol2Lc/8SNz/uLdSkMc5CmtpEgZ7isnsc8ExSDC
chRmrCmKaxIPxNUZvCYgqqXXduHBln1/MBJVYjsEXZZSbhLWzVaFOdAKkU9DlWxq
I6sRWFSl6qZ3JCuMh3MQqLnFFXPAX8C9hxFVoC2i7Fe6AIFyECJijgfieqi0PiBd
MZ29Kj36gssktVhE+5TAcGCdFqdfzXOBC2ih/wIDAQABAoIBAFHF3zrya5wEILwk
GLzmu402OeazWmqrPOb6675jED4KYgWTapHf/tej3TP60U2mN2lTp5UbzoizE8UO
0qOIuD/znWTCdar+ljrDg8uBAV7wS0L7uGE/NDFKTQqvtGHGqMNjS0Bh2yT9GNR7
wz4Gk3T1XYishGbZBLqlaDEj2HN4V1Yy1Qp4KohqLsJN4B5+c2Q0HrTejOHeSsou
B7nJndfZm2ljKdoql++4UZPjWGLGSdtLhzLvYkzbql0GYBYVTOmn/A7AZLz2w769
RmDt28nqOIXIAqDL6qt/frtDfCknbsk7lSEFDlrRfjjPIuah/1UCo80Kjd3Iv+rb
4NZxiAECgYEA+X1WCCWIWP4hlSjRtISpjOaStz8d5eDLeSTI14cPYM7cMiyROrEo
SCJm10AYIs5TsBlb5AfQlBV2YrcmdxeG4ARlVOnpki3ZAyQlQi5LQenQh9abqKtY
b2Z0udDmPgwgtPYexdh1FQTzeXptYDED/sHynj6pN4GBIlZTjZXiCwsCgYEAyMCE
8MEPJZmAQ8vaWjzkzbToUbW5knrEhRNEoxnlbRXXwzXReUIbu+E22FQjwNNxlsJx
smKFWzPvF5seiChBp7yT9dnDKCm9bJVRRAlVD5oyBIFkqXmCn3QM9ySWW6QHxgEH
4wsoNs0RcpTNW/CLi7E9tvtzjnoFqdfDIaSbPV0CgYBhv56OcI4cN+1WcHjBHl0D
rG79RshjAZEW9LeP4gW/ayzQp6967GAY6wmZ+i26rVYSn8zl6b3p1wLcKF/0tw4M
BQzimQb/U+E7ntTOOi8YMxCVuBqimgd7FgxTpSogU0YZQHjMEUPGKXtvM+1Yi7vB
+6EgKPLJoX7DwkjYJ0o6AwKBgQC842gyn3SBDE2DfOuWvHUMmIt/Vl2lVZ5TGC4c
yOD2IvdA1gKi9XDi9qWEJqb9Z/YYxBv2nHyds9/jdjDkK/yatvUA/kSCJcP1xwkP
2zgN1if51UXBsHMXVTpd0C8pSs2FoLKrDnRoG8uu5BPVzh9+8OYApde011s806bm
oNrwgQKBgQCW/CUPXOrfyIwdFIEqSPB79GuV9e27cm8iB8Fu+Rcc3xlQc+3Ak97X
bLi2C1to/pMX+q8ksudd1jOMoyhufle8wJaxC0jLgVx4DGUorvA0uiVtEAULreXz
beE4LXyvVu+tYIl4ATlIyEQSAnNIR6oCX5KvQJu+jHA4i9z+Vg0mpA==
-----END RSA PRIVATE KEY-----
scim:
users:
- admin|openstack|scim.write,scim.read,openid,cloud_controller.admin,doppler.firehose
uaadb:
roles:
- name: uaaadmin
password: openstack
tag: admin # code_snippet cf-stub-openstack end
# The previous line helps maintain current documentation at http://docs.cloudfoundry.org.
将cf-stub 复制到cf-release 文件夹下

运行
./generate_deployment_manifest openstack cf-stub.yml > cf-deployment.yml

 可能会遇到out of memory 错误,如果遇到这个错误,请参看我在* 中提交的问题

http://*.com/questions/29742497/out-of-memory-when-generate-cloudfoundry-deploy-manifest-file-cf-deployment-yml/29791331#29791331

 还可能遇到下面的问题

2015/04/22 15:50:22 error generating manifest: unresolved nodes:
(( lamb_meta.loggregator_templates )) in dynaml jobs.[23].templates
(( lamb_meta.loggregator_templates )) in dynaml jobs.[24].templates
(( lamb_meta.loggregator_trafficcontroller_templates )) in dynaml jobs.[25].templates
(( lamb_meta.loggregator_trafficcontroller_templates )) in dynaml jobs.[26].templates
(( merge )) in ./templates/cf-jobs.yml lamb_meta

  这个问题是因为spiff 不能解析相对路径引用的文件

打开templates/cf-lamb.yml 可以看到如下内容

./src/loggregator/manifest-templates/cf-lamb.yml

这个文件引用就是问题的原因

将 ./src/loggregator/manifest-templates/cf-lamb.yml 中的内容拷贝到 templates/cf-lamb.yml 即可。

这个文件需要到https://github.com/cloudfoundry/loggregator/blob/develop/manifest-templates/cf-lamb.yml 去找。

原文参考https://github.com/cloudfoundry-incubator/diego-release/issues/29


4.1.2 使用bosh上传Stemcell

  1. # bosh upload stemcell ~/stemcell/bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz
  2. # bosh stemcells
  3. +------------------------------------------+---------+--------------------------------------+
  4. | Name                                     | Version | CID                                  |
  5. +------------------------------------------+---------+--------------------------------------+
  6. | bosh-openstack-kvm-ubuntu-lucid-go_agent | 2652*   | 5a6ddcc0-29e6-4b65-a769-8dd8a99eb5df |
  7. +------------------------------------------+---------+--------------------------------------+
  8. (*) Currently in-use
  9. Stemcells total: 1

4.2 使用bosh上传CloudFoundry

  1. # cd ~/bosh-workspace/releases/cf-release
  2. # bosh upload release releases/cf-170.yml
  3. # bosh releases+------+----------+-------------+
  4. | Name | Versions | Commit Hash |
  5. +------+----------+-------------+
  6. | cf   | 170*     | 0c0c72c3+   |
  7. +------+----------+-------------+
  8. (*) Currently deployed
  9. (+) Uncommitted changes
  10. Releases total: 1

4.3 创建部署描述文件

  1. <%
  2. director_uuid = "REPLACE-DIRECTOR_UUID"
  3. static_ip = "REPLACE-IP-ADDRESS"
  4. root_domain = "#{static_ip}.xip.io"
  5. deployment_name = 'cf'
  6. cf_release = '170'
  7. protocol = 'http'
  8. common_password = 'mysecretpassword'
  9. %>
  10. ---
  11. name: <%= deployment_name %>
  12. director_uuid: <%= director_uuid %>
  13. releases:
  14. - name: cf
  15. version: <%= cf_release %>
  16. compilation:
  17. workers: 3
  18. network: default
  19. reuse_compilation_vms: true
  20. cloud_properties:
  21. instance_type: m1.large
  22. update:
  23. canaries: 0
  24. canary_watch_time: 30000-600000
  25. update_watch_time: 30000-600000
  26. max_in_flight: 32
  27. serial: false
  28. networks:
  29. - name: default
  30. type: dynamic
  31. cloud_properties:
  32. security_groups:
  33. - default
  34. - bosh
  35. - cf-private
  36. - name: external
  37. type: dynamic
  38. cloud_properties:
  39. security_groups:
  40. - default
  41. - bosh
  42. - cf-public
  43. - name: floating
  44. type: vip
  45. cloud_properties: {}
  46. resource_pools:
  47. - name: common
  48. network: default
  49. size: 14
  50. stemcell:
  51. name: bosh-openstack-kvm-ubuntu-lucid
  52. version: latest
  53. cloud_properties:
  54. instance_type: m1.small
  55. - name: large
  56. network: default
  57. size: 3
  58. stemcell:
  59. name: bosh-openstack-kvm-ubuntu-lucid
  60. version: latest
  61. cloud_properties:
  62. instance_type: m1.medium
  63. jobs:
  64. - name: nats
  65. templates:
  66. - name: nats
  67. - name: nats_stream_forwarder
  68. instances: 1
  69. resource_pool: common
  70. networks:
  71. - name: default
  72. default: [dns, gateway]
  73. - name: syslog_aggregator
  74. templates:
  75. - name: syslog_aggregator
  76. instances: 1
  77. resource_pool: common
  78. persistent_disk: 65536
  79. networks:
  80. - name: default
  81. default: [dns, gateway]
  82. - name: nfs_server
  83. templates:
  84. - name: debian_nfs_server
  85. instances: 1
  86. resource_pool: common
  87. persistent_disk: 65535
  88. networks:
  89. - name: default
  90. default: [dns, gateway]
  91. - name: postgres
  92. templates:
  93. - name: postgres
  94. instances: 1
  95. resource_pool: common
  96. persistent_disk: 65536
  97. networks:
  98. - name: default
  99. default: [dns, gateway]
  100. properties:
  101. db: databases
  102. - name: uaa
  103. templates:
  104. - name: uaa
  105. instances: 1
  106. resource_pool: common
  107. networks:
  108. - name: default
  109. default: [dns, gateway]
  110. - name: loggregator
  111. templates:
  112. - name: loggregator
  113. instances: 1
  114. resource_pool: common
  115. networks:
  116. - name: default
  117. default: [dns, gateway]
  118. - name: trafficcontroller
  119. templates:
  120. - name: loggregator_trafficcontroller
  121. instances: 1
  122. resource_pool: common
  123. networks:
  124. - name: default
  125. default: [dns, gateway]
  126. - name: cloud_controller
  127. templates:
  128. - name: cloud_controller_ng
  129. instances: 1
  130. resource_pool: common
  131. networks:
  132. - name: default
  133. default: [dns, gateway]
  134. properties:
  135. ccdb: ccdb
  136. - name: cloud_controller_worker
  137. templates:
  138. - name: cloud_controller_worker
  139. instances: 1
  140. resource_pool: common
  141. networks:
  142. - name: default
  143. default: [dns, gateway]
  144. properties:
  145. ccdb: ccdb
  146. - name: clock_global
  147. templates:
  148. - name: cloud_controller_clock
  149. instances: 1
  150. resource_pool: common
  151. networks:
  152. - name: default
  153. default: [dns, gateway]
  154. properties:
  155. ccdb: ccdb
  156. - name: etcd
  157. templates:
  158. - name: etcd
  159. instances: 1
  160. resource_pool: common
  161. persistent_disk: 10024
  162. networks:
  163. - name: default
  164. default: [dns, gateway]
  165. - name: health_manager
  166. templates:
  167. - name: hm9000
  168. instances: 1
  169. resource_pool: common
  170. networks:
  171. - name: default
  172. default: [dns, gateway]
  173. - name: dea
  174. templates:
  175. - name: dea_logging_agent
  176. - name: dea_next
  177. instances: 3
  178. resource_pool: large
  179. networks:
  180. - name: default
  181. default: [dns, gateway]
  182. - name: router
  183. templates:
  184. - name: gorouter
  185. instances: 1
  186. resource_pool: common
  187. networks:
  188. - name: default
  189. default: [dns, gateway]
  190. - name: haproxy
  191. templates:
  192. - name: haproxy
  193. instances: 1
  194. resource_pool: common
  195. networks:
  196. - name: external
  197. default: [dns, gateway]
  198. - name: floating
  199. static_ips:
  200. - <%= static_ip %>
  201. properties:
  202. networks:
  203. apps: external
  204. properties:
  205. domain: <%= root_domain %>
  206. system_domain: <%= root_domain %>
  207. system_domain_organization: 'admin'
  208. app_domains:
  209. - <%= root_domain %>
  210. haproxy: {}
  211. networks:
  212. apps: default
  213. nats:
  214. user: nats
  215. password: <%= common_password %>
  216. address: 0.nats.default.<%= deployment_name %>.microbosh
  217. port: 4222
  218. machines:
  219. - 0.nats.default.<%= deployment_name %>.microbosh
  220. syslog_aggregator:
  221. address: 0.syslog-aggregator.default.<%= deployment_name %>.microbosh
  222. port: 54321
  223. nfs_server:
  224. address: 0.nfs-server.default.<%= deployment_name %>.microbosh
  225. network: "*.<%= deployment_name %>.microbosh"
  226. idmapd_domain: "localdomain"
  227. debian_nfs_server:
  228. no_root_squash: true
  229. loggregator_endpoint:
  230. shared_secret: <%= common_password %>
  231. host: 0.trafficcontroller.default.<%= deployment_name %>.microbosh
  232. loggregator:
  233. servers:
  234. zone:
  235. -  0.loggregator.default.<%= deployment_name %>.microbosh
  236. traffic_controller:
  237. zone: 'zone'
  238. logger_endpoint:
  239. use_ssl: <%= protocol == 'https' %>
  240. port: 80
  241. ssl:
  242. skip_cert_verify: true
  243. router:
  244. endpoint_timeout: 60
  245. status:
  246. port: 8080
  247. user: gorouter
  248. password: <%= common_password %>
  249. servers:
  250. z1:
  251. - 0.router.default.<%= deployment_name %>.microbosh
  252. z2: []
  253. etcd:
  254. machines:
  255. - 0.etcd.default.<%= deployment_name %>.microbosh
  256. dea: &dea
  257. disk_mb: 102400
  258. disk_overcommit_factor: 2
  259. memory_mb: 15000
  260. memory_overcommit_factor: 3
  261. directory_server_protocol: <%= protocol %>
  262. mtu: 1460
  263. deny_networks:
  264. - 169.254.0.0/16 # Google Metadata endpoint
  265. dea_next: *dea
  266. disk_quota_enabled: false
  267. dea_logging_agent:
  268. status:
  269. user: admin
  270. password: <%= common_password %>
  271. databases: &databases
  272. db_scheme: postgres
  273. address: 0.postgres.default.<%= deployment_name %>.microbosh
  274. port: 5524
  275. roles:
  276. - tag: admin
  277. name: ccadmin
  278. password: <%= common_password %>
  279. - tag: admin
  280. name: uaaadmin
  281. password: <%= common_password %>
  282. databases:
  283. - tag: cc
  284. name: ccdb
  285. citext: true
  286. - tag: uaa
  287. name: uaadb
  288. citext: true
  289. ccdb: &ccdb
  290. db_scheme: postgres
  291. address: 0.postgres.default.<%= deployment_name %>.microbosh
  292. port: 5524
  293. roles:
  294. - tag: admin
  295. name: ccadmin
  296. password: <%= common_password %>
  297. databases:
  298. - tag: cc
  299. name: ccdb
  300. citext: true
  301. ccdb_ng: *ccdb
  302. uaadb:
  303. db_scheme: postgresql
  304. address: 0.postgres.default.<%= deployment_name %>.microbosh
  305. port: 5524
  306. roles:
  307. - tag: admin
  308. name: uaaadmin
  309. password: <%= common_password %>
  310. databases:
  311. - tag: uaa
  312. name: uaadb
  313. citext: true
  314. cc: &cc
  315. srv_api_uri: <%= protocol %>://api.<%= root_domain %>
  316. jobs:
  317. local:
  318. number_of_workers: 2
  319. generic:
  320. number_of_workers: 2
  321. global:
  322. timeout_in_seconds: 14400
  323. app_bits_packer:
  324. timeout_in_seconds: null
  325. app_events_cleanup:
  326. timeout_in_seconds: null
  327. app_usage_events_cleanup:
  328. timeout_in_seconds: null
  329. blobstore_delete:
  330. timeout_in_seconds: null
  331. blobstore_upload:
  332. timeout_in_seconds: null
  333. droplet_deletion:
  334. timeout_in_seconds: null
  335. droplet_upload:
  336. timeout_in_seconds: null
  337. model_deletion:
  338. timeout_in_seconds: null
  339. bulk_api_password: <%= common_password %>
  340. staging_upload_user: upload
  341. staging_upload_password: <%= common_password %>
  342. quota_definitions:
  343. default:
  344. memory_limit: 10240
  345. total_services: 100
  346. non_basic_services_allowed: true
  347. total_routes: 1000
  348. trial_db_allowed: true
  349. resource_pool:
  350. resource_directory_key: cloudfoundry-resources
  351. fog_connection:
  352. provider: Local
  353. local_root: /var/vcap/nfs/shared
  354. packages:
  355. app_package_directory_key: cloudfoundry-packages
  356. fog_connection:
  357. provider: Local
  358. local_root: /var/vcap/nfs/shared
  359. droplets:
  360. droplet_directory_key: cloudfoundry-droplets
  361. fog_connection:
  362. provider: Local
  363. local_root: /var/vcap/nfs/shared
  364. buildpacks:
  365. buildpack_directory_key: cloudfoundry-buildpacks
  366. fog_connection:
  367. provider: Local
  368. local_root: /var/vcap/nfs/shared
  369. install_buildpacks:
  370. - name: java_buildpack
  371. package: buildpack_java
  372. - name: ruby_buildpack
  373. package: buildpack_ruby
  374. - name: nodejs_buildpack
  375. package: buildpack_nodejs
  376. - name: go_buildpack
  377. package: buildpack_go
  378. db_encryption_key: <%= common_password %>
  379. hm9000_noop: false
  380. diego: false
  381. newrelic:
  382. license_key: null
  383. environment_name: <%= deployment_name %>
  384. ccng: *cc
  385. login:
  386. enabled: false
  387. uaa:
  388. url: <%= protocol %>://uaa.<%= root_domain %>
  389. no_ssl: <%= protocol == 'http' %>
  390. cc:
  391. client_secret: <%= common_password %>
  392. admin:
  393. client_secret: <%= common_password %>
  394. batch:
  395. username: batch
  396. password: <%= common_password %>
  397. clients:
  398. cf:
  399. override: true
  400. authorized-grant-types: password,implicit,refresh_token
  401. authorities: uaa.none
  402. scope: cloud_controller.read,cloud_controller.write,openid,password.write,cloud_controller.admin,scim.read,scim.write
  403. access-token-validity: 7200
  404. refresh-token-validity: 1209600
  405. admin:
  406. secret: <%= common_password %>
  407. authorized-grant-types: client_credentials
  408. authorities: clients.read,clients.write,clients.secret,password.write,scim.read,uaa.admin
  409. scim:
  410. users:
  411. - admin|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin,uaa.admin,password.write
  412. - services|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin
  413. jwt:
  414. signing_key: |
  415. -----BEGIN RSA PRIVATE KEY-----
  416. REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY+++++++++++++asdfghj123122
  417. 123456789+++++REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY++++++++++++
  418. asd34++123456789+++++REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY+++++
  419. KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX
  420. sdfvsdfgvKVy7psALKSFOa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJW
  421. VfYphNahvZ/7uMXKVy7psa8xzElSyzqx7oJyfJ1JZyOO:9T5SfTIq396agbHJWVf
  422. YphNasvZ/7uMXFzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX
  423. sedfsyzqx7oJyfJ1JZyOzToj9TDASWDASD5SfTIq396agbHJWVfYphNahvZ/7uMX
  424. -----END RSA PRIVATE KEY-----
  425. verification_key: |
  426. -----BEGIN PUBLIC KEY-----
  427. REPLACE+ME+WITH+A+VALID+PUBLIC+KEY++++++++++MIGfMA0GCSqGSIb3DQEBAQUA
  428. AASAqHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug
  429. BUGBUGspULZVNRxq7veq/fzwIDAQAB
  430. -----END PUBLIC KEY-----

其中REPLACE-DIRECTOR_UUID为Bosh Director的UUID,

  1. # bosh status
  2. Config
  3. /root/.bosh_config
  4. Director
  5. Name       microbosh-openstack
  6. URL        https://172.24.4.227:25555
  7. Version    1.2652.0 (00000000)
  8. User       admin
  9. UUID       04fd1b77-9522-459e-8f56-bfe83b7c5624
  10. CPI        openstack
  11. dns        enabled (domain_name: microbosh)
  12. compiled_package_cache disabled
  13. snapshots  disabled
  14. Deployment
  15. Manifest   /root/bosh/bosh-workspace/deployments/cf/demo.yml
  16. REPLACE-IP-ADDRESS是预先分配好的floating ip
  17. # nova floating-ip-create public
root_domain是部署CloudFoundry使用的域名,部署CloudFoundry必须有一个通配符域名(Wildcard DNS record),例如, 如果使用的域名为example.com,那么example.com和*.example.com都要解析为同一IP地址,即前面申请的floating ip。 如果没有这样的域名,可以试一下xip.io提供的动态域名,它可以把<ip>.xip.io和*.<ip>.xip.io都解析为<ip>, 例如,login.111.222.111.222.xip.io会被解析为111.222.111.222
 
在部署CloudFoundry过程中,需要设置很多密码,例如访问各个虚拟机,CloudFoundry默认的管理员账户等,在此例中,同一设置为common_password。在生产环境中,比较合理的做法是设置为不同的密码。
 

4.4 部署CloudFoundry

  1. # bosh deployment cf/demo.yml
  2. # bosh deploy

4.5 部署完成后,可以使用如下命令查看各个虚拟机运行状况

  1. # bosh vms
上一篇:开源的PaaS方案:在OpenStack上部署CloudFoundry (五)常见问题


下一篇:大数据学习心得