diff --git a/README.md b/README.md index 34c7964..6891c18 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,18 @@ zram_generator::zram{'zram1': This will create a `/dev/zram1` device half the size of available RAM and activate it. +## Hiera Example + +A set of `zram_generator::zram` can be loaded from hiera: + +```yaml +zram_generator::zrams: + zram0: + fs_type: 'ext4' + mount_point: '/run/mount' + zram1: + zram_size: 1024 +``` ## Reference diff --git a/REFERENCE.md b/REFERENCE.md index 3245b84..d175b40 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -35,6 +35,7 @@ The following parameters are available in the `zram_generator` class: * [`install_defaults`](#-zram_generator--install_defaults) * [`manage_defaults_package`](#-zram_generator--manage_defaults_package) +* [`zrams`](#-zram_generator--zrams) ##### `install_defaults` @@ -52,6 +53,14 @@ whether the zram-generator-defaults package should be managed Default value: `$facts['os']['name'] != 'Archlinux'` +##### `zrams` + +Data type: `Stdlib::CreateResources` + +Hash of zram_generator::zram instances to expand from hiera. + +Default value: `{}` + ## Defined types ### `zram_generator::zram` diff --git a/manifests/init.pp b/manifests/init.pp index ac1c579..f6a6efd 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -2,10 +2,12 @@ # @see https://github.com/systemd/zram-generator # @param install_defaults Controls if the package 'zram-generator-defaults' be installed. # @param manage_defaults_package whether the zram-generator-defaults package should be managed +# @param zrams Hash of zram_generator::zram instances to expand from hiera. # class zram_generator ( Enum['installed', 'absent'] $install_defaults = 'absent', Boolean $manage_defaults_package = $facts['os']['name'] != 'Archlinux', + Stdlib::CreateResources $zrams = {}, ) { contain zram_generator::install contain zram_generator::config @@ -14,4 +16,10 @@ Class['zram_generator::install'] -> Class['zram_generator::config'] -> Class['zram_generator::service'] + + $zrams.each |$name, $resource| { + zram_generator::zram { $name: + * => $resource, + } + } } diff --git a/metadata.json b/metadata.json index abb7c5a..aaeb6f6 100644 --- a/metadata.json +++ b/metadata.json @@ -10,7 +10,7 @@ "dependencies": [ { "name": "puppetlabs/stdlib", - "version_requirement": ">= 4.18.0 < 10.0.0" + "version_requirement": ">= 8.5.0 < 10.0.0" } ], "tags": [ diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index dda5dd7..a431939 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -16,6 +16,7 @@ it { is_expected.to contain_exec('generate_zram_units').with_refreshonly(true) } it { is_expected.to contain_file('/usr/lib/systemd/zram-generator.conf.d').with_ensure('directory') } it { is_expected.to contain_package('zram-generator').with_ensure('installed') } + it { is_expected.to have_zram_generator__zram_resource_count(0) } if facts[:os]['name'] == 'Archlinux' it { is_expected.not_to contain_package('zram-generator-defaults') } @@ -54,6 +55,35 @@ it { is_expected.not_to contain_package('zram-generator-defaults') } end + + context 'with a hash of zrams specified' do + let :params do + { + zrams: { + 'zram0' => { + 'fs_type' => 'ext4', + 'mount_point' => '/run/mount', + }, + 'zram1' => { + 'zram_size' => 1024, + }, + }, + } + end + + it { + is_expected.to contain_zram_generator__zram('zram0'). + with_fs_type('ext4'). + with_mount_point('/run/mount') + } + + it { + is_expected.to contain_zram_generator__zram('zram1'). + with_zram_size('1024') + } + + it { is_expected.to have_zram_generator__zram_resource_count(2) } + end end end end