Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

6.2. 检查可组合服务架构

核心 Heat 模板集合包含 puppet/services 子目录中的可组合服务模板集合。您可以使用以下命令查看这些服务:

$ ls /usr/share/openstack-tripleo-heat-templates/puppet/services

每个服务模板都包含标识其目的的描述。例如,keystone.yaml 服务模板包含以下描述:

description: >
 OpenStack Identity (`keystone`) service configured with Puppet

这些服务模板注册为特定于 Red Hat OpenStack Platform 部署的资源。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml 文件中定义的唯一 Heat 资源命名空间来调用每个资源。所有服务都使用 OS::TripleO::Services 命名空间作为其资源类型。例如,keystone.yaml 服务模板注册到 OS::TripleO::Services::Keystone 资源类型:

grep "OS::TripleO::Services::Keystone" /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.j2.yaml
  OS::TripleO::Services::Keystone: 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

您可以在 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 列表。