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) }
다음과 같은 몇 가지 작업을 수행할 수 있습니다.
-
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;
다음을
cinder.conf
파일에 저장합니다.[mynfs] volume_backend_name=mynfs volume_driver=cinder.volume.drivers.nfs.NfsDriver nfs_shares_config=/etc/cinder/shares.conf
-
create_resources
함수는 해시를 리소스 세트로 변환합니다. 이 경우 매니페스트는$extra_options
해시를 백엔드의 추가 구성 옵션 세트로 변환합니다. 이를 통해 매니페스트의 핵심 매개변수에 포함되지 않은 구성 옵션을 추가할 수 있는 유연한 방법이 제공됩니다.
이는 하드웨어의 OpenStack 드라이버를 구성하는 매니페스트를 포함하는 것이 중요합니다. 매니페스트는 director가 하드웨어와 관련된 설정 옵션을 포함하는 간단한 방법을 제공합니다. 이는 director가 하드웨어를 사용하도록 오버클라우드를 구성하는 기본 통합 지점 역할을 합니다.