6장. 구성 가능 서비스
RHOSP(Red Hat OpenStack Platform)에는 사용자 지정 역할을 정의하고 역할에서 서비스 조합을 구성하는 기능이 포함되어 있습니다. 자세한 내용은 Advanced Overcloud Customization 가이드의 {defaultURL}/advanced_overcloud_customization/chap-roles[Composable Services and Custom Roles]를 참조하십시오. 통합의 일부로 고유한 사용자 지정 서비스를 정의하고 선택한 역할에 포함할 수 있습니다.
6.1. 구성 가능 서비스 아키텍처 검사
코어 heat 템플릿 컬렉션에는 구성 가능 서비스 템플릿 두 세트가 포함되어 있습니다.
-
Puppet/services
에는 구성 가능 서비스를 구성하기 위한 기본 템플릿이 포함되어 있습니다. -
Docker/services
에는 주요 OpenStack Platform 서비스에 대한 컨테이너화된 템플릿이 포함되어 있습니다. 이러한 템플릿은 일부 기본 템플릿에 대해 보강하고 기본 템플릿으로 다시 참조합니다.
각 템플릿에는 용도를 식별하는 설명이 포함되어 있습니다. 예를 들어 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 템플릿에는 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
,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
파일의 서비스 목록을 덮어쓸 수 있습니다.