Puppet Class: samba::server

Inherits:
::samba::params
Defined in:
manifests/server.pp

Overview

Class: samba::server

Samba server.

For all main options, see the smb.conf(5) and samba(7) man pages. For the SELinux related options, see smbd_selinux(8).

Sample Usage :

include samba::server

Parameters:

  • workgroup (Any) (defaults to: 'MYGROUP')
  • server_string (Any) (defaults to: 'Samba Server Version %v')
  • netbios_name (Any) (defaults to: '')
  • interfaces (Any) (defaults to: [])
  • hosts_allow (Any) (defaults to: [])
  • log_file (Any) (defaults to: '/var/log/samba/log.%m')
  • max_log_size (Any) (defaults to: '10000')
  • passdb_backend (Any) (defaults to: 'tdbsam')
  • domain_master (Any) (defaults to: false)
  • domain_logons (Any) (defaults to: false)
  • local_master (Any) (defaults to: undef)
  • security (Any) (defaults to: 'user')
  • map_to_guest (Any) (defaults to: undef)
  • guest_account (Any) (defaults to: undef)
  • os_level (Any) (defaults to: undef)
  • preferred_master (Any) (defaults to: undef)
  • extra_global_options (Any) (defaults to: [])
  • shares (Any) (defaults to: {})
  • selinux_enable_home_dirs (Any) (defaults to: false)
  • selinux_export_all_rw (Any) (defaults to: false)
  • ldap_suffix (Any) (defaults to: undef)
  • ldap_url (Any) (defaults to: undef)
  • ldap_ssl (Any) (defaults to: 'off')
  • ldap_admin_dn (Any) (defaults to: undef)
  • ldap_admin_dn_pwd (Any) (defaults to: undef)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'manifests/server.pp', line 11

class samba::server (
  # Main smb.conf options
  $workgroup                = 'MYGROUP',
  $server_string            = 'Samba Server Version %v',
  $netbios_name             = '',
  $interfaces               = [],
  $hosts_allow              = [],
  $log_file                 = '/var/log/samba/log.%m',
  $max_log_size             = '10000',
  $passdb_backend           = 'tdbsam',
  $domain_master            = false,
  $domain_logons            = false,
  $local_master             = undef,
  $security                 = 'user',
  $map_to_guest             = undef,
  $guest_account            = undef,
  $os_level                 = undef,
  $preferred_master         = undef,
  $extra_global_options     = [],
  $shares                   = {},
  # SELinux options
  $selinux_enable_home_dirs = false,
  $selinux_export_all_rw    = false,
  # LDAP options
  $ldap_suffix              = undef,
  $ldap_url                 = undef,
  $ldap_ssl                 = 'off',
  $ldap_admin_dn            = undef,
  $ldap_admin_dn_pwd        = undef,
) inherits ::samba::params {

  # Main package and service
  package { $::samba::params::package: ensure => installed }
  service { $::samba::params::service:
    ensure    => running,
    enable    => true,
    hasstatus => true,
    subscribe => File[$::samba::params::config_file],
  }

  file { $::samba::params::config_file:
    require => Package[$::samba::params::package],
    content => template('samba/smb.conf.erb'),
  }

  if $ldap_admin_dn_pwd {
    package { 'tdb-tools' : ensure => installed }

    exec { "/usr/bin/smbpasswd -w \"${ldap_admin_dn_pwd}\"":
      unless  => "/usr/bin/tdbdump ${::samba::params::secretstdb} | /bin/grep -e '^data([0-9]\\+) = \"${ldap_admin_dn_pwd}\\\\00\"$'",
      require => [
        File[$::samba::params::config_file],
        Package['tdb-tools'],
      ],
      notify  => Service[$::samba::params::service],
    }
  }

  # SELinux options ($::selinux is a fact, so it's a string, not a boolean)
  if $::selinux == 'true' {
    Selboolean { persistent => true }
    if $selinux_enable_home_dirs {
      selboolean { 'samba_enable_home_dirs': value => 'on' }
    }
    if $selinux_export_all_rw {
      selboolean { 'samba_export_all_rw': value => 'on' }
    }
  }

}