67 lines
1.6 KiB
Puppet
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",
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|