142 lines
3.4 KiB
Puppet
142 lines
3.4 KiB
Puppet
# Custom default settings.
|
|
#
|
|
class custom {
|
|
|
|
file { "/srv":
|
|
ensure => directory,
|
|
mode => "0755",
|
|
owner => "root",
|
|
group => $::operatingsystem ? {
|
|
OpenBSD => wheel,
|
|
default => root,
|
|
},
|
|
}
|
|
|
|
if $kernel == OpenBSD {
|
|
Service {
|
|
provider => openbsd,
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Extended version of default File type.
|
|
#
|
|
# === Parameters:
|
|
#
|
|
# $ensure:
|
|
# See $ensure from File type.
|
|
# $group:
|
|
# See $group from File type.
|
|
# $mode:
|
|
# See $mode from File type.
|
|
# $owner:
|
|
# See $owner from File type.
|
|
# $seltype:
|
|
# See $seltype from File type.
|
|
# $source:
|
|
# See $source from File type. This define will also accept http,
|
|
# https and ftp urls.
|
|
#
|
|
# === Sample usage:
|
|
#
|
|
# custom::file { "/usr/src/puppet.tar.gz":
|
|
# ensure => present,
|
|
# source => "http://puppetlabs.com/downloads/puppet/puppet-2.6.2.tar.gz",
|
|
# }
|
|
#
|
|
define custom::file($ensure, $source, $group="NONE", $mode="NONE", $owner="NONE", $seltype="NONE") {
|
|
|
|
$test = regsubst($source, '^([^:]+)://.+$', '\1')
|
|
if $test == $source {
|
|
$method = "file"
|
|
$path = $source
|
|
} else {
|
|
$method = $test
|
|
}
|
|
|
|
case $method {
|
|
"ftp","http","https": {
|
|
$fetch_cmd = "wget -q -O '${name}' '${source}'"
|
|
$diff_cmd = "wget -N --spider '${source}' 2>&1 | fgrep 'Server file no newer than local file'"
|
|
}
|
|
default: { }
|
|
}
|
|
|
|
case $method {
|
|
"file": {}
|
|
"puppet": {}
|
|
default: {
|
|
exec { "fetch-file-${source}":
|
|
environment => $http_proxy ? {
|
|
"" => undef,
|
|
default => "http_proxy=${http_proxy}",
|
|
},
|
|
path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin",
|
|
cwd => regsubst($name, '(.*)/[^/]+$', '\1'),
|
|
command => $fetch_cmd,
|
|
unless => $diff_cmd,
|
|
before => File[$name],
|
|
}
|
|
}
|
|
}
|
|
|
|
file { $name:
|
|
ensure => $ensure,
|
|
source => $method ? {
|
|
"file" => $path,
|
|
"puppet" => $source,
|
|
default => undef,
|
|
},
|
|
mode => $mode ? {
|
|
"NONE" => undef,
|
|
default => $mode,
|
|
},
|
|
owner => $owner ? {
|
|
"NONE" => undef,
|
|
default => $owner,
|
|
},
|
|
group => $group ? {
|
|
"NONE" => undef,
|
|
default => $group,
|
|
},
|
|
seltype => $seltype ? {
|
|
"NONE" => undef,
|
|
default => $seltype,
|
|
},
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Set root password
|
|
#
|
|
# === Global variables
|
|
#
|
|
# $root_password:
|
|
# Root password hash to set.
|
|
#
|
|
class custom::rootpassword {
|
|
|
|
if ! $root_password {
|
|
fail("Root password hash not defined.")
|
|
}
|
|
|
|
case $::operatingsystem {
|
|
openbsd: {
|
|
exec { "usermod -p \${SECRET} root":
|
|
environment => "SECRET=${root_password}",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
unless => 'test "`sed -n \'s/^root:\([a-zA-Z0-9\.\$]*\):.*/\1/p\' /etc/master.passwd`" = "${SECRET}"',
|
|
}
|
|
}
|
|
default: {
|
|
user { "root":
|
|
ensure => present,
|
|
password => $root_password,
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|