diff --git a/manifests/init.pp b/manifests/init.pp index 7165bf5..b230384 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,219 +1,219 @@ # Class: sudo # # This module manages sudo # # Parameters: # [*ensure*] # Ensure if present or absent. # Default: present # # [*package*] # Name of the package. # Only set this, if your platform is not supported or you know, # what you're doing. # Default: auto-set, platform specific # # [*package_ensure*] # Allows you to ensure a particular version of a package # Default: present / lastest for RHEL < 5.5 # # [*package_source*] # Where to find the package. Only set this on AIX (required) and # Solaris (required) or if your platform is not supported or you # know, what you're doing. # # The default for aix is the perzl sudo package. For solaris 10 we # use the official www.sudo.ws binary package. # # Default: AIX: perzl.org # Solaris: www.sudo.ws # -# [*package_provider_override*] -# Allows you to override the default package provider. -# Default: rpm +# [*package_provider*] +# Allows you to set a package provider. +# Default: AIX: rpm # # [*package_admin_file*] # Where to find a Solaris 10 package admin file for # an unattended installation. We do not supply a default file, so # this has to be staged separately # # Only set this on Solaris 10 (required) # Default: /var/sadm/install/admin/puppet # # [*purge*] # Whether or not to purge sudoers.d directory # Default: true # # [*purge_ignore*] # Files to exclude from purging in sudoers.d directory # Default: undef # # [*suffix*] # Adds a custom suffix to all files created in sudoers.d directory. # # [*config_file*] # Main configuration file. # Only set this, if your platform is not supported or you know, # what you're doing. # Default: auto-set, platform specific # # [*config_dir*] # Main directory containing sudo snippets, imported via # includedir stanza in sudoers file # Default: auto-set, platform specific # # [*extra_include_dirs*] # Array of additional directories containing sudo snippets # Default: undef # # [*content*] # Alternate content file location # Only set this, if your platform is not supported or you know, # what you're doing. # Default: auto-set, platform specific # # [*ldap_enable*] # Enable ldap support on the package # Default: false # # [*delete_on_error*] # True if you want that the configuration is deleted on an error # during a complete visudo -c run. If false it will just return # an error and will add a comment to the sudoers configuration so # that the resource will be checked at the following run. # Default: true # # [*validate_single*] # Do a validate on the "single" file in the sudoers.d directory. # If the validate fail the file will not be saved or changed # if a file already exist. # Default: false # # [*wheel_config*] # How to configure the wheel group in /etc/sudoers # Options are either not to configure it it, configure it prompting for password, # or configuring it without password prompt. # Default: 'absent' (don't configure it at all) # # [*use_sudoreplay*] # Boolean to enable the usage of sudoreplay. # Default: false # # [*sudoreplay_discard*] # Array of additional command to discard in sudo log. # Default: undef # # [*configs*] # A hash of sudo::conf's # Default: {} # # Actions: # Installs sudo package and checks the state of sudoers file and # sudoers.d directory. # # Requires: # Nothing # # Sample Usage: # class { 'sudo': } # # [Remember: No empty lines between comments and class definition] class sudo ( - Boolean $enable = true, - Optional[String] $package = $sudo::params::package, - Optional[String] $package_ldap = $sudo::params::package_ldap, - String $package_ensure = $sudo::params::package_ensure, - Optional[String] $package_source = $sudo::params::package_source, - Optional[String] $package_provider_override = $sudo::params::package_provider_override, - Optional[String] $package_admin_file = $sudo::params::package_admin_file, - Boolean $purge = true, - Optional[Variant[String, Array[String]]] $purge_ignore = undef, - Optional[String] $suffix = undef, - String $config_file = $sudo::params::config_file, - Boolean $config_file_replace = true, - String $config_file_mode = $sudo::params::config_file_mode, - String $config_dir = $sudo::params::config_dir, - String $config_dir_mode = $sudo::params::config_dir_mode, - Optional[Array[String]] $extra_include_dirs = undef, - String $content = $sudo::params::content, - Boolean $ldap_enable = false, - Boolean $delete_on_error = true, - Boolean $validate_single = false, - Boolean $config_dir_keepme = $sudo::params::config_dir_keepme, - Boolean $use_sudoreplay = false, - Enum['absent','password','nopassword'] $wheel_config = 'absent', - Optional[Array[String]] $sudoreplay_discard = undef, - Hash $configs = {}, + Boolean $enable = true, + Optional[String] $package = $sudo::params::package, + Optional[String] $package_ldap = $sudo::params::package_ldap, + String $package_ensure = $sudo::params::package_ensure, + Optional[String] $package_source = $sudo::params::package_source, + Optional[String] $package_provider = $sudo::params::package_provider, + Optional[String] $package_admin_file = $sudo::params::package_admin_file, + Boolean $purge = true, + Optional[Variant[String, Array[String]]] $purge_ignore = undef, + Optional[String] $suffix = undef, + String $config_file = $sudo::params::config_file, + Boolean $config_file_replace = true, + String $config_file_mode = $sudo::params::config_file_mode, + String $config_dir = $sudo::params::config_dir, + String $config_dir_mode = $sudo::params::config_dir_mode, + Optional[Array[String]] $extra_include_dirs = undef, + String $content = $sudo::params::content, + Boolean $ldap_enable = false, + Boolean $delete_on_error = true, + Boolean $validate_single = false, + Boolean $config_dir_keepme = $sudo::params::config_dir_keepme, + Boolean $use_sudoreplay = false, + Enum['absent','password','nopassword'] $wheel_config = 'absent', + Optional[Array[String]] $sudoreplay_discard = undef, + Hash $configs = {}, ) inherits sudo::params { case $enable { true: { $dir_ensure = 'directory' $file_ensure = 'present' } false: { $dir_ensure = 'absent' $file_ensure = 'absent' } default: { fail('no $enable is set') } } case $ldap_enable { true: { if $package_ldap == undef { fail('on your os ldap support for sudo is not yet supported') } $package_real = $package_ldap } false: { $package_real = $package } default: { fail('no $ldap_enable is set') } } if $package_real { class { 'sudo::package': - package => $package_real, - package_ensure => $package_ensure, - package_source => $package_source, - package_provider_override => $package_provider_override, - package_admin_file => $package_admin_file, - ldap_enable => $ldap_enable, - before => [ + package => $package_real, + package_ensure => $package_ensure, + package_source => $package_source, + package_provider => $package_provider, + package_admin_file => $package_admin_file, + ldap_enable => $ldap_enable, + before => [ File[$config_file], File[$config_dir], ], } } file { $config_file: ensure => $file_ensure, owner => 'root', group => $sudo::params::config_file_group, mode => $config_file_mode, replace => $config_file_replace, content => template($content), } file { $config_dir: ensure => $dir_ensure, owner => 'root', group => $sudo::params::config_file_group, mode => $config_dir_mode, recurse => $purge, purge => $purge, ignore => $purge_ignore, } if $config_dir_keepme { file { "${config_dir}/.keep-me": ensure => file, owner => 'root', group => $sudo::params::config_file_group, } } $configs.each |$config_name, $config| { sudo::conf { $config_name: * => $config, } } } diff --git a/manifests/package.pp b/manifests/package.pp index 376ee39..dc0a4dc 100644 --- a/manifests/package.pp +++ b/manifests/package.pp @@ -1,89 +1,83 @@ # == 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 # -# [*package_provider_override*] -# Override the default package provider -# -# === Examples -# -# class { sysdoc::package -# package => 'sudo', -# } +# [*package_provider*] +# Set package provider # # === Authors # # Toni Schmidbauer # # === Copyright # # Copyright 2013 Toni Schmidbauer # class sudo::package ( - $package = '', - $package_ensure = present, - $package_source = '', - $package_provider_override = '', + $package = '', + $package_ensure = present, + $package_source = '', + $package_provider = undef, $package_admin_file = '', - $ldap_enable = false, + $ldap_enable = false, ) { if $ldap_enable == true { case $facts['os']['family'] { '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 $facts['os']['family'] { 'AIX': { class { 'sudo::package::aix': - package => $package, - package_source => $package_source, - package_ensure => $package_ensure, - package_provider_override => $package_provider_override, + package => $package, + package_source => $package_source, + package_ensure => $package_ensure, + package_provider => $package_provider, } } 'Darwin': {} 'Solaris': { class { 'sudo::package::solaris': package => $package, package_source => $package_source, package_ensure => $package_ensure, package_admin_file => $package_admin_file, } } default: { if $package != '' { ensure_packages([ $package, ], { 'ensure' => $package_ensure, }) } } } } diff --git a/manifests/package/aix.pp b/manifests/package/aix.pp index 622aada..724c237 100644 --- a/manifests/package/aix.pp +++ b/manifests/package/aix.pp @@ -1,48 +1,48 @@ # == Class: sudo::package::aix # # Install the perzl.org sudo package. It also requires the openldap # rpm. so we add a dependencies to the ldap module. # # === 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 # -# [*package_provider_override*] -# Override the default package provider +# [*package_provider*] +# Set package provider # # === Examples # # class { sudo::package::aix: # package => 'sudo', # package_source 'http://myaixpkgserver/pkgs/aix/sudo-1.8.6p7-1.aix5.1.ppc.rpm'', # } # # === Authors # # Toni Schmidbauer # # === Copyright # # Copyright 2013 Toni Schmidbauer # class sudo::package::aix ( - $package = '', - $package_source = '', - $package_ensure = 'present', - $package_provider_override = '', + $package = '', + $package_source = '', + $package_ensure = 'present', + $package_provider = undef, ) { package { $package: ensure => $package_ensure, source => $package_source, - provider => $package_provider_override, + provider => $package_provider, } } diff --git a/manifests/params.pp b/manifests/params.pp index 1119d7d..9ed8e42 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,228 +1,245 @@ -#class sudo::params -#Set the paramters for the sudo module class sudo::params { $content_base = "${module_name}/" $config_file_mode = '0440' $config_dir_mode = '0550' case $facts['os']['family'] { 'Debian': { case $facts['os']['name'] { 'Ubuntu': { $content = "${content_base}sudoers.ubuntu.erb" } default: { if (versioncmp($facts['os']['release']['major'], '7') >= 0) or ($facts['os']['release']['major'] =~ /\/sid/) or ($facts['os']['release']['major'] =~ /Kali/) { $content = "${content_base}sudoers.debian.erb" } else { $content = "${content_base}sudoers.olddebian.erb" } } } - $package = 'sudo' - $package_ldap = 'sudo-ldap' - $package_ensure = 'present' - $package_source = '' + $package = 'sudo' + $package_ldap = 'sudo-ldap' + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } '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 = $facts['os']['release']['full'] ? { + $package_ensure = $facts['os']['release']['full'] ? { /^5.[01234]$/ => 'latest', - default => 'present', + default => 'present', } - $package_source = '' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' $content = $facts['os']['release']['full'] ? { /^5/ => "${content_base}sudoers.rhel5.erb", /^6/ => "${content_base}sudoers.rhel6.erb", /^7/ => "${content_base}sudoers.rhel7.erb", /^8/ => "${content_base}sudoers.rhel8.erb", default => "${content_base}sudoers.rhel8.erb", } - $config_file_group = 'root' - $config_dir_keepme = false + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } 'Suse': { - $package = 'sudo' - $package_ldap = $package - $package_ensure = 'present' - $package_source = '' + $package = 'sudo' + $package_ldap = $package + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.suse.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.suse.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } 'Solaris': { case $facts['os']['name'] { 'OmniOS': { - $package = 'sudo' - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $package = 'sudo' + $package_ldap = undef + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.omnios.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.omnios.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } 'SmartOS': { - $package = 'sudo' - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $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' - $content = "${content_base}sudoers.smartos.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/opt/local/etc/sudoers' + $config_dir = '/opt/local/etc/sudoers.d' + $content = "${content_base}sudoers.smartos.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } default: { case $::kernelrelease { '5.11': { - $package = 'pkg://solaris/security/sudo' - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $package = 'pkg://solaris/security/sudo' + $package_ldap = undef + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.solaris.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.solaris.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } '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-${facts['os']['hardware']}.pkg.gz" + $package = 'TCMsudo' + $package_ldap = undef + $package_ensure = 'present' + $package_source = "http://www.sudo.ws/sudo/dist/packages/Solaris/10/TCMsudo-1.8.9p5-${facts['os']['hardware']}.pkg.gz" $package_admin_file = '/var/sadm/install/admin/puppet' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.solaris.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.solaris.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } default: { fail("Unsupported platform: ${facts['os']['family']}/${facts['os']['name']}/${::kernelrelease}") } } } } } 'FreeBSD': { - $package = 'security/sudo' - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $package = 'security/sudo' + $package_ldap = undef + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/usr/local/etc/sudoers' - $config_dir = '/usr/local/etc/sudoers.d' - $content = "${content_base}sudoers.freebsd.erb" - $config_file_group = 'wheel' - $config_dir_keepme = true + $config_file = '/usr/local/etc/sudoers' + $config_dir = '/usr/local/etc/sudoers.d' + $content = "${content_base}sudoers.freebsd.erb" + $config_file_group = 'wheel' + $config_dir_keepme = true + $package_provider = '' } 'OpenBSD': { if (versioncmp($::kernelversion, '5.8') < 0) { $package = undef } else { $package = 'sudo' } - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $package_ldap = undef + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.openbsd.erb" - $config_file_group = 'wheel' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.openbsd.erb" + $config_file_group = 'wheel' + $config_dir_keepme = false + $package_provider = '' } 'AIX': { - $package = 'sudo' - $package_ldap = undef - $package_ensure = 'present' - $package_provider_override = 'rpm' - $package_source = 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm' + $package = 'sudo' + $package_ldap = undef + $package_ensure = 'present' + $package_source = 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.aix.erb" - $config_file_group = 'system' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.aix.erb" + $config_file_group = 'system' + $config_dir_keepme = false + $package_provider = 'rpm' } 'Darwin': { - $package = undef - $package_ldap = undef - $package_ensure = 'present' - $package_source = '' + $package = undef + $package_ldap = undef + $package_ensure = 'present' + $package_source = '' $package_admin_file = '' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.darwin.erb" - $config_file_group = 'wheel' - $config_dir_keepme = false + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.darwin.erb" + $config_file_group = 'wheel' + $config_dir_keepme = false + $package_provider = '' } default: { case $facts['os']['name'] { 'Gentoo': { - $package = 'sudo' - $package_ldap = $package - $package_ensure = 'present' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.gentoo.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $package = 'sudo' + $package_ldap = $package + $package_ensure = 'present' + $package_source = '' + $package_admin_file = '' + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.gentoo.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } /^(Arch|Manjaro)(.{0}|linux)$/: { - $package = 'sudo' - $package_ldap = $package - $package_ensure = 'present' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = "${content_base}sudoers.archlinux.erb" - $config_file_group = 'root' - $config_dir_keepme = false + $package = 'sudo' + $package_ldap = $package + $package_ensure = 'present' + $package_source = '' + $package_admin_file = '' + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = "${content_base}sudoers.archlinux.erb" + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } 'Amazon': { - $package = 'sudo' - $package_ldap = $package - $package_ensure = 'present' - $config_file = '/etc/sudoers' - $config_dir = '/etc/sudoers.d' - $content = $facts['os']['release']['full'] ? { + $package = 'sudo' + $package_ldap = $package + $package_ensure = 'present' + $package_source = '' + $package_admin_file = '' + $config_file = '/etc/sudoers' + $config_dir = '/etc/sudoers.d' + $content = $facts['os']['release']['full'] ? { /^5/ => "${content_base}sudoers.rhel5.erb", /^6/ => "${content_base}sudoers.rhel6.erb", default => "${content_base}sudoers.rhel6.erb", } - $config_file_group = 'root' - $config_dir_keepme = false + $config_file_group = 'root' + $config_dir_keepme = false + $package_provider = '' } default: { fail("Unsupported platform: ${facts['os']['family']}/${facts['os']['name']}") } } $package_source = '' $package_admin_file = '' } } } diff --git a/spec/classes/package_aix_spec.rb b/spec/classes/package_aix_spec.rb index 9b0f194..92e76aa 100644 --- a/spec/classes/package_aix_spec.rb +++ b/spec/classes/package_aix_spec.rb @@ -1,51 +1,52 @@ require 'spec_helper' describe 'sudo::package::aix' do describe 'on supported osfamily: AIX' do let :params do { - :package => 'sudo', - :package_ensure => 'present', - :package_source => 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm', - :package_provider_override => 'rpm' + package: 'sudo', + package_ensure: 'present', + package_source: 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm', + package_provider: 'rpm' } end let :facts do { osfamily: 'AIX' } end it do is_expected.to contain_package('sudo').with( 'ensure' => 'present', 'source' => 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm', 'provider' => 'rpm' ) end end - let :params do - { - :package => 'sudo', - :package_ensure => 'present', - :package_source => undef - :package_provider_override => 'yum' - } - end + describe 'on supported osfamily: AIX and package_provider set' do + let :params do + { + package: 'sudo', + package_ensure: 'present', + package_source: :undef, + package_provider: 'yum' + } + end - let :facts do - { - :osfamily => 'AIX' - } - end + let :facts do + { + osfamily: 'AIX' + } + end - it do - is_expected.to contain_package('sudo').with( - 'ensure' => 'present', - 'source' => undef, - 'provider' => 'yum' - ) + it do + is_expected.to contain_package('sudo').with( + 'ensure' => 'present', + 'source' => '', + 'provider' => 'yum' + ) + end end end -end diff --git a/spec/classes/sudo_spec.rb b/spec/classes/sudo_spec.rb index a074058..e7d67a4 100644 --- a/spec/classes/sudo_spec.rb +++ b/spec/classes/sudo_spec.rb @@ -1,257 +1,257 @@ require 'spec_helper' describe 'sudo' do let :default_params do { enable: true, package_ensure: 'present', purge: true, config_file_replace: true } end [{}, { package_ensure: 'present', purge: false, config_file_replace: false }, { package_ensure: 'latest', purge: true, config_file_replace: false }].each do |param_set| describe "when #{param_set == {} ? 'using default' : 'specifying'} class parameters" do let :param_hash do default_params.merge(param_set) end let :params do param_set end %w[Debian Redhat].each do |osfamily| let :facts do { os: { 'family' => osfamily, 'name' => osfamily, 'release' => { 'full' => '7.0', 'major' => '7', }, }, puppetversion: '3.7.0' } end describe "on supported osfamily: #{osfamily}" do it { is_expected.to contain_class('sudo::params') } it do is_expected.to contain_file('/etc/sudoers').with( 'ensure' => 'present', 'owner' => 'root', 'group' => 'root', 'mode' => '0440', 'replace' => param_hash[:config_file_replace] ) end it do is_expected.to contain_file('/etc/sudoers.d').with( 'ensure' => 'directory', 'owner' => 'root', 'group' => 'root', 'mode' => '0550', 'recurse' => param_hash[:purge], 'purge' => param_hash[:purge] ) end it do is_expected.to contain_class('sudo::package').with( 'package' => 'sudo', 'package_ensure' => param_hash[:package_ensure] ) end end end describe 'on RedHat 5.4' do let :facts do { os: { 'family' => 'RedHat', 'name' => 'RedHat', 'release' => { 'full' => '5.4', 'major' => '5', }, }, puppetversion: '3.7.0' } end it do if params == {} is_expected.to contain_class('sudo::package').with( 'package' => 'sudo', 'package_ensure' => 'latest' ) else is_expected.to contain_class('sudo::package').with( 'package' => 'sudo', 'package_ensure' => param_hash[:package_ensure] ) end end end describe 'on supported osfamily: AIX' do let :facts do { os: { 'family' => 'AIX', }, puppetversion: '3.7.0' } end it { is_expected.to contain_class('sudo::params') } it do is_expected.to contain_file('/etc/sudoers').with( 'ensure' => 'present', 'owner' => 'root', 'group' => 'system', 'mode' => '0440', 'replace' => param_hash[:config_file_replace] ) end it do is_expected.to contain_file('/etc/sudoers.d').with( 'ensure' => 'directory', 'owner' => 'root', 'group' => 'system', 'mode' => '0550', 'recurse' => param_hash[:purge], 'purge' => param_hash[:purge] ) end it do is_expected.to contain_class('sudo::package').with( - 'package' => 'sudo', - 'package_ensure' => param_hash[:package_ensure], - 'package_source' => 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm' - 'package_provider_override' => param_hash[:package_provider_override] + 'package' => 'sudo', + 'package_ensure' => param_hash[:package_ensure], + 'package_source' => 'http://www.sudo.ws/sudo/dist/packages/AIX/5.3/sudo-1.8.27-1.aix53.rpm', + 'package_provider' => 'rpm' ) end end describe 'on supported osfamily: Solaris 10' do let :facts do { os: { 'family' => 'Solaris', 'name' => 'Solaris', 'hardware' => 'i386', }, kernelrelease: '5.10', puppetversion: '3.7.0', } end it { is_expected.to contain_class('sudo::params') } it do is_expected.to contain_file('/etc/sudoers').with( 'ensure' => 'present', 'owner' => 'root', 'group' => 'root', 'mode' => '0440', 'replace' => param_hash[:config_file_replace] ) end it do is_expected.to contain_file('/etc/sudoers.d').with( 'ensure' => 'directory', 'owner' => 'root', 'group' => 'root', 'mode' => '0550', 'recurse' => param_hash[:purge], 'purge' => param_hash[:purge] ) end it do is_expected.to contain_class('sudo::package').with( 'package' => 'TCMsudo', 'package_ensure' => param_hash[:package_ensure], 'package_source' => 'http://www.sudo.ws/sudo/dist/packages/Solaris/10/TCMsudo-1.8.9p5-i386.pkg.gz', 'package_admin_file' => '/var/sadm/install/admin/puppet' ) end context 'when package is set' do let :params do { package: 'mysudo' } end it do is_expected.to contain_class('sudo::package').with( 'package' => 'mysudo' ) end end end describe 'on supported osfamily: Solaris 11' do let :facts do { os: { 'family' => 'Solaris', 'name' => 'Solaris', }, kernelrelease: '5.11', puppetversion: '3.7.0' } end it { is_expected.to contain_class('sudo::params') } it do is_expected.to contain_file('/etc/sudoers').with( 'ensure' => 'present', 'owner' => 'root', 'group' => 'root', 'mode' => '0440', 'replace' => param_hash[:config_file_replace] ) end it do is_expected.to contain_file('/etc/sudoers.d').with( 'ensure' => 'directory', 'owner' => 'root', 'group' => 'root', 'mode' => '0550', 'recurse' => param_hash[:purge], 'purge' => param_hash[:purge] ) end it do is_expected.to contain_class('sudo::package').with( 'package' => 'pkg://solaris/security/sudo', 'package_ensure' => param_hash[:package_ensure] ) end end end end end