kamaln7 / ansible-swapfile Goto Github PK
View Code? Open in Web Editor NEWA swapfile role for Ansible
Home Page: https://galaxy.ansible.com/list#/roles/1262
License: MIT License
A swapfile role for Ansible
Home Page: https://galaxy.ansible.com/list#/roles/1262
License: MIT License
Hi!
I see you've set version 0.4 in meta/main.yml - could I trouble you to create a git tag and push that tag to github?
Should be as simple as 'git tag 0.4' and then 'git push --tags'. I hope :)
Thanks!
Could semantic versioning be used?
Repo link to Ansible Galaxy Role https://galaxy.ansible.com/detail#/role/1262 is a dead link. As in it doesn't load anything at the moment.
I just set up swap using the default which should be 512MB
---
swapfile_location: /swapfile
swapfile_size: 512MB
swapfile_swappiness: False
swapfile_vfs_cache_pressure: False
swapfile_use_dd: False
But when I check my Digital Ocean Ubuntu 17.4. 64 bits droplet I see 488 kilobits:
root@larastudio:~# swapon -s
Filename Type Size Used Priority
/swapfile file 499996 0 -1
And when I run ls -lh /swapfile
I get less than 512MB or 489:
root@larastudio:~# ls -lh /swapfile
-rw------- 1 root root 489M Jun 14 09:36 /swapfile
Any ideas why?
It seems like this role is tearing down and setting up the swapfile every time I run my playbook. I am pretty sure that it left the swapfile alone if it was already appropriate in the last version. Is it possible to fix the check as to whether it needs to do anything or not?
Hi
Thanks for a great ansible role :)
I was wondering if you'd consider changing the behaviour of the swappiness / cache pressure?
I think the most normal use of Ansible is on servers rather than on desktops - and in that case the default swappiness/cache pressure values are probably most appropriate.
I've come up with a few options/ideas here:
Split the function of configuring swappiness and other values into a new and separate role like kamaln7.swapparams or something similar.
If no variable is set, then no change is made - and the system keeps the OS defaults.
This way if someone includes a different role that also manages the values, there'll be no conflict. This is likely fiddly to do at an Ansible level, since it might have to inspect the existing /proc values
If you default the values to the standard linux values of 60/100 it'd at least mean no unexpected changes in most cases.
Just clearly mark that the values will change in an example somewhere :) This is probably easiest!
Thanks again!
Oskar
swapfile_size: 1024MB
@kamaln7 I added become: true and become_method: sudo to these actions for my use case. Any inputs for making it generic? Will be happy to submit a PR.
Either a bug or a warning, {{ swapfile_size }} having the units in the example doesn't work if you fall-back to dd, as the corresponding "count" parameter for dd should just be an integer. If you give it units, it will obediently convert them back to bytes first.
Worked example with
swapfile_size=512MB
swapfile_use_dd=False
--
fallocate -l {{ swapfile_size }} {{ swapfile_location }} creates={{ swapfile_location }}
will create a 512MB swapfile, but
swapfile_size=512MB
swapfile_use_dd=True
--
dd if=/dev/zero of={{ swapfile_location }} bs=1M count={{ swapfile_size }} creates={{ swapfile_location }}
will create a 512000000MB or 512 terabyte swap file, which for my purposes is a little excessive.
On an ext3 filesystem, fallocate fails with:
stderr: fallocate: /swapfile: fallocate failed: Operation not supported
from the man page:
As of the Linux Kernel v2.6.31, the fallocate system call is supported
by the btrfs, ext4, ocfs2, and xfs filesystems.
...either an error message when the filesystem is unsupported or alternate allocation type would be appreciated.
A more reliable alternative is to use dd instead of fallocate:
sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288
sudo chmod 600 /mnt/512MiB.swap
see: https://help.ubuntu.com/community/SwapFaq#How_do_I_add_more_swap.3F
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.