利用bosh部署cloudfoundry的过程和部署bosh的过程基本一样,准备三样东西,stemcell-用来生成镜像并创建虚拟机以及编译release,release里面包含所有要部署的组件的包,清单文件的作用就是操作的步骤及配置。
下面是部署cloudfoundry的具体步骤:
1. target到bosh的director
root@bosh-cli:~/src/cloudfoundry/cf-release# bosh target https://10.10.110.118:25555
root@bosh-cli:~/src/cloudfoundry/cf-release# bosh login
用户名和密码都是admin
2. 上传stemcell
root@bosh-cli:~/bosh-workspace/stemcells# bosh upload stemcell bosh-stemcell-2427-openstack-kvm-ubuntu.tgz
上传的过程和之前的一样的。
3. 上传release
root@bosh-cli:~/src/cloudfoundry/cf-release# bosh upload release bosh-release170.tgz
4. 验证之前已经上传的stemcell和release
root@bosh-cli:~# bosh releases
+------------+------------+-------------+
| Name | Versions | Commit Hash |
+------------+------------+-------------+
| cf-release | 170 | 27784f08 |
+------------+------------+-------------+
(*) Currently deployed
(+) Uncommitted changes
Releases total: 1
root@bosh-cli:~# bosh stemcells
+---------------------------+---------+--------------------------------------+
| Name | Version | CID |
+---------------------------+---------+--------------------------------------+
| bosh-openstack-kvm-ubuntu | 2427 | 316501e1-482d-472d-9fd9-b71a7b1223ee |
+---------------------------+---------+--------------------------------------+
Stemcells total: 1
5. 创建cloudfoundry的清单文件
root@bosh-cli:~/src/cloudfoundry/cf-release# cd ~/bosh-workspace/deployments/
root@bosh-cli:~/bosh-workspace/deployments# vi cf-170.yml
cf-170.yml的内容为(标为change的是需要修改的):
<%
director_uuid = "f629b16b-c190-4cdc-a0b8-e39550ddb061" #change uuid为bosh director的uuid,用bosh status来查看
static_ip = "10.10.110.191" #分配给haproxy的浮动ip
root_domain ="vsc.com"<span style="white-space:pre"> </span>#域名,可随便选择,但不要是已经存在的域名
deployment_name = 'cf'
cf_release = '170'
protocol = 'http'
common_password = 'c1oudc0w' <span style="white-space:pre"> </span>#密码也可以随便设,但密码里面千万不要带@符号,否则部署时会出错
%>
---
name: <%= deployment_name %>
director_uuid: <%= director_uuid %>
releases:
- name: cf
version: <%= cf_release %>
compilation:
workers: 3
network: default
reuse_compilation_vms: true
cloud_properties:
instance_type: m1.medium
update:
canaries: 0
canary_watch_time: 30000-600000
update_watch_time: 30000-600000
max_in_flight: 32
serial: false
networks:
- name: default
type: dynamic
cloud_properties:
security_groups:
- default
- name: external
type: dynamic
cloud_properties:
security_groups:
- default
- name: floating
type: vip
cloud_properties: {}
resource_pools:
- name: common
network: default
size: 14
stemcell:
name: bosh-openstack-kvm-ubuntu
version: 2427
cloud_properties:
instance_type: m1.micro
- name: large
network: default
size: 2
stemcell:
name: bosh-openstack-kvm-ubuntu
version: 2427 <span style="white-space:pre"> </span>#change 就是刚才上传的stemcell
cloud_properties:
instance_type: v1.small
jobs:
- name: nats
templates:
- name: nats
- name: nats_stream_forwarder
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: syslog_aggregator
templates:
- name: syslog_aggregator
instances: 1
resource_pool: common
persistent_disk: 51200
networks:
- name: default
default: [dns, gateway]
- name: nfs_server
templates:
- name: debian_nfs_server
instances: 1
resource_pool: common
persistent_disk: 51200
networks:
- name: default
default: [dns, gateway]
- name: postgres
templates:
- name: postgres
instances: 1
resource_pool: common
persistent_disk: 51200
networks:
- name: default
default: [dns, gateway]
properties:
db: databases
- name: uaa
templates:
- name: uaa
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: loggregator
templates:
- name: loggregator
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: trafficcontroller
templates:
- name: loggregator_trafficcontroller
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: cloud_controller
templates:
- name: cloud_controller_ng
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
properties:
db: ccdb
- name: cloud_controller_worker
templates:
- name: cloud_controller_worker
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
properties:
db: ccdb
- name: clock_global
templates:
- name: cloud_controller_clock
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
properties:
db: ccdb
- name: etcd
templates:
- name: etcd
instances: 1
resource_pool: common
persistent_disk: 10024
networks:
- name: default
default: [dns, gateway]
- name: health_manager
templates:
- name: hm9000
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: dea
templates:
- name: dea_logging_agent
- name: dea_next
instances: 2
resource_pool: large
networks:
- name: default
default: [dns, gateway]
- name: router
templates:
- name: gorouter
instances: 1
resource_pool: common
networks:
- name: default
default: [dns, gateway]
- name: haproxy
templates:
- name: haproxy
instances: 1
resource_pool: common
networks:
- name: external
default: [dns, gateway]
- name: floating
static_ips:
- <%= static_ip %>
properties:
networks:
apps: external
properties:
domain: <%= root_domain %>
system_domain: <%= root_domain %>
system_domain_organization: 'admin'
app_domains:
- <%= root_domain %>
haproxy: {}
networks:
apps: default
nats:
user: nats
password: <%= common_password %>
address: 0.nats.default.<%= deployment_name %>.bosh
port: 4222
machines:
- 0.nats.default.<%= deployment_name %>.bosh
syslog_aggregator:
address: 0.syslog-aggregator.default.<%= deployment_name %>.bosh
port: 54321
nfs_server:
address: 0.nfs-server.default.<%= deployment_name %>.bosh
network: "*.<%= deployment_name %>.bosh"
#allow_from_entries:
# - 10.0.0.0/24
idmapd_domain: vsc.com
debian_nfs_server:
no_root_squash: true
loggregator_endpoint:
shared_secret: <%= common_password %>
host: 0.trafficcontroller.default.<%= deployment_name %>.bosh
loggregator:
servers:
zone:
- 0.loggregator.default.<%= deployment_name %>.bosh
traffic_controller:
zone: 'zone'
logger_endpoint:
use_ssl: <%= protocol == 'https' %>
port: 80
ssl:
skip_cert_verify: true
router:
endpoint_timeout: 60
status:
port: 8080
user: gorouter
password: <%= common_password %>
servers:
z1:
- 0.router.default.<%= deployment_name %>.bosh
z2: []
etcd:
machines:
- 0.etcd.default.<%= deployment_name %>.bosh
dea: &dea
disk_mb: 102400
disk_overcommit_factor: 2
memory_mb: 15000
memory_overcommit_factor: 3
directory_server_protocol: <%= protocol %>
mtu: 1460
deny_networks:
- 169.254.0.0/16 # Google Metadata endpoint
dea_next: *dea
disk_quota_enabled: false
dea_logging_agent:
status:
user: admin
password: <%= common_password %>
databases: &databases
db_scheme: postgres
address: 0.postgres.default.<%= deployment_name %>.bosh
port: 5524
roles:
- tag: admin
name: ccadmin
password: <%= common_password %>
- tag: admin
name: uaaadmin
password: <%= common_password %>
databases:
- tag: cc
name: ccdb
citext: true
- tag: uaa
name: uaadb
citext: true
ccdb: &ccdb
db_scheme: postgres
address: 0.postgres.default.<%= deployment_name %>.bosh
port: 5524
roles:
- tag: admin
name: ccadmin
password: <%= common_password %>
databases:
- tag: cc
name: ccdb
citext: true
ccdb_ng: *ccdb
uaadb:
db_scheme: postgresql
address: 0.postgres.default.<%= deployment_name %>.bosh
port: 5524
roles:
- tag: admin
name: uaaadmin
password: <%= common_password %>
databases:
- tag: uaa
name: uaadb
citext: true
cc: &cc
srv_api_uri: <%= protocol %>://api.<%= root_domain %>
jobs:
local:
number_of_workers: 2
generic:
number_of_workers: 2
global:
timeout_in_seconds: 14400
app_bits_packer:
timeout_in_seconds: null
app_events_cleanup:
timeout_in_seconds: null
app_usage_events_cleanup:
timeout_in_seconds: null
blobstore_delete:
timeout_in_seconds: null
blobstore_upload:
timeout_in_seconds: null
droplet_deletion:
timeout_in_seconds: null
droplet_upload:
timeout_in_seconds: null
model_deletion:
timeout_in_seconds: null
bulk_api_password: <%= common_password %>
staging_upload_user: upload
staging_upload_password: <%= common_password %>
quota_definitions:
default:
memory_limit: 10240
total_services: 100
non_basic_services_allowed: true
total_routes: 1000
trial_db_allowed: true
resource_pool:
resource_directory_key: cloudfoundry-resources
fog_connection:
provider: Local
local_root: /var/vcap/nfs/shared
packages:
app_package_directory_key: cloudfoundry-packages
fog_connection:
provider: Local
local_root: /var/vcap/nfs/shared
droplets:
droplet_directory_key: cloudfoundry-droplets
fog_connection:
provider: Local
local_root: /var/vcap/nfs/shared
buildpacks:
buildpack_directory_key: cloudfoundry-buildpacks
fog_connection:
provider: Local
local_root: /var/vcap/nfs/shared
install_buildpacks:
- name: java_buildpack
package: buildpack_java
- name: ruby_buildpack
package: buildpack_ruby
- name: nodejs_buildpack
package: buildpack_nodejs
- name: go_buildpack
package: buildpack_go
db_encryption_key: <%= common_password %>
hm9000_noop: false
diego: false
newrelic:
license_key: null
environment_name: <%= deployment_name %>
ccng: *cc
login:
enabled: false
uaa:
url: <%= protocol %>://uaa.<%= root_domain %>
no_ssl: <%= protocol == 'http' %>
cc:
client_secret: <%= common_password %>
admin:
client_secret: <%= common_password %>
batch:
username: batch
password: <%= common_password %>
clients:
cf:
override: true
authorized-grant-types: password,implicit,refresh_token
authorities: uaa.none
scope: cloud_controller.read,cloud_controller.write,openid,password.write,cloud_controller.admin,scim.read,scim.write
access-token-validity: 7200
refresh-token-validity: 1209600
admin:
secret: <%= common_password %>
authorized-grant-types: client_credentials
authorities: clients.read,clients.write,clients.secret,password.write,scim.read,uaa.admin
scim:
users:
- admin|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin,uaa.admin,password.write
- services|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin
jwt:
signing_key: |
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDHFr+KICms+tuT1OXJwhCUmR2dKVy7psa8xzElSyzqx7oJyfJ1
JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMXqHxf+ZH9BL1gk9Y6kCnbM5R6
0gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBugspULZVNRxq7veq/fzwIDAQAB
AoGBAJ8dRTQFhIllbHx4GLbpTQsWXJ6w4hZvskJKCLM/o8R4n+0W45pQ1xEiYKdA
Z/DRcnjltylRImBD8XuLL8iYOQSZXNMb1h3g5/UGbUXLmCgQLOUUlnYt34QOQm+0
KvUqfMSFBbKMsYBAoQmNdTHBaz3dZa8ON9hh/f5TT8u0OWNRAkEA5opzsIXv+52J
duc1VGyX3SwlxiE2dStW8wZqGiuLH142n6MKnkLU4ctNLiclw6BZePXFZYIK+AkE
xQ+k16je5QJBAN0TIKMPWIbbHVr5rkdUqOyezlFFWYOwnMmw/BKa1d3zp54VP/P8
+5aQ2d4sMoKEOfdWH7UqMe3FszfYFvSu5KMCQFMYeFaaEEP7Jn8rGzfQ5HQd44ek
lQJqmq6CE2BXbY/i34FuvPcKU70HEEygY6Y9d8J3o6zQ0K9SYNu+pcXt4lkCQA3h
jJQQe5uEGJTExqed7jllQ0khFJzLMx0K6tj0NeeIzAaGCQz13oo2sCdeGRHO4aDh
HH6Qlq/6UOV5wP8+GAcCQFgRCcB+hrje8hfEEefHcFpyKH+5g1Eu1k0mLrxK2zd+
4SlotYRHgPCEubokb2S1zfZDWIXW3HmggnGgM949TlY=
-----END RSA PRIVATE KEY-----
verification_key: |
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHFr+KICms+tuT1OXJwhCUmR2d
KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX
qHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug
spULZVNRxq7veq/fzwIDAQAB
-----END PUBLIC KEY-----
说明:上面的signing_key和verification_key的内容不用改变
6. 部署cf
root@bosh-cli:~/bosh-workspace/deployments# bosh deployment cf-170.yml
root@bosh-cli:~/bosh-workspace/deployments# bosh deploy
root@bosh-cli:~/bosh-workspace/deployments# bosh delete deployment cf(cf是部署名,就是清单文件中的name属性)
6. 验证部署是否成功
root@bosh-cli:~/bosh-workspace/deployments# bosh vms
Deployment `cf'
如果所有虚拟机都正常运行说明部署成功。