puppet/samba/manifests/init.pp

131 lines
3.3 KiB
Puppet

# Install samba server.
#
class samba::server {
package { "samba":
ensure => installed,
}
case $operatingsystem {
openbsd: {
service { "nmbd":
ensure => running,
enable => true,
binary => "/usr/local/libexec/nmbd",
start => "/usr/local/libexec/nmbd -D",
require => File["/etc/samba/smb.conf"],
subscribe => File["/etc/samba/smb.conf"],
}
service { "smbd":
ensure => running,
enable => true,
binary => "/usr/local/libexec/smbd",
start => "/usr/local/libexec/smbd -D",
require => File["/etc/samba/smb.conf"],
subscribe => File["/etc/samba/smb.conf"],
}
}
default: {
service { "smb":
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
require => File["/etc/samba/smb.conf"],
subscribe => File["/etc/samba/smb.conf"],
}
}
}
file { "/etc/samba/smb.conf":
ensure => present,
source => [ "puppet:///files/samba/smb.conf.${fqdn}",
"puppet:///files/samba/smb.conf", ],
mode => 0644,
owner => root,
group => $operatingsystem ? {
openbsd => wheel,
default => root,
},
require => Package["samba"],
}
file { "/etc/samba/lmhosts":
ensure => present,
source => [ "puppet:///files/samba/lmhosts.${fqdn}",
"puppet:///files/samba/lmhosts",
"puppet:///samba/lmhosts", ],
mode => 0644,
owner => root,
group => $operatingsystem ? {
openbsd => wheel,
default => root,
},
require => Package["samba"],
}
}
# Install support scripts for Backup Domain Controller
#
class samba::bdc {
include samba::server
file { "/etc/cron.hourly/sync-netlogon.sh":
ensure => present,
source => "puppet:///samba/sync-netlogon.sh",
mode => 0755,
owner => root,
group => root,
}
}
# Join samba server into domain.
#
# === Global variables
#
# $samba_join_user:
# Username to use when joining domain.
#
# $samba_join_pass:
# Password to use when joining domain.
#
class samba::domainmember {
include samba::server
exec { "net join":
command => "net join -U ${samba_join_user}%\"\${SECRET}\"",
environment => "SECRET=${samba_join_pass}",
path => "/bin:/usr/bin:/sbin:/usr/sbin",
onlyif => "rpcclient localhost -c 'srvinfo' -U root%'' 2>&1 | grep 'NT_STATUS_CANT_ACCESS_DOMAIN_INFO'",
require => Service["smb"],
}
}
# Set LDAP auth password to samba.
#
# === Global variables
#
# $samba_ldap_pass:
# Password to set in samba secrets.
#
class samba::ldap {
include samba::server
exec { "smbpasswd -w":
command => "smbpasswd -w '${SECRET}'",
environment => "SECRET=${samba_ldap_pass}",
path => "/bin:/usr/bin:/sbin:/usr/sbin",
unless => "tdbtool /etc/samba/secrets.tdb keys | fgrep 'SECRETS/LDAP_BIND_PW/'",
require => Package["samba"],
}
}