Giter Club home page Giter Club logo

ansible-swapfile's Introduction

This repo is no longer maintained. You can use https://github.com/Oefenweb/ansible-swapfile or any of the other forks—people have done great work there 🙂


ansible-swapfile

This role configures a swapfile (/swapfile) with the (default) size of 512MB.

Dependencies

None.

Variables

  • swapfile_use_dd [default: False]: if set to False, fallocate is used to create the swapfile, otherwise, dd is used. You may need to set this to True if your filesystem does not support fallocate -- see Issue #3.

  • swapfile_size [default: 512MB]: the size of the swapfile to create in the format that fallocate expects:

    The length and offset arguments may be followed by binary (2^N) suffixes KiB, MiB, GiB, TiB, PiB and EiB (the "iB" is optional, e.g. "K" has the same meaning as "KiB") or decimal (10^N) suffixes KB, MB, GB, PB and EB.

    If swapfile_use_dd is set to True, swapfile_size must be set to the amount of megabytes to write, e.g. 512.

  • swapfile_location [default: /swapfile]: the location of where the swapfile will be created

Optional

The following variables are set to False by default and will not have any effect on your hosts. Setting them to any value other than False will update your hosts' sysctl.conf file.

  • swapfile_swappiness [default: False]: the swappiness percentage (vm.swappiness) -- the lower it is, the less your system swaps memory pages

  • swapfile_vfs_cache_pressure [default: False]: "this percentage value controls the tendency of the kernel to reclaim the memory which is used for caching of directory and inode objects."

Usage

- hosts: all
  roles:
    - kamaln7.swapfile

or:

- hosts: all
  roles:
    - { role: kamaln7.swapfile, swapfile_size: 1GB, swapfile_swappiness: 10, swapfile_location: /mnt/swapfile }

You can also set the variables described above in group_vars or host_vars (see defaults/main.yml).

License

The MIT License (MIT)

Copyright (c) 2014 Kamal Nasser [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

ansible-swapfile's People

Contributors

kamaln7 avatar rosshinkley avatar vesse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ansible-swapfile's Issues

Despite Default Role 489M Swap size shown

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?

Falling back to dd

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.

fallocate not available on all filesystems

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

No longer idempotent?

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?

Defaults for swapfile_swappiness and swapfile_vfs_cache_pressure

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 Roles

Split the function of configuring swappiness and other values into a new and separate role like kamaln7.swapparams or something similar.

Default to keeping existing config

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

Use the Linux defaults

If you default the values to the standard linux values of 60/100 it'd at least mean no unexpected changes in most cases.

Document

Just clearly mark that the values will change in an example somewhere :) This is probably easiest!

Thanks again!

Oskar

Would you mind tagging version 0.4?

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!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.