Loading README.md +26 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ * [`freeradius::home_server_pool`](#freeradiushomeserverpool) * [`freeradius::instantiate`](#freeradiusinstantiate) * [`freeradius::ldap`](#freeradiusldap) * [`freeradius::krb5`](#freeradiuskrb5) * [`freeradius::module`](#freeradiusmodule) * [`freeradius::policy`](#freeradiuspolicy) * [`freeradius::realm`](#freeradiusrealm) Loading Loading @@ -96,6 +97,9 @@ Install FreeRADIUS utils. Default: `false` ##### `ldap_support` Install support for LDAP. Default: `false` ##### `krb5_support` Install support for Kerberos. Default: `false` ##### `wpa_supplicant` Install wpa_supplicant utility. Default: `false` Loading Loading @@ -467,6 +471,28 @@ Certificate Verification requirements. Choose from: Default: `allow` #### `freeradius::krb5` Configure Kerberos support for FreeRADIUS ##### `keytab` Full path to the Kerberos keytab file ##### `principal` Name of the service principal ##### `start` Connections to create during module instantiation. If the server cannot create specified number of connections during instantiation it will exit. Set to 0 to allow the server to start without the directory being available. Default: `${thread[pool].start_servers}` ##### `min` Minimum number of connections to keep open. Default: `${thread[pool].min_spare_servers}` ##### `max` Maximum number of connections. Default: `${thread[pool].max_servers}` ##### `spare` Spare connections to be left idle. Default: `${thread[pool].max_spare_servers}` #### `freeradius::module` Loading manifests/init.pp +6 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ class freeradius ( $perl_support = false, $utils_support = false, $ldap_support = false, $krb5_support = false, $wpa_supplicant = false, $winbind_support = false, $syslog = false, Loading Loading @@ -218,6 +219,11 @@ class freeradius ( ensure => installed, } } if $krb5_support { package { 'freeradius-krb5': ensure => installed, } } if $wpa_supplicant { package { 'wpa_supplicant': ensure => installed, Loading manifests/krb5.pp 0 → 100644 +26 −0 Original line number Diff line number Diff line # Configure Kerberos support for FreeRADIUS define freeradius::krb5 ( $keytab, $principal, $start = '${thread[pool].start_servers}', $min = '${thread[pool].min_spare_servers}', $max = '${thread[pool].max_servers}', $spare = '${thread[pool].max_spare_servers}', $ensure = 'present', ) { $fr_package = $::freeradius::params::fr_package $fr_service = $::freeradius::params::fr_service $fr_modulepath = $::freeradius::params::fr_modulepath $fr_group = $::freeradius::params::fr_group # Generate a module config file { "${fr_modulepath}/${name}": ensure => $ensure, mode => '0640', owner => 'root', group => $fr_group, content => template('freeradius/krb5.erb'), require => [Package[$fr_package], Group[$fr_group]], notify => Service[$fr_service], } } spec/classes/freeradius_spec.rb +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ describe 'freeradius' do #:perl_support => false, #:utils_support => false, #:ldap_support => false, #:krb5_support => false, #:wpa_supplicant => false, #:winbind_support => false, #:syslog => false, Loading Loading @@ -332,6 +333,12 @@ describe 'freeradius' do 'ensure' => 'installed' ) end it do is_expected.to contain_package('freeradius-krb5') .with( 'ensure' => 'installed' ) end it do is_expected.to contain_package('wpa_supplicant') .with( Loading spec/defines/krb5_spec.rb 0 → 100644 +49 −0 Original line number Diff line number Diff line require 'spec_helper' require 'shared_contexts' describe 'freeradius::krb5' do # by default the hiera integration uses hiera data from the shared_contexts.rb file # but basically to mock hiera you first need to add a key/value pair # to the specific context in the spec/shared_contexts.rb file # Note: you can only use a single hiera context per describe/context block # rspec-puppet does not allow you to swap out hiera data on a per test block #include_context :hiera let(:title) { 'XXreplace_meXX' } # below is the facts hash that gives you the ability to mock # facts on a per describe/context block. If you use a fact in your # manifest you should mock the facts below. let(:facts) do {} end # below is a list of the resource parameters that you can override. # By default all non-required parameters are commented out, # while all required parameters will require you to add a value let(:params) do { :keytab => 'place_value_here', :principal => 'place_value_here', #:start => "${thread[pool].start_servers}", #:min => "${thread[pool].min_spare_servers}", #:max => "${thread[pool].max_servers}", #:spare => "${thread[pool].max_spare_servers}", #:ensure => "present", } end # add these two lines in a single test block to enable puppet and hiera debug mode # Puppet::Util::Log.level = :debug # Puppet::Util::Log.newdestination(:console) it do is_expected.to contain_file('$::osfamily ? { RedHat => /etc/raddb, Debian => /etc/freeradius, default => /etc/raddb }/$fr_version ? { 2 => modules, 3 => mods-enabled, default => modules }/XXreplace_meXX') .with( 'content' => 'template(freeradius/krb5.erb)', 'ensure' => 'present', 'group' => '$::osfamily ? { RedHat => radiusd, Debian => freerad, default => radiusd }', 'mode' => '0640', 'notify' => 'Service[$fr_service]', 'owner' => 'root', 'require' => '[Package[$fr_package], Group[$fr_group]]' ) end end Loading
README.md +26 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ * [`freeradius::home_server_pool`](#freeradiushomeserverpool) * [`freeradius::instantiate`](#freeradiusinstantiate) * [`freeradius::ldap`](#freeradiusldap) * [`freeradius::krb5`](#freeradiuskrb5) * [`freeradius::module`](#freeradiusmodule) * [`freeradius::policy`](#freeradiuspolicy) * [`freeradius::realm`](#freeradiusrealm) Loading Loading @@ -96,6 +97,9 @@ Install FreeRADIUS utils. Default: `false` ##### `ldap_support` Install support for LDAP. Default: `false` ##### `krb5_support` Install support for Kerberos. Default: `false` ##### `wpa_supplicant` Install wpa_supplicant utility. Default: `false` Loading Loading @@ -467,6 +471,28 @@ Certificate Verification requirements. Choose from: Default: `allow` #### `freeradius::krb5` Configure Kerberos support for FreeRADIUS ##### `keytab` Full path to the Kerberos keytab file ##### `principal` Name of the service principal ##### `start` Connections to create during module instantiation. If the server cannot create specified number of connections during instantiation it will exit. Set to 0 to allow the server to start without the directory being available. Default: `${thread[pool].start_servers}` ##### `min` Minimum number of connections to keep open. Default: `${thread[pool].min_spare_servers}` ##### `max` Maximum number of connections. Default: `${thread[pool].max_servers}` ##### `spare` Spare connections to be left idle. Default: `${thread[pool].max_spare_servers}` #### `freeradius::module` Loading
manifests/init.pp +6 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ class freeradius ( $perl_support = false, $utils_support = false, $ldap_support = false, $krb5_support = false, $wpa_supplicant = false, $winbind_support = false, $syslog = false, Loading Loading @@ -218,6 +219,11 @@ class freeradius ( ensure => installed, } } if $krb5_support { package { 'freeradius-krb5': ensure => installed, } } if $wpa_supplicant { package { 'wpa_supplicant': ensure => installed, Loading
manifests/krb5.pp 0 → 100644 +26 −0 Original line number Diff line number Diff line # Configure Kerberos support for FreeRADIUS define freeradius::krb5 ( $keytab, $principal, $start = '${thread[pool].start_servers}', $min = '${thread[pool].min_spare_servers}', $max = '${thread[pool].max_servers}', $spare = '${thread[pool].max_spare_servers}', $ensure = 'present', ) { $fr_package = $::freeradius::params::fr_package $fr_service = $::freeradius::params::fr_service $fr_modulepath = $::freeradius::params::fr_modulepath $fr_group = $::freeradius::params::fr_group # Generate a module config file { "${fr_modulepath}/${name}": ensure => $ensure, mode => '0640', owner => 'root', group => $fr_group, content => template('freeradius/krb5.erb'), require => [Package[$fr_package], Group[$fr_group]], notify => Service[$fr_service], } }
spec/classes/freeradius_spec.rb +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ describe 'freeradius' do #:perl_support => false, #:utils_support => false, #:ldap_support => false, #:krb5_support => false, #:wpa_supplicant => false, #:winbind_support => false, #:syslog => false, Loading Loading @@ -332,6 +333,12 @@ describe 'freeradius' do 'ensure' => 'installed' ) end it do is_expected.to contain_package('freeradius-krb5') .with( 'ensure' => 'installed' ) end it do is_expected.to contain_package('wpa_supplicant') .with( Loading
spec/defines/krb5_spec.rb 0 → 100644 +49 −0 Original line number Diff line number Diff line require 'spec_helper' require 'shared_contexts' describe 'freeradius::krb5' do # by default the hiera integration uses hiera data from the shared_contexts.rb file # but basically to mock hiera you first need to add a key/value pair # to the specific context in the spec/shared_contexts.rb file # Note: you can only use a single hiera context per describe/context block # rspec-puppet does not allow you to swap out hiera data on a per test block #include_context :hiera let(:title) { 'XXreplace_meXX' } # below is the facts hash that gives you the ability to mock # facts on a per describe/context block. If you use a fact in your # manifest you should mock the facts below. let(:facts) do {} end # below is a list of the resource parameters that you can override. # By default all non-required parameters are commented out, # while all required parameters will require you to add a value let(:params) do { :keytab => 'place_value_here', :principal => 'place_value_here', #:start => "${thread[pool].start_servers}", #:min => "${thread[pool].min_spare_servers}", #:max => "${thread[pool].max_servers}", #:spare => "${thread[pool].max_spare_servers}", #:ensure => "present", } end # add these two lines in a single test block to enable puppet and hiera debug mode # Puppet::Util::Log.level = :debug # Puppet::Util::Log.newdestination(:console) it do is_expected.to contain_file('$::osfamily ? { RedHat => /etc/raddb, Debian => /etc/freeradius, default => /etc/raddb }/$fr_version ? { 2 => modules, 3 => mods-enabled, default => modules }/XXreplace_meXX') .with( 'content' => 'template(freeradius/krb5.erb)', 'ensure' => 'present', 'group' => '$::osfamily ? { RedHat => radiusd, Debian => freerad, default => radiusd }', 'mode' => '0640', 'notify' => 'Service[$fr_service]', 'owner' => 'root', 'require' => '[Package[$fr_package], Group[$fr_group]]' ) end end