10.3. 구성 후크


구성 후크를 사용하여 고유한 사용자 지정 구성 기능을 오버클라우드 배포 프로세스에 삽입합니다. 후크를 생성하여 기본 오버클라우드 서비스 구성 전후에 사용자 지정 구성을 삽입하고 수정 및 Puppet 기반 구성을 포함하여 후크를 삽입할 수 있습니다.

10.3.1. 사전 구성: 특정 오버클라우드 역할 사용자 지정

오버클라우드는 OpenStack 구성 요소의 핵심 구성에 Puppet을 사용합니다. director는 코어 구성이 시작되기 전에 특정 노드 역할에 대한 사용자 정의 구성을 수행하는 데 사용할 수 있는 후크 세트를 제공합니다. 이러한 후크에는 다음 구성이 포함됩니다.

중요

이 문서의 이전 버전에서는 OS::TripleO::Tasks::*PreConfig 리소스를 사용하여 역할별로 사전 구성 후크를 제공했습니다. Heat 템플릿 컬렉션에는 이러한 후크를 전용으로 사용해야 하므로 사용자 지정 용도로 사용해서는 안 됩니다. 대신 여기에 설명된 OS::TripleO::*ExtraConfigPre 후크를 사용합니다.

OS::TripleO::ControllerExtraConfigPre
핵심 Puppet 구성 전에 컨트롤러 노드에 적용된 추가 구성입니다.
OS::TripleO::ComputeExtraConfigPre
핵심 Puppet 구성 전에 컴퓨팅 노드에 추가 구성이 적용됩니다.
OS::TripleO::CephStorageExtraConfigPre
코어 Puppet 구성 전에 Ceph Storage 노드에 적용된 추가 구성입니다.
OS::TripleO::ObjectStorageExtraConfigPre
코어 Puppet 구성 전에 Object Storage 노드에 적용된 추가 구성입니다.
OS::TripleO::BlockStorageExtraConfigPre
핵심 Puppet 구성 전에 Block Storage 노드에 적용되는 추가 구성입니다.
OS::TripleO::[ROLE]ExtraConfigPre
코어 Puppet 구성 전에 사용자 지정 노드에 추가 구성이 적용됩니다. [ROLE] 을 구성 가능 역할 이름으로 교체합니다.

이 예제에서는 특정 역할의 모든 노드에 변수 이름 서버를 추가합니다.

절차

  1. 스크립트를 실행하여 노드의 resolv.conf 파일에 변수 이름 서버를 작성하는 기본 heat 템플릿 ~/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']
          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]}
    Copy to Clipboard Toggle word wrap

    이 예제에서 resources 섹션에는 다음 매개변수가 포함되어 있습니다.

    CustomExtraConfigPre
    소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트 를 정의하고 heat는 _NAMESERVER_IP_nameserver_ip 매개변수에 저장된 값으로 대체합니다.
    CustomExtraDeploymentPre

    그러면 CustomExtraConfigPre 리소스의 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

    • heat가 적용할 구성을 인식하도록 config 매개변수는 CustomExtraConfigPre 리소스를 참조합니다.
    • server 매개 변수는 Overcloud 노드 맵을 검색합니다. 이 매개 변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
    • actions 매개 변수는 구성을 적용할 시기를 정의합니다. 오버클라우드가 생성될 때 설정을 적용하려면 기본 CREATE 값을 사용합니다.
    • input_values 에는 상위 템플릿에서 DeployIdentifier 를 저장하는 deploy_identifier 라는 매개 변수가 포함되어 있습니다. 이 매개 변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공하여 후속 오버클라우드 업데이트에 리소스가 다시 적용되도록 합니다.
  2. heat 템플릿을 역할 기반 리소스 유형에 등록하는 환경 파일 ~/templates/pre_config.yaml 을 생성합니다. 예를 들어 컨트롤러 노드에만 구성을 적용하려면 ControllerExtraConfigPre 후크를 사용합니다.

    resource_registry:
      OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml
    
    parameter_defaults:
      nameserver_ip: 192.168.1.1
    Copy to Clipboard Toggle word wrap
  3. 다른 환경 파일과 함께 스택에 환경 파일을 추가합니다.

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/pre_config.yaml \
        ...
    Copy to Clipboard Toggle word wrap

    그러면 초기 오버클라우드 생성 또는 이후 업데이트에서 코어 구성이 시작되기 전에 모든 컨트롤러 노드에 구성이 적용됩니다.

중요

후크당 하나의 heat 템플릿에만 각 리소스를 등록할 수 있습니다. 후속 사용은 사용할 heat 템플릿을 재정의합니다.

10.3.2. 사전 구성: 모든 오버클라우드 역할 사용자 지정

오버클라우드는 OpenStack 구성 요소의 핵심 구성에 Puppet을 사용합니다. director는 코어 구성이 시작되기 전에 모든 노드 유형을 설정하는 데 사용할 수 있는 후크를 제공합니다.

OS::TripleO::NodeExtraConfig
핵심 Puppet 구성 전에 모든 노드 역할에 적용되는 추가 구성입니다.

이 예제에서는 각 노드에 변수 이름 서버를 사용하여 resolv.conf 파일을 추가합니다.

절차

  1. 스크립트를 실행하여 변수 이름 서버를 사용하여 각 노드의 resolv.conf 파일을 추가하는 기본 heat 템플릿 ~/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']
          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]}
    Copy to Clipboard Toggle word wrap

    이 예제에서 resources 섹션에는 다음 매개변수가 포함되어 있습니다.

    CustomExtraConfigPre
    이 매개 변수는 소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트를 정의하고 heat는 _NAMESERVER_IP_nameserver_ip 매개 변수에 저장된 값으로 바꿉니다.
    CustomExtraDeploymentPre

    이 매개 변수는 CustomExtraConfigPre 리소스의 소프트웨어 구성인 소프트웨어 구성을 실행합니다. 다음을 확인합니다.

    • heat가 적용할 구성을 인식하도록 config 매개변수는 CustomExtraConfigPre 리소스를 참조합니다.
    • server 매개 변수는 Overcloud 노드 맵을 검색합니다. 이 매개 변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
    • actions 매개 변수는 구성을 적용할 시기를 정의합니다. 오버클라우드가 생성될 때 설정을 적용하려면 기본 CREATE 값을 사용합니다.
    • input_values 매개 변수에는 상위 템플릿에서 DeployIdentifier 를 저장하는 deploy_identifier 라는 하위 매개 변수가 포함되어 있습니다. 이 매개 변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공하여 후속 오버클라우드 업데이트에 리소스가 다시 적용되도록 합니다.
  2. heat 템플릿을 OS::TripleO::NodeExtraConfig 리소스 유형으로 등록하는 환경 파일 ~/templates/pre_config.yaml 을 생성합니다.

    resource_registry:
      OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml
    
    parameter_defaults:
      nameserver_ip: 192.168.1.1
    Copy to Clipboard Toggle word wrap
  3. 다른 환경 파일과 함께 스택에 환경 파일을 추가합니다.

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/pre_config.yaml \
        ...
    Copy to Clipboard Toggle word wrap

    이렇게 하면 초기 오버클라우드 생성 또는 이후 업데이트에서 코어 구성이 시작되기 전에 모든 노드에 구성이 적용됩니다.

중요

OS::TripleO::NodeExtraConfig 를 하나의 heat 템플릿에만 등록할 수 있습니다. 후속 사용은 사용할 heat 템플릿을 재정의합니다.

10.3.3. 구성 후: 모든 오버클라우드 역할 사용자 지정

중요

이 문서의 이전 버전에서는 OS::TripleO::Tasks::*PostConfig 리소스를 사용하여 역할별로 사후 구성 후크를 제공했습니다. Heat 템플릿 컬렉션에는 이러한 후크를 전용으로 사용해야 하므로 사용자 지정 용도로 사용해서는 안 됩니다. 대신 여기에 설명된 OS::TripleO::NodeExtraConfigPost 후크를 사용합니다.

오버클라우드 생성을 완료했지만 초기 생성 또는 오버클라우드의 후속 업데이트 시 모든 역할에 구성을 추가하려는 경우 발생할 수 있습니다. 이 경우 다음 구성 후 후크를 사용합니다.

OS::TripleO::NodeExtraConfigPost
코어 Puppet 구성 후 모든 노드 역할에 적용되는 추가 구성입니다.

이 예제에서는 각 노드에 변수 이름 서버를 사용하여 resolv.conf 파일을 추가합니다.

절차

  1. 스크립트를 실행하여 변수 이름 서버를 사용하여 각 노드의 resolv.conf 파일을 추가하는 기본 heat 템플릿 ~/templates/nameserver.yaml 을 생성합니다.

    heat_template_version: 2014-10-16
    
    description: >
      Extra hostname configuration
    
    parameters:
      servers:
        type: json
      nameserver_ip:
        type: string
      DeployIdentifier:
        type: string
      EndpointMap:
        default: {}
        type: json
    
    resources:
      CustomExtraConfig:
        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}
    
      CustomExtraDeployments:
        type: OS::Heat::SoftwareDeploymentGroup
        properties:
          servers:  {get_param: servers}
          config: {get_resource: CustomExtraConfig}
          actions: ['CREATE']
          input_values:
            deploy_identifier: {get_param: DeployIdentifier}
    Copy to Clipboard Toggle word wrap

    이 예제에서 resources 섹션에는 다음 매개변수가 포함되어 있습니다.

    CustomExtraConfig
    소프트웨어 구성을 정의합니다. 이 예제에서는 Bash 스크립트를 정의하고 heat는 _NAMESERVER_IP_nameserver_ip 매개 변수에 저장된 값으로 바꿉니다.
    CustomExtraDeployments

    그러면 CustomExtraConfig 리소스의 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

    • heat가 적용할 구성을 인식하도록 config 매개변수는 CustomExtraConfig 리소스를 참조합니다.
    • servers 매개 변수는 오버클라우드 노드 맵을 검색합니다. 이 매개 변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
    • actions 매개 변수는 구성을 적용할 시기를 정의합니다. 오버클라우드가 생성될 때 설정을 적용하려면 기본 CREATE 값을 사용합니다.
    • input_values 에는 상위 템플릿에서 DeployIdentifier 를 저장하는 deploy_identifier 라는 매개 변수가 포함되어 있습니다. 이 매개 변수는 각 배포 업데이트의 리소스에 타임스탬프를 제공하여 후속 오버클라우드 업데이트에 리소스가 다시 적용되도록 합니다.
  2. heat 템플릿을 OS::TripleO::NodeExtraConfigPost: 리소스 유형으로 등록하는 환경 파일 ~/templates/post_config.yaml 을 생성합니다.

    resource_registry:
      OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml
    
    parameter_defaults:
      nameserver_ip: 192.168.1.1
    Copy to Clipboard Toggle word wrap
  3. 다른 환경 파일과 함께 스택에 환경 파일을 추가합니다.

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/post_config.yaml \
        ...
    Copy to Clipboard Toggle word wrap

    이렇게 하면 초기 오버클라우드 생성 또는 이후 업데이트 시 코어 구성이 완료된 후 모든 노드에 구성이 적용됩니다.

중요

OS::TripleO::NodeExtraConfigPost 를 하나의 heat 템플릿에만 등록할 수 있습니다. 후속 사용은 사용할 heat 템플릿을 재정의합니다.

10.3.4. Puppet: 역할에 대한 hieradata 사용자 정의

heat 템플릿 컬렉션에는 특정 노드 유형에 추가 구성을 전달하는 데 사용할 수 있는 매개변수 세트가 포함되어 있습니다. 이러한 매개변수는 노드에서 Puppet 구성에 대한 hieradata로 구성을 저장합니다.

ControllerExtraConfig
모든 컨트롤러 노드에 추가할 구성입니다.
ComputeExtraConfig
모든 컴퓨팅 노드에 추가할 구성입니다.
BlockStorageExtraConfig
모든 블록 스토리지 노드에 추가할 구성입니다.
ObjectStorageExtraConfig
모든 Object Storage 노드에 추가할 구성입니다.
CephStorageExtraConfig
모든 Ceph Storage 노드에 추가할 구성입니다.
[ROLE]ExtraConfig
구성 가능 역할에 추가할 구성입니다. [ROLE] 을 구성 가능 역할 이름으로 교체합니다.
ExtraConfig
모든 노드에 추가할 구성입니다.

절차

  1. 배포 후 구성 프로세스에 구성을 추가하려면 parameter_defaults 섹션에 이러한 매개 변수를 포함하는 환경 파일을 생성합니다. 예를 들어 Compute 호스트의 예약된 메모리를 1024MB로 늘리고 VNC 키맵을 일본어로 설정하려면 ComputeExtraConfig 매개변수에서 다음 항목을 사용합니다.

    parameter_defaults:
      ComputeExtraConfig:
        nova::compute::reserved_host_memory: 1024
        nova::compute::vnc_keymap: ja
    Copy to Clipboard Toggle word wrap
  2. 배포와 관련된 기타 환경 파일과 함께 openstack overcloud deploy 명령에 이 환경 파일을 포함합니다.
중요

각 매개 변수를 한 번만 정의할 수 있습니다. 후속 사용은 이전 값을 재정의합니다.

10.3.5. Puppet: 개별 노드에 대한 hieradata 사용자 정의

heat 템플릿 컬렉션을 사용하여 개별 노드에 Puppet hieradata를 설정할 수 있습니다.

절차

  1. 노드의 인트로스펙션 데이터에서 시스템 UUID를 식별합니다.

    $ openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuid
    Copy to Clipboard Toggle word wrap

    이 명령은 시스템 UUID를 반환합니다. 예를 들면 다음과 같습니다.

    "f5055c6c-477f-47fb-afe5-95c6928c407f"
    Copy to Clipboard Toggle word wrap
  2. 환경 파일을 생성하여 노드별 hieradata를 정의하고 per_node.yaml 템플릿을 사전 구성 후크에 등록합니다. NodeDataLookup 매개변수에 구성할 노드의 시스템 UUID를 포함합니다.

    resource_registry:
      OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml
    parameter_defaults:
      NodeDataLookup: '{"f5055c6c-477f-47fb-afe5-95c6928c407f": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'
    Copy to Clipboard Toggle word wrap
  3. 배포와 관련된 기타 환경 파일과 함께 openstack overcloud deploy 명령에 이 환경 파일을 포함합니다.

per_node.yaml 템플릿은 각 시스템 UUID에 해당하는 노드에 hieradata 파일 세트를 생성하고 사용자가 정의한 hieradata를 포함합니다. UUID가 정의되지 않은 경우 결과 hieradata 파일이 비어 있습니다. 이 예에서 per_node.yaml 템플릿은 OS::TripleO::ComputeExtraConfigPre 후크에서 정의한 모든 컴퓨팅 노드에서 실행되지만 시스템 UUID가 f5055c6c-477f-47fb-afe5-95c6928c407f 인 컴퓨팅 노드만 hieradata를 수신합니다.

이 메커니즘을 사용하여 특정 요구 사항에 따라 각 노드를 조정할 수 있습니다.

10.3.6. Puppet: 사용자 정의 매니페스트 적용

특정 상황에서는 오버클라우드 노드에 몇 가지 추가 구성 요소를 설치하고 설정해야 할 수 있습니다. 기본 구성이 완료된 후 노드에 적용되는 사용자 정의 Puppet 매니페스트를 사용하여 이 작업을 수행할 수 있습니다. 기본 예에서는 각 노드에 motd 를 설치할 수 있습니다.

절차

  1. Puppet 구성을 시작하는 heat 템플릿 ~/templates/custom_puppet_config.yaml 을 생성합니다.

    heat_template_version: 2014-10-16
    
    description: >
      Run Puppet extra configuration to set new MOTD
    
    parameters:
      servers:
        type: json
      DeployIdentifier:
        type: string
      EndpointMap:
        default: {}
        type: json
    
    resources:
      ExtraPuppetConfig:
        type: OS::Heat::SoftwareConfig
        properties:
          config: {get_file: motd.pp}
          group: puppet
          options:
            enable_hiera: True
            enable_facter: False
    
      ExtraPuppetDeployments:
        type: OS::Heat::SoftwareDeploymentGroup
        properties:
          config: {get_resource: ExtraPuppetConfig}
          servers: {get_param: servers}
    Copy to Clipboard Toggle word wrap

    이 예제에는 템플릿에 /home/stack/templates/motd.pp 이 포함되어 있으며 구성을 위해 노드에 전달합니다. motd.pp 파일에는 motd 를 설치하고 구성하는 데 필요한 Puppet 클래스가 포함되어 있습니다.

  2. heat 템플릿을 OS::TripleO::NodeExtraConfigPost: 리소스 유형으로 등록하는 환경 파일 ~templates/puppet_post_config.yaml 을 생성합니다.

    resource_registry:
      OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml
    Copy to Clipboard Toggle word wrap
  3. 배포와 관련된 기타 환경 파일과 함께 openstack overcloud deploy 명령에 이 환경 파일을 포함합니다.

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/puppet_post_config.yaml \
        ...
    Copy to Clipboard Toggle word wrap

    그러면 motd.pp 의 구성이 오버클라우드의 모든 노드에 적용됩니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat