Skip to content

deric/puppet-sysctl_conf

Repository files navigation

Puppet sysctl_conf

Puppet Forge Test Puppet Forge Downloads

Configure Linux kernel parameters at runtime via Puppet's Hiera based sysctl.conf management.

Description

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

Setup

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

Merge behavior

Cofigure merge behavior suitable for you needs:

lookup_options:
  sysctl_conf::values:
    merge: deep

Usage

  • 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'

Documentation

Generate documentation:

$ rake strings:generate

in markdown:

$ puppet strings generate --format markdown --out sysctl_conf.md