Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
4.3. Puppet モジュールの設定例
OpenStack モジュールでは、主にコアサービスを設定します。モジュールの多くには、backends、agents または plugins として知られる追加のサービスを設定するための追加のマニフェストも含まれます。たとえば、cinder
モジュールには backends
と呼ばれるディレクトリーがあり、この中には NFS、iSCSI、Red Hat Ceph Storage などの異なるストレージデバイス用の設定オプションが含まれます。
たとえば、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 がハードウェアをオーバークラウドで使用できるように設定する際の主要な統合ポイントのロールを果たします。