4.3. Puppet 모듈의 구성 예


OpenStack 모듈은 주로 핵심 서비스를 구성하는 것을 목표로 합니다. 대부분의 모듈에는 추가 서비스를 구성하는 추가 매니페스트도 포함되어 있으며, 경우에 따라 백엔드,에이전트 또는 플러그인 이라고 합니다. 예를 들어 cinder 모듈에는 NFS, iSCSI, Red Hat Ceph Storage 등과 같은 다양한 스토리지 장치에 대한 구성 옵션이 포함된 backends 라는 디렉터리가 있습니다.

예를 들어 manifests/backends/nfs.pp 파일에는 다음 구성이 포함되어 있습니다.

define cinder::backend::nfs (
  $volume_backend_name  = $name,
  $nfs_servers          = [],
  $nfs_mount_options    = undef,
  $nfs_disk_util        = undef,
  $nfs_sparsed_volumes  = undef,
  $nfs_mount_point_base = undef,
  $nfs_shares_config    = '/etc/cinder/shares.conf',
  $nfs_used_ratio       = '0.95',
  $nfs_oversub_ratio    = '1.0',
  $extra_options        = {},
) {

  file {$nfs_shares_config:
    content => join($nfs_servers, "\n"),
    require => Package['cinder'],
    notify  => Service['cinder-volume']
  }

  cinder_config {
    "${name}/volume_backend_name":  value => $volume_backend_name;
    "${name}/volume_driver":        value =>
      'cinder.volume.drivers.nfs.NfsDriver';
    "${name}/nfs_shares_config":    value => $nfs_shares_config;
    "${name}/nfs_mount_options":    value => $nfs_mount_options;
    "${name}/nfs_disk_util":        value => $nfs_disk_util;
    "${name}/nfs_sparsed_volumes":  value => $nfs_sparsed_volumes;
    "${name}/nfs_mount_point_base": value => $nfs_mount_point_base;
    "${name}/nfs_used_ratio":       value => $nfs_used_ratio;
    "${name}/nfs_oversub_ratio":    value => $nfs_oversub_ratio;
  }

  create_resources('cinder_config', $extra_options)

}
Copy to Clipboard Toggle word wrap

결과는 다음과 같습니다.

  • define 문은 cinder::backend::nfs 라는 정의된 유형을 만듭니다. 정의된 유형은 클래스와 유사합니다. 주요 차이점은 Puppet이 정의된 유형을 여러 번 평가합니다. 예를 들어, NFS 백엔드가 여러 개 있어야 하므로 각 NFS 공유에 대해 여러 평가가 필요할 수 있습니다.
  • 다음 몇 줄에서는 이 구성의 매개 변수와 해당 기본값을 정의합니다. 사용자가 cinder::backend::nfs 정의 유형으로 새 값을 전달하면 기본값을 덮어씁니다.
  • file 함수는 파일 생성을 호출하는 리소스 선언입니다. 이 파일에는 NFS 공유 목록이 있으며 이 파일의 이름은 $nfs_shares_config = '/etc/cinder/shares.conf 에 정의되어 있습니다. 추가 특성을 확인합니다.

    • content 속성은 $nfs_servers 매개 변수를 사용하여 목록을 생성합니다.
    • require 특성을 사용하면 cinder 패키지가 설치되어 있는지 확인합니다.
    • notify 속성은 cinder-volume 서비스를 재설정하도록 지시합니다.
  • cinder_config 함수는 모듈의 lib/puppet/ 디렉터리의 플러그인을 사용하는 리소스 선언입니다. 이 플러그인은 /etc/cinder/cinder.conf 파일에 구성을 추가합니다. 이 리소스의 각 행은 cinder.conf 파일의 관련 섹션에 구성 옵션을 추가합니다. 예를 들어 $name 매개 변수가 mynfs 인 경우 다음 특성을 사용합니다.

      "${name}/volume_backend_name":  value => $volume_backend_name;
      "${name}/volume_driver":        value =>
        'cinder.volume.drivers.nfs.NfsDriver';
      "${name}/nfs_shares_config":    value => $nfs_shares_config;
    Copy to Clipboard Toggle word wrap

    cinder.conf 파일에 다음 스니펫을 저장합니다.

    [mynfs]
    volume_backend_name=mynfs
    volume_driver=cinder.volume.drivers.nfs.NfsDriver
    nfs_shares_config=/etc/cinder/shares.conf
    Copy to Clipboard Toggle word wrap
  • create_resources 함수는 해시를 리소스 세트로 변환합니다. 이 경우 매니페스트는 $extra_options 해시를 백엔드의 추가 구성 옵션 집합으로 변환합니다. 이를 통해 매니페스트의 핵심 매개변수에 포함되지 않은 추가 구성 옵션을 추가할 수 있는 유연한 방법을 제공합니다.

이는 하드웨어의 OpenStack 드라이버를 구성하는 매니페스트 포함의 중요성을 보여줍니다. 매니페스트는 director가 하드웨어와 관련된 설정 옵션을 포함하는 방법을 제공합니다. 이는 director가 하드웨어를 사용하도록 오버클라우드를 설정하는 주요 통합 지점 역할을 합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat