Newer
Older
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
# Example of how to set an textline
# base::textline { "kernel.sysreq = 0": ensure => "/etc/sysctl.conf" }
#
# Example of how to ensure there is no textline
# base::textline { "kernel.sysreq = 0":
# file => "/etc/sysctl.conf",
# ensure => absent
# }
#
# If you are using any special characters in line, you will want to specify a
# escaped version so the existance of the line can be properly determined:
# base::textline { "something=*":
# ensure => "/etc/somefile",
# escaped_name => "something=\*"
# }
define base::textline($ensure, $file="/tmp/nothing", $escaped_name="BASIC_REGEX") {
$fn = $ensure ? {
absent => $file,
default => $ensure
}
$selector_pattern = $escaped_name ? {
BASIC_REGEX => "^${name}$",
default => $escaped_name
}
case $ensure {
absent: {
exec { "rm-txt-${fn}-${name}":
command => "sed -i -e '/${selector_pattern}/d' ${fn}",
onlyif => "grep '^[^#]' ${fn} | grep ${selector_pattern}"
}
}
default: {
$line = $name
exec { "add-txt-${fn}-${name}":
command => "echo '${line}' >> ${fn}",
unless => "grep '${selector_pattern}' ${fn}"
}
exec { "fix-txt-${fn}-${name}":
command => "sed -i -e '/${selector_pattern}/d' ${fn}; echo '${line}' >> ${fn}",
unless => "grep '${selector_pattern}' ${fn}",
require => Exec["add-txt-${fn}-${name}"]
}
}
}
}