If we maintain a Linux machine with a low memory capacity while we are required to run an application with high memory consumption, enabling swap memory is an option. Ansible can be utilized as a helper tool to automate the creation of swap memory. A swap file can be allocated in the available storage of the machine. The swap file then can be assigned as a swap memory.
Firstly, we should prepare the inventory file. The following snippet is an example, you must provide your own configuration.
[server]
192.168.1.2
[server:vars]
ansible_user=root
ansible_ssh_private_key_file=~/.ssh/id_rsa
Secondly, we need to prepare the task file that contains not only the tasks but also some variables and connection information. For instance, we set /swapfile
as the name of our swap file. We also set the swap memory size to 2GB and the swappiness level to 60.
- hosts: server
become: true
vars:
swap_vars:
size: 2G
swappiness: 60
For simplicity, we only check the existence of /swapfile
for continuing the swap memory creation. The steps are as follows:
- Verify that
/swapfile
doesn't exist - Fail the process if
/swapfile
exists - Allocate
/swapfile
as a swap file - Change the permission of
/swapfile
into 600 - Create a swap area on the swap file
- Activate the swap file as a swap memory
- Make the activation permanent
- Set the swappiness level of the swap memory
- Make the swappiness level permanent
tasks:
- name: Check whether "/swapfile" exists
register: idCheckSwap
stat:
path: /swapfile
- name: Fail it if "/swapfile" exists
fail:
msg: Swap file exists
when: idCheckSwap.stat.exists == true
- name: Allocate the swap file
shell: fallocate -l {{ swap_vars.size }} /swapfile
- name: Change permission of the swap file
file:
path: /swapfile
mode: 600
- name: Create a swap area on the swap file
shell: mkswap /swapfile
- name: Activate the swap file as a swap memory
shell: swapon /swapfile
- name: Append configuration in /etc/fstab
shell: echo "\n/swapfile swap swap defaults 0 0\n" >> /etc/fstab
- name: Set swappiness level
shell: sysctl vm.swappiness={{ swap_vars.swappiness }}
- name: Append configuration in /etc/sysctl.conf
shell: echo "\nvm.swappiness={{ swap_vars.swappiness }}\n" >> /etc/sysctl.conf
Comments
Post a Comment