diff --git a/manifests/package.pp b/manifests/package.pp index 3a390d7..b229ca4 100644 --- a/manifests/package.pp +++ b/manifests/package.pp @@ -1,80 +1,81 @@ # == Class: sudo::package # # Installs the sudo package on various platforms. # # === Parameters # # Document parameters here. # # [*package*] # The name of the sudo package to be installed # # [*package_ensure*] # Ensure if present or absent # # [*package_source*] # Where to find the sudo packge, should be a local file or a uri # # === Examples # # class { sysdoc::package # package => 'sudo', # } # # === Authors # # Toni Schmidbauer # # === Copyright # # Copyright 2013 Toni Schmidbauer # class sudo::package( $package = '', $package_ensure = present, $package_source = '', $package_admin_file = '', $ldap_enable = false, ) { if $ldap_enable == true { case $::osfamily { 'Gentoo': { if defined( '::portage' ) { Class['::sudo'] -> Class['::portage'] package_use { 'app-admin/sudo': ensure => present, use => ['ldap'], target => 'sudo-flags', } } else { fail ('portage package needed to define ldap use on sudo') } } default: { } } } case $::osfamily { 'AIX': { class { '::sudo::package::aix': package => $package, package_source => $package_source, package_ensure => $package_ensure, } } - 'OpenBSD': {} 'Darwin': {} 'Solaris': { class { '::sudo::package::solaris': package => $package, package_source => $package_source, package_ensure => $package_ensure, package_admin_file => $package_admin_file, } } default: { - ensure_packages([$package]) + if $package != '' { + ensure_packages([$package], {'ensure' => $package_ensure}) + } } } } diff --git a/manifests/params.pp b/manifests/params.pp index d03d9b6..709f98c 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,221 +1,225 @@ #class sudo::params #Set the paramters for the sudo module class sudo::params { $source_base = "puppet:///modules/${module_name}/" case $::osfamily { 'Debian': { case $::operatingsystem { 'Ubuntu': { $source = "${source_base}sudoers.ubuntu" } default: { if (versioncmp($::operatingsystemmajrelease, '7') >= 0) or ($::operatingsystemmajrelease =~ /\/sid/) or ($::operatingsystemmajrelease =~ /Kali/) { $source = "${source_base}sudoers.debian" } else { $source = "${source_base}sudoers.olddebian" } } } $package = 'sudo' $package_ldap = 'sudo-ldap' $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $config_file_group = 'root' } 'RedHat': { $package = 'sudo' # in redhat sudo package is already compiled for ldap support $package_ldap = $package # rhel 5.0 to 5.4 use sudo 1.6.9 which does not support # includedir, so we have to make sure sudo 1.7 (comes with rhel # 5.5) is installed. $package_ensure = $::operatingsystemrelease ? { /^5.[01234]/ => 'latest', default => 'present', } $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = $::operatingsystemmajrelease ? { '5' => true, default => false, } $config_dir = '/etc/sudoers.d/' $source = $::operatingsystemrelease ? { /^5/ => "${source_base}sudoers.rhel5", /^6/ => "${source_base}sudoers.rhel6", /^7/ => "${source_base}sudoers.rhel7", default => "${source_base}sudoers.rhel6", } $config_file_group = 'root' } 'Suse': { $package = 'sudo' $package_ldap = $package $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.suse" $config_file_group = 'root' } 'Solaris': { case $::operatingsystem { 'OmniOS': { $package = 'sudo' $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.omnios" $config_file_group = 'root' } 'SmartOS': { $package = 'sudo' $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/opt/local/etc/sudoers' $config_dir = '/opt/local/etc/sudoers.d/' $source = "${source_base}sudoers.smartos" $config_file_group = 'root' } default: { case $::kernelrelease { '5.11': { $package = 'pkg://solaris/security/sudo' $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.solaris" $config_file_group = 'root' } '5.10': { $package = 'TCMsudo' $package_ldap = undef $package_ensure = 'present' $package_source = "http://www.sudo.ws/sudo/dist/packages/Solaris/10/TCMsudo-1.8.9p5-${::hardwareisa}.pkg.gz" $package_admin_file = '/var/sadm/install/admin/puppet' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.solaris" $config_file_group = 'root' } default: { fail("Unsupported platform: ${::osfamily}/${::operatingsystem}/${::kernelrelease}") } } } } } 'FreeBSD': { $package = 'security/sudo' $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/usr/local/etc/sudoers' $includedirsudoers = false $config_dir = '/usr/local/etc/sudoers.d/' $source = "${source_base}sudoers.freebsd" $config_file_group = 'wheel' } 'OpenBSD': { - $package = undef + if (versioncmp($::kernelversion, '5.8') < 0) { + $package = undef + } else { + $package = 'sudo' + } $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.openbsd" $config_file_group = 'wheel' } 'AIX': { $package = 'sudo' $package_ldap = undef $package_ensure = 'present' $package_source = 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.9-6.aix53.lam.rpm' $package_admin_file = '' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.aix" $config_file_group = 'system' } 'Darwin': { $package = undef $package_ldap = undef $package_ensure = 'present' $package_source = '' $package_admin_file = '' $config_file = '/etc/sudoers' $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.darwin" $config_file_group = 'wheel' } default: { case $::operatingsystem { 'Gentoo': { $package = 'sudo' $package_ldap = $package $package_ensure = 'present' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.gentoo" $config_file_group = 'root' } 'Archlinux': { $package = 'sudo' $package_ldap = $package $package_ensure = 'present' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = "${source_base}sudoers.archlinux" $config_file_group = 'root' } 'Amazon': { $package = 'sudo' $package_ldap = $package $package_ensure = 'present' $config_file = '/etc/sudoers' $includedirsudoers = false $config_dir = '/etc/sudoers.d/' $source = $::operatingsystemrelease ? { /^5/ => "${source_base}sudoers.rhel5", /^6/ => "${source_base}sudoers.rhel6", default => "${source_base}sudoers.rhel6", } $config_file_group = 'root' } default: { fail("Unsupported platform: ${::osfamily}/${::operatingsystem}") } } $package_source = '' $package_admin_file = '' } } } diff --git a/spec/classes/package_spec.rb b/spec/classes/package_spec.rb index 90bd3ce..127fd52 100644 --- a/spec/classes/package_spec.rb +++ b/spec/classes/package_spec.rb @@ -1,45 +1,79 @@ require 'spec_helper' describe 'sudo::package' do describe 'on supported osfamily: RedHat' do let :params do { :package => 'sudo', :package_ensure => 'present' } end let :facts do { :osfamily => 'RedHat' } end it do is_expected.to contain_package('sudo').with('ensure' => 'present') end end + describe 'on supported osfamily: OpenBSD 5.8' do + let :params do + { + :package => 'sudo', + :package_ensure => 'present', + } + + end + let :facts do + { + :osfamily => 'OpenBSD', + :kernelversion => '5.8', + } + end + + it { + should contain_package('sudo').with('ensure' => 'present') + } + end + + describe 'on supported osfamily: OpenBSD 5.7' do + + let :facts do + { + :osfamily => 'OpenBSD', + :kernelversion => '5.7', + } + end + + it { + should_not contain_package('sudo') + } + end + describe 'on supported osfamily: AIX' do let :params do { :package => 'sudo', :package_ensure => 'present', :package_source => 'http://www.oss4aix.org/compatible/aix53/sudo-1.8.7-1.aix5.1.ppc.rpm' } end let :facts do { :osfamily => 'AIX' } end it do is_expected.to contain_class('sudo::package::aix').with( 'package' => 'sudo', 'package_source' => 'http://www.oss4aix.org/compatible/aix53/sudo-1.8.7-1.aix5.1.ppc.rpm', 'package_ensure' => 'present' ) end end end