第 6 章 可组合的服务
Red Hat OpenStack Platform (RHOSP)包含了在角色上定义自定义角色和 compose 服务组合的功能。有关更多信息,请参阅高级 Overcloud 自定义指南中的 {defaultURL}/advanced_overcloud_customization/chap-roles[Composable Services 和 Custom Roles]。作为集成的一部分,您可以定义自己的自定义服务,并将它们包含在所选角色上。
6.1. 检查可组合的服务架构
核心 heat 模板集合包含两组可组合服务模板:
-
Puppet/服务
包含用于配置可组合服务的基础模板。 -
Docker/服务
包含关键 OpenStack 平台服务的容器化模板。这些模板作为对某些基础模板的增强并引用回基础模板。
每个模板都包含一个标识其用途的描述。例如,ntp.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.
这些服务模板注册为特定于 RHOSP 部署的资源。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml
文件中定义的唯一 heat 资源命名空间调用每个资源。所有服务都将 OS::TripleO::Services
命名空间用作其资源类型。
有些资源直接使用基本可组合服务模板:
resource_registry: ... OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml ...
但是核心服务需要容器,如使用容器化服务模板。例如,keystone
容器化服务使用以下方法:
resource_registry: ... OS::TripleO::Services::Keystone: docker/services/keystone.yaml ...
这些容器化模板通常引用到基础模板,以包括 Puppet 配置。例如,docker/services/keystone.yaml
模板将基本模板的输出存储在 KeystoneBase
参数中:
KeystoneBase: type: ../../puppet/services/keystone.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 和 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
文件中的服务列表。