phpservermon/puphpet/puppet/modules/sysctl/manifests/init.pp

67 lines
1.6 KiB
Puppet

# Define: sysctl
#
# Manage sysctl variable values.
#
# Parameters:
# $value:
# The value for the sysctl parameter. Mandatory, unless $ensure is 'absent'.
# $prefix:
# Optional prefix for the sysctl.d file to be created. Default: none.
# $ensure:
# Whether the variable's value should be 'present' or 'absent'.
# Defaults to 'present'.
#
# Sample Usage :
# sysctl { 'net.ipv6.bindv6only': value => '1' }
#
define sysctl (
$value = undef,
$prefix = undef,
$comment = undef,
$ensure = undef,
) {
include sysctl::base
# If we have a prefix, then add the dash to it
if $prefix {
$sysctl_d_file = "${prefix}-${title}.conf"
} else {
$sysctl_d_file = "${title}.conf"
}
# The permanent change
file { "/etc/sysctl.d/${sysctl_d_file}":
ensure => $ensure,
owner => 'root',
group => 'root',
mode => '0644',
content => template("${module_name}/sysctl.d-file.erb"),
notify => [
Exec["sysctl-${title}"],
Exec["update-sysctl.conf-${title}"],
],
}
if $ensure != 'absent' {
# The immediate change + re-check on each run "just in case"
exec { "sysctl-${title}":
command => "/sbin/sysctl -p /etc/sysctl.d/${sysctl_d_file}",
refreshonly => true,
require => File["/etc/sysctl.d/${sysctl_d_file}"],
}
# For the few original values from the main file
exec { "update-sysctl.conf-${title}":
command => "sed -i -e 's/^${title} *=.*/${title} = ${value}/' /etc/sysctl.conf",
path => [ '/usr/sbin', '/sbin', '/usr/bin', '/bin' ],
refreshonly => true,
onlyif => "grep -E '^${title} *=' /etc/sysctl.conf",
}
}
}