5.3. 첫 번째 부팅에서 구성 사용자 정의
director는 Overcloud 초기 생성 시 모든 노드에서 설정을 수행하는 메커니즘을 제공합니다. director는 OS::TripleO::NodeUserData
리소스 유형을 사용하여 호출할 수 있는 cloud-init
를 통해 이 작업을 수행합니다.
이 예제에서는 모든 노드에서 사용자 지정 IP 주소로 네임서버를 업데이트하는 것을 목표로 합니다. 먼저 스크립트를 실행하여 각 노드의 resolv.conf
를 특정 네임서버로 추가하는 기본 Heat 템플릿(nameserver.yaml
)을 만듭니다. OS::TripleO::MultipartMime
리소스 유형을 사용하여 구성 스크립트를 보냅니다.
heat_template_version: 2014-10-16 resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: nameserver_config} nameserver_config: type: OS::Heat::SoftwareConfig properties: config: | #!/bin/bash echo "nameserver 192.168.1.1" >> /etc/resolve.conf outputs: OS::stack_id: value: {get_resource: userdata}
다음으로 Heat 템플릿을 OS::TripleO::NodeUserData
리소스 유형으로 등록하는 환경 파일(firstboot.yaml
)을 생성합니다.
resource_registry: OS::TripleO::NodeUserData: nameserver.yaml
이렇게 하면 다음이 수행됩니다.
-
OS::TripleO::NodeUserData
는 컬렉션의 다른 템플릿에 사용되는 director 기반 Heat 리소스이며 첫 번째 부팅 설정을 모든 노드에 적용합니다. 이 리소스는cloud-init
에서 사용할 데이터를 전달합니다. 기본NodeUserData
는 빈 값(firstboot/userdata_default.yaml
)을 생성하는 Heat 템플릿을 나타냅니다. 이 경우firstboot.yaml
환경 파일은 기본값을 자체nameserver.yaml
파일에 대한 참조로 대체합니다. -
nameserver_config
는 처음 부팅할 때 실행할 Bash 스크립트를 정의합니다.OS::Heat::SoftwareConfig
리소스는 적용할 구성으로 정의합니다. -
userdata
는OS::Heat::MultipartMime
리소스를 사용하여nameserver_config
의 구성을 다중 파트 MIME 메시지로 변환합니다. -
출력은
userdata
에서 MIME 메시지를 가져와서 호출하는 Heat 템플릿/리소스에 제공하는 출력 매개 변수OS::stack_id
를 제공합니다.
결과적으로 각 노드는 첫 번째 부팅 시 다음 Bash 스크립트를 실행합니다.
#!/bin/bash echo "nameserver 192.168.1.1" >> /etc/resolve.conf
이 예에서는 Heat 템플릿이 한 리소스에서 다른 리소스로 구성을 전달하는 방법을 보여줍니다. 또한 환경 파일을 사용하여 새 Heat 리소스를 등록하거나 기존 리소스를 수정하는 방법도 보여줍니다.