Commit f5956bd9 authored by Jonathan's avatar Jonathan
Browse files

Merge pull request #33 from djjudas21/preserve_modules

Preserve modules
parents 26fb5079 833d5d3a
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -87,6 +87,9 @@ Install support for MySQL. Note this only installs the package. Use `freeradius:
##### `perl_support`
Install support for Perl. Default: `false`

##### `preserve_mods`
Leave recommended stock modules enabled. Default: `true`

##### `utils_support`
Install FreeRADIUS utils. Default: `false`

@@ -467,15 +470,24 @@ Default: `allow`

#### `freeradius::module`

Install a module from a flat file.
Install a module from a flat file, or enable a stock module that came with your distribution of FreeRADIUS.

```puppet
# Enable a stock module
freeradius::module { 'pap':
  preserve => true,
}
```

```puppet
# Install a custom module from a flat file
freeradius::module { 'buffered-sql':
  source => 'puppet:///modules/site_freeradius/buffered-sql',
}
```

```puppet
# Install a custom module from a template
freeradius::module { 'buffered-sql':
  content => template('some_template.erb)',
}
+37 −11
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ class freeradius (
  $wpa_supplicant  = false,
  $winbind_support = false,
  $syslog          = false,
  $preserve_mods   = true,
) inherits freeradius::params {

  if ($freeradius::fr_version != 3) {
@@ -55,6 +56,7 @@ class freeradius (
    "${freeradius::fr_basepath}/certs",
    "${freeradius::fr_basepath}/clients.d",
    "${freeradius::fr_basepath}/sites-enabled",
    "${freeradius::fr_basepath}/mods-enabled",
    "${freeradius::fr_basepath}/instantiate",
  ]:
    ensure  => directory,
@@ -67,12 +69,43 @@ class freeradius (
    notify  => Service[$freeradius::fr_service],
  }

  # Delete some modules which come bundled with the server that we
  # know break functionality out of the box with this config
  freeradius::module { 'eap':
    ensure => absent,
  # Preserve some stock modules
  if ($preserve_mods) {
    freeradius::module { [
      'always',
      'cache_eap',
      'chap',
      'detail',
      'detail.log',
      'dhcp',
      'digest',
      'dynamic_clients',
      'echo',
      'exec',
      'expiration',
      'expr',
      'files',
      'linelog',
      'logintime',
      'mschap',
      'ntlm_auth',
      'pap',
      'passwd',
      'preprocess',
      'radutmp',
      'realm',
      'replicate',
      'soh',
      'sradutmp',
      'unix',
      'unpack',
      'utf8',
    ]:
      preserve => true,
    }
  }


  # Set up concat policy file, as there is only one global policy
  # We also add standard header and footer
  concat { "${freeradius::fr_basepath}/policy.conf":
@@ -225,13 +258,6 @@ class freeradius (
    require => Package[$freeradius::fr_package]
  }

  # Install a few modules required on all FR installations
  # No content is specified, so we accept the package manager default
  # Defining them here prevents them from being purged
  freeradius::module  { 'always': }
  freeradius::module { 'detail': }
  freeradius::module { 'detail.log': }

  # Syslog rules
  if $syslog == true {
    rsyslog::snippet { '12-radiusd-log':
+20 −9
Original line number Diff line number Diff line
@@ -3,12 +3,22 @@ define freeradius::module (
  $source = undef,
  $content = undef,
  $ensure = present,
  $preserve = false,
) {
  $fr_package  = $::freeradius::params::fr_package
  $fr_service  = $::freeradius::params::fr_service
  $fr_modulepath = $::freeradius::params::fr_modulepath
  $fr_basepath = $::freeradius::params::fr_basepath
  $fr_group    = $::freeradius::params::fr_group

  if ($preserve) {
    # Symlink to mods-available for stock modules
    file { "${fr_modulepath}/${name}":
      ensure => link,
      target => "../mods-available/${name}",
    }
  } else {
    # Deploy actual module to sites-enabled
    file { "${fr_modulepath}/${name}":
      ensure  => $ensure,
      mode    => '0640',
@@ -20,3 +30,4 @@ define freeradius::module (
      notify  => Service[$fr_service],
    }
  }
}