Разверните Cloud Foundry v2.0 (следующее поколение). Ошибка файла манифеста BOSH
Я успешно развернул полностью Cloud Foundry поверх vSphere на основе этого руководства и использовал этот файл манифеста как шаблон (я его сильно изменяю, потому что он немного устарел).
Теперь я понял, что мне нужна следующая версия Cloud Foundry, чтобы обеспечить пространство и функции org, и я начал использовать шаблоны *_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
свойства.
Как я могу изменить мой файл манифеста BOSH для CloudFoundry, чтобы избежать этих проблем?
У меня много других вопросов по этому поводу, но сейчас это главный.
1 ответ
У вас есть раздел свойств в манифесте, как в этом примере;
https://gist.github.com/3148465
Чтобы properties.ccdb НЕ оценивался как nil, в разделе свойств должна быть запись ccdb.