Set sysctl kernel parameters - Ansible module sysctl
How to automate the setting or verification of the Linux sysctl kernel parameter “vm.swappiness” to 5 with Ansible.


How to set the sysctl kernel parameters with Ansible?
I’m going to show you a live demo and some simple Ansible code. I’m Luca Berton and welcome to today’s episode of Ansible Pilot.
Ansible set sysctl kernel parameters
- ansible.posix.sysctl
- Manage entries in sysctl.conf
Today we’re talking about the Ansible module sysctl.
The full name is ansible.posix.sysctl
, which means that is part of the collection of modules “ansible.posix” to interact with POSIX platforms.
The purpose of the module is to manage entries in the sysctl.conf
file.
Parameters
- name string (key) - Parameter name
- value string - Parameter value
- reload boolean - yes/no
- state string - present/absent
- sysctl_file string - “/etc/sysctl.conf”
- sysctl_set string - no/yes - sysctl -w
- ignoreerrors boolean - no/yes
Let me summarize the parameters of sysctl module. The only required is “name”, where you specify the parameter name to access or edit. The parameter “value” sets the value of the sysctl parameter. The parameter “reload”, default to yes, reload the configuration file if any changes occur. The parameter “state” sets the presence or absence of the parameter in the sysctl file. The parameter “sysctl_file” allows specifying the configuration file for sysctl, default to “/etc/sysctl.conf”. The parameter “sysctl_set” allows you to configure a parameter permanently, that survives after reboot. The parameter “ignoreerrors” allow you to ignore errors about unknown keys, default to “no”.
Links
https://docs.ansible.com/ansible/latest/collections/ansible/posix/sysctl_module.html
The Best Resources For Ansible
Video Course
Printed Book
eBooks
- Ansible by Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
- Ansible For Windows By Examples: 50+ Automation Examples For Windows System Administrator And DevOps
- Ansible For Linux by Examples: 100+ Automation Examples For Linux System Administrator and DevOps
- Ansible Linux Filesystem By Examples: 40+ Automation Examples on Linux File and Directory Operation for Modern IT Infrastructure
- Ansible For Containers and Kubernetes By Examples: 20+ Automation Examples To Automate Containers, Kubernetes and OpenShift
- Ansible For Security by Examples: 100+ Automation Examples to Automate Security and Verify Compliance for IT Modern Infrastructure
- Ansible Tips and Tricks: 10+ Ansible Examples to Save Time and Automate More Tasks
- Ansible Linux Users & Groups By Examples: 20+ Automation Examples on Linux Users and Groups Operation for Modern IT Infrastructure
- Ansible For PostgreSQL by Examples: 10+ Examples To Automate Your PostgreSQL database
- Ansible For Amazon Web Services AWS By Examples: 10+ Examples To Automate Your AWS Modern Infrastructure
demo
Ansible set sysctl kernel parameters.
code
---
- name: sysctl module demo
hosts: all
become: true
vars:
sysctl_name: "vm.swappiness"
sysctl_value: "5"
tasks:
- name: set sysctl
ansible.posix.sysctl:
name: "{{ sysctl_name }}"
value: "{{ sysctl_value }}"
state: present
sysctl_set: true
reload: true
execution
$ ansible-playbook -i virtualmachines/demo/inventory sysctl/sysctl.yml
PLAY [sysctl module demo] *************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [ansible.posix.sysctl] ***********************************************************************
changed: [demo.example.com]
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
idempotency
$ ansible-playbook -i virtualmachines/demo/inventory sysctl/sysctl.yml
PLAY [sysctl module demo] *************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [ansible.posix.sysctl] ***********************************************************************
ok: [demo.example.com]
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
before execution
$ ssh [email protected]
Last login: Fri Jan 7 07:26:29 2022 from 192.168.0.102
[[email protected] ~]$ sudo su
[[email protected] devops]# sysctl -a | less
[[email protected] devops]# sysctl vm.swappiness
vm.swappiness = 30
[[email protected] devops]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv6.conf.all.disable_ipv6=1
[[email protected] devops]#
after execution
$ ssh [email protected]
Last login: Tue Jan 11 17:41:18 2022 from 192.168.0.102
[[email protected] ~]$ sudo su
[[email protected] devops]# sysctl vm.swappiness
vm.swappiness = 5
[[email protected] devops]# reboot
Connection to demo.example.com closed by remote host.
Connection to demo.example.com closed.
ansible-pilot $ ssh [email protected]
Last login: Tue Jan 11 17:41:44 2022 from 192.168.0.102
[[email protected] ~]$ sudo su
[[email protected] devops]# sysctl vm.swappiness
vm.swappiness = 5
[[email protected] devops]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv6.conf.all.disable_ipv6=1
vm.swappiness=5
[[email protected] devops]# uname -a
Linux demo.example.com 4.18.0-348.el8.x86_64 #1 SMP Mon Oct 4 12:17:22 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] devops]#
Recap
Now you know how to set or verify sysctl kernel parameters with Ansible. Subscribe to the YouTube channel, Medium, Website, Twitter, and Substack to not miss the next episode of the Ansible Pilot.
Academy
Learn the Ansible automation technology with some real-life examples in my
My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
Donate
Want to keep this project going? Please donate