4.3. 사전 구성: 모든 오버클라우드 역할 사용자 지정
Overcloud는 OpenStack 구성 요소의 핵심 구성에 Puppet을 사용합니다. director는 첫 번째 부팅 후 및 코어 구성이 시작되기 전에 모든 노드 유형을 구성하는 후크를 제공합니다.
- OS::TripleO::NodeExtraConfig
- core Puppet 구성보다 먼저 모든 노드 역할에 적용되는 추가 구성입니다.
이 예제에서는 먼저 스크립트를 실행하여 각 노드의 resolv.conf
를 변수 이름 서버에 추가하는 기본 heat 템플릿(/home/stack/templates/nameserver.yaml
)을 생성합니다.
heat_template_version: 2014-10-16 description: > Extra hostname configuration parameters: server: type: string nameserver_ip: type: string DeployIdentifier: type: string resources: CustomExtraConfigPre: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: | #!/bin/sh echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf params: _NAMESERVER_IP_: {get_param: nameserver_ip} CustomExtraDeploymentPre: type: OS::Heat::SoftwareDeployment properties: server: {get_param: server} config: {get_resource: CustomExtraConfigPre} actions: ['CREATE','UPDATE'] input_values: deploy_identifier: {get_param: DeployIdentifier} outputs: deploy_stdout: description: Deployment reference, used to trigger pre-deploy on changes value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}
heat_template_version: 2014-10-16
description: >
Extra hostname configuration
parameters:
server:
type: string
nameserver_ip:
type: string
DeployIdentifier:
type: string
resources:
CustomExtraConfigPre:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
str_replace:
template: |
#!/bin/sh
echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf
params:
_NAMESERVER_IP_: {get_param: nameserver_ip}
CustomExtraDeploymentPre:
type: OS::Heat::SoftwareDeployment
properties:
server: {get_param: server}
config: {get_resource: CustomExtraConfigPre}
actions: ['CREATE','UPDATE']
input_values:
deploy_identifier: {get_param: DeployIdentifier}
outputs:
deploy_stdout:
description: Deployment reference, used to trigger pre-deploy on changes
value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}
이 예제에서 resources
섹션에는 다음이 포함됩니다.
- CustomExtraConfigPre
-
이는 소프트웨어 구성을 정의합니다. 이 예제에서는 Bash
스크립트
를 정의하고 Heat에서_NAMESERVER_IP_
를nameserver_ip
매개변수에 저장된 값으로 교체합니다. - CustomExtraDeploymentPre
이렇게 하면
CustomExtraConfigPre
리소스에서 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.-
config
매개변수는CustomExtraConfigPre
리소스에 대한 참조를 제공하므로 Heat는 적용할 구성을 알고 있습니다. -
server
매개변수는 Overcloud 노드의 맵을 검색합니다. 이 매개변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다. -
actions
매개변수는 구성을 적용할 시기를 정의합니다. 이 경우 Overcloud가 생성된 경우에만 설정을 적용합니다. 가능한 작업에는CREATE
,UPDATE
,DELETE
,SUSPEND
,RESUME
가 포함됩니다. -
input_values
매개변수에는deploy_identifier
라는 하위 매개변수가 포함되어 있으며, 이 매개변수는 상위 템플릿의DeployIdentifier
를 저장합니다. 이 매개변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공합니다. 이렇게 하면 후속 오버클라우드 업데이트에서 리소스가 얻을 수 있습니다.
-
다음으로 heat 템플릿을 OS::TripleO::NodeExtraConfig
리소스 유형으로 등록하는 환경 파일(/home/stack/templates/pre_config.yaml
)을 생성합니다.
resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry:
OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml
parameter_defaults:
nameserver_ip: 192.168.1.1
설정을 적용하려면 Overcloud를 생성하거나 업데이트할 때 다른 환경 파일과 함께 환경 파일을 스택에 추가합니다. 예를 들면 다음과 같습니다.
openstack overcloud deploy --templates \ ...
$ openstack overcloud deploy --templates \
...
-e /home/stack/templates/pre_config.yaml \
...
이는 코어 구성이 초기 Overcloud 생성 또는 후속 업데이트에서 시작되기 전에 모든 노드에 적용됩니다.
OS::TripleO::NodeExtraConfig
만 하나의 Heat 템플릿에 등록할 수 있습니다. 이후의 사용은 사용할 Heat 템플릿을 덮어씁니다.