我根据本手册在 vSphere 上成功部署了完整的 Cloud Foundry,并使用了这个清单文件,如模板(我更改了很多,因为它有点过时了)。
现在我意识到我需要下一个版本的 Cloud Foundry 因为空间和组织功能,我开始使用 *_ng 模板用于云控制器和适当的节点。
我修改了我的 BOSH 清单文件,发现云控制器数据库存在一些问题。根据cloud_controller_ng.yml.erb
<% db = properties.ccdb_ng.databases.find { |db| db.tag == "cc" } %>
<% db_role = properties.ccdb_ng.roles.find { |role| role.tag == "admin" } %>
db:
database: postgres://<%= db_role.name %>:<%= db_role.password %>@<%= properties.ccdb_ng.address %>:<%= properties.ccdb_ng.port %>/<%= db.name %>
max_connections: <%= properties.ccdb_ng.max_connections || 32 %>
pool_timeout: <%= properties.ccdb_ng.pool_timeout || 10 %>
log_level: <%= properties.ccng.db_logging_level || "debug2" %>
它需要ccdb_ng
清单中的属性ccdb
(顺便说一句。为什么?当 Cloud Foundry 的下一代成为当前版本时,这些更改变得无用。我错过了什么?):
- name: ccdb_postgres
template: postgres
instances: 1
resource_pool: infrastructure
persistent_disk: 2048
networks:
- name: default
static_ips:
- 192.168.2.12
properties:
db: ccdb_ng
...
ccdb_ng:
address: 192.168.2.12
port: 5524
pool_size: 10
roles:
- tag: admin
name: ccadmin
password: aaaBauWauZZb2
databases:
- tag: cc
name: appcloud
像结果一样,我得到了一个错误
Preparing configuration
binding configuration: Error filling in template `batch.yml.erb' for `uaa/0' (line 5: undefined method `databases' for nil:NilClass) (00:00:00)
Error 1/1 00:00:00
Error 80006: Error filling in template `batch.yml.erb' for `uaa/0' (line 5: undefined method `databases' for nil:NilClass)
这向我指出了这段代码:
<% cc_db = properties.ccdb.databases.find { |db| db.tag == "cc" } %>
<% cc_role = properties.ccdb.roles.find { |role| role.tag == "admin" } %>
你怎么能看到它试图找到ccdb
属性。是的,我可以更改清单文件,但在这种情况下cloud_controller_ng.yml.erb
找不到ccdb_ng
属性。
如何修改 CloudFoundry 的 BOSH 清单文件以避免这些问题?
我对此还有很多其他问题,但目前这是主要问题。