-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathinit.pp
72 lines (66 loc) · 1.81 KB
/
init.pp
1
2
3
4
5
6
7
8
9
10
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
# Constructs a sudoers file based on configured aliases, defaults, and user
# specifications.
#
# @param user_specifications
# A hash of sudo::user_specification resources that can be set in hiera
# Example:
# ---
# sudo::user_specifications:
# simp_su:
# user_list: ['simp']
# cmnd: ['/bin/su']
# users_yum_update:
# user_list:
# - '%users'
# cmnd:
# - 'yum update'
# test_resource:
# user_list: ['%group']
# cmnd: ['w']
# runas: root
# passwd: true
#
# @param include_dirs an array of paths to include in the sudoers file
#
# @param package_ensure The ensure status of packages to be managed
#
# @author https://github.com/simp/pupmod-simp-sudo/graphs/contributors
#
class sudo (
Hash $user_specifications = {},
Hash $default_entries = {},
Hash $aliases = {},
String $package_ensure = simplib::lookup('simp_options::package_ensure', { 'default_value' => 'installed' }),
Array[Stdlib::Absolutepath] $include_dirs = [],
) {
package { 'sudo':
ensure => $package_ensure
}
concat { '/etc/sudoers':
owner => 'root',
group => 'root',
mode => '0440',
validate_cmd => '/usr/sbin/visudo -q -c -f %',
require => Package['sudo']
}
$user_specifications.each |$spec, $options| {
sudo::user_specification { $spec:
* => $options,
}
}
$default_entries.each |$key, $value| {
sudo::default_entry { $key:
* => $value,
}
}
$aliases.each |$key, $value| {
sudo::alias { $key:
* => $value,
}
}
$include_dirs.each | $include_dir | {
sudo::include_dir { $include_dir:
include_dir => $include_dir,
}
}
}