# manage zfs services class zfs::service { if $zfs::service_manage { exec { 'modprobe zfs': path => $facts['path'], unless => 'grep -q "^zfs " /proc/modules', } case $facts['service_provider'] { 'systemd': { $cache_ensure = str2bool($facts['zfs_zpool_cache_present']) ? { true => 'running', default => 'stopped', } $scan_ensure = str2bool($facts['zfs_zpool_cache_present']) ? { true => 'stopped', default => 'running', } service { 'zfs-import-cache': ensure => $cache_ensure, enable => true, hasstatus => true, hasrestart => true, require => Exec['modprobe zfs'], before => Service['zfs-mount'], } service { 'zfs-import-scan': ensure => $scan_ensure, enable => true, hasstatus => true, hasrestart => true, require => Exec['modprobe zfs'], before => Service['zfs-mount'], } } default: { case $facts['os']['family'] { 'RedHat': { service { 'zfs-import': ensure => running, enable => true, hasstatus => true, hasrestart => true, require => Exec['modprobe zfs'], before => Service['zfs-mount'], } } 'Debian': { $import_ensure = str2bool($facts['zfs_zpool_cache_present']) ? { true => 'running', default => 'stopped', } service { 'zpool-import': ensure => $import_ensure, enable => true, hasstatus => true, hasrestart => true, require => Exec['modprobe zfs'], } } default: { # noop } } } } service { 'zfs-mount': ensure => running, enable => true, hasstatus => true, hasrestart => true, before => Service['zfs-share'], } service { 'zfs-share': ensure => running, enable => true, hasstatus => true, hasrestart => true, } } }