Configure Linux kernel parameters at runtime via Puppet's Hiera based sysctl.conf
management.
By default for each key (e.g. net.ipv4.ip_forward
) creates a corresponding configuration file (e.g. /etc/sysctl.d/net.ipv4.ip_forward.conf
) with given value (net.ipv4.ip_forward = 1
). sysctl
configuration is applied immediately.
sysctl_conf::values:
net.ipv4.ip_forward:
value: 1
Either include sysctl_conf
directly in your node's definition:
include sysctl_conf
or via Hiera call, e.g.:
lookup('classes', {merge => unique}).include
then make sure to include sysctl_conf
in classes
definition:
classes:
- sysctl_conf
Cofigure merge behavior suitable for you needs:
lookup_options:
sysctl_conf::values:
merge: deep
- set simple value:
sysctl_conf::values:
vm.overcommit_memory:
value: 1
- ignore non-activated configuration option
sysctl_conf::values:
"net.ipv6.conf.%{networking.primary}.disable_ipv6":
value: 1
silent: true
- delete entry
sysctl_conf::values:
kernel.keys.root_maxkeys:
ensure: absent
- don't persist configuration on disk
sysctl_conf::values:
net.ipv6.conf.all.disable_ipv6:
value: 1
persist: false
- add comment
sysctl_conf::values:
vm.swappiness:
value: 0
comment: 'disable swap'
- don't apply changes with
sysctl
command (will be applied upon next reboot)
sysctl_conf::values:
kernel.sem:
value: '250 32000 256 256'
apply: false
- custom configuration file
net.ipv4.ip_forward:
kernel.sem:
value: 1
target: '/etc/sysctl.d/forwarding.conf'
Generate documentation:
$ rake strings:generate
in markdown:
$ puppet strings generate --format markdown --out sysctl_conf.md