9.8. 检查可组合服务架构
核心 heat 模板集合包含两组可组合服务模板:
-
deployment
包含关键 OpenStack 服务的模板。 -
puppet/services
包含用于配置可组合服务的传统模板。在某些情况下,可组合服务使用此目录中的模板来实现兼容性。在大多数情况下,可组合服务使用部署
目录中的模板。
每个模板包含一个标识其目的的描述。例如,deployment/time/ntp-baremetal-puppet.yaml
服务模板包含以下描述:
description: > NTP service deployment using puppet, this YAML file creates the interface between the HOT template and the puppet manifest that actually installs and configure NTP.
这些服务模板注册为特定于 Red Hat OpenStack Platform 部署的资源。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml
文件中定义的唯一 heat 资源命名空间调用每个资源。所有服务将 OS::TripleO::Services
命名空间用于其资源类型。
有些资源直接使用基本可组合服务模板:
resource_registry: ... OS::TripleO::Services::Ntp: deployment/time/ntp-baremetal-puppet.yaml ...
但是,核心服务需要容器并使用容器化服务模板。例如,keystone
容器化服务使用以下资源:
resource_registry: ... OS::TripleO::Services::Keystone: deployment/keystone/keystone-container-puppet.yaml ...
这些容器化模板通常引用其他模板以包含依赖项。例如,deployment/keystone/keystone-container-puppet.yaml
模板将基本模板的输出存储在 ContainersCommon
资源中:
resources: ContainersCommon: type: ../containers-common.yaml
然后,容器化模板可以包含来自 containers-common.yaml
模板的功能和数据。
overcloud.j2.yaml
heat 模板包含基于 Jinja2 的代码部分,用于在 roles_data.yaml
文件中定义每个自定义角色的服务列表:
{{role.name}}Services: description: A list of service resources (configured in the heat resource_registry) which represent nested stacks for each service that should get installed on the {{role.name}} role. type: comma_delimited_list default: {{role.ServicesDefault|default([])}}
对于默认角色,这会创建以下服务列表参数: ControllerServices
、ComputeServices
、BlockStorageServices
、ObjectStorageServices
和 CephStorageServices
。
您可以在 roles_data.yaml
文件中定义每个自定义角色的默认服务。例如,默认 Controller 角色包含以下内容:
- name: Controller CountDefault: 1 ServicesDefault: - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephRgw - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - OS::TripleO::Services::Core - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GlanceRegistry ...
然后,这些服务被定义为 ControllerServices
参数的默认列表。
您还可以使用环境文件覆盖服务参数的默认列表。例如,您可以在环境文件中将 ControllerServices
定义为 parameter_default
,以覆盖 roles_data.yaml
文件中的 services 列表。