6.8. 구성 가능 서비스 아키텍처 검사

코어 heat 템플릿 컬렉션에는 구성 가능 서비스 템플릿의 두 세트가 포함되어 있습니다.

  • 배포에 는 주요 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 템플릿에는 roles_data.yaml 파일에서 각 사용자 지정 역할에 대한 서비스 목록을 정의하는 Jinja2 기반 코드 섹션이 포함되어 있습니다.

{{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,ObjectStorageServicesCephStorageServices.

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 매개변수의 기본 목록으로 정의됩니다.

참고

환경 파일을 사용하여 서비스 매개변수의 기본 목록을 재정의할 수도 있습니다. 예를 들어 환경 파일에서 ControllerServicesparameter_default 로 정의하여 roles_data.yaml 파일의 서비스 목록을 재정의할 수 있습니다.