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

오버클라우드는 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 구성 전에 블록 스토리지 노드에 추가 구성이 적용됩니다.
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','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 리소스의 소프트웨어 구성인 소프트웨어 구성이 실행됩니다. 다음을 확인합니다.

    • heat가 적용할 구성을 인식하도록 config 매개변수는 CustomExtraConfigPre 리소스를 참조합니다.
    • server 매개 변수는 Overcloud 노드 맵을 검색합니다. 이 매개 변수는 상위 템플릿에서 제공하며 이 후크의 템플릿에서 필요합니다.
    • actions 매개 변수는 구성을 적용할 시기를 정의합니다. 이 경우 오버클라우드가 생성될 때 구성을 적용해야 합니다. 가능한 작업에는 CREATE,UPDATE,DELETE,SUSPEND, RESUME 등이 있습니다.
    • 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
  3. 다른 환경 파일과 함께 스택에 환경 파일을 추가합니다.

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/pre_config.yaml \
        ...

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

중요

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