integration-playbook: Idempotent Swapping
If the playbook is run multiple times or a host already has swap configured, re-adding swap over the existing file will cause untold problems. Also, it will not persist across reboots unless added to fstab. Avoid this by checking if any swap is active. If not create a unique swapfile and format it. Then enable it to persist across reboots. Signed-off-by: Chris Evich <cevich@redhat.com>
This commit is contained in:
parent
b3ceb2a450
commit
b198c57cfb
3 changed files with 47 additions and 7 deletions
42
contrib/test/integration/swap.yml
Normal file
42
contrib/test/integration/swap.yml
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
|
||||
- name: Obtain current state of swap
|
||||
command: swapon --noheadings --show=NAME
|
||||
register: swapon
|
||||
|
||||
- name: Setup swap if none already, to prevent kernel firing off the OOM killer
|
||||
block:
|
||||
|
||||
- name: A unique swapfile path is generated
|
||||
command: mktemp --tmpdir=/root swapfile_XXX
|
||||
register: swapfilepath
|
||||
|
||||
- name: Swap file path is buffered
|
||||
set_fact:
|
||||
swapfilepath: '{{ swapfilepath.stdout | trim }}'
|
||||
|
||||
- name: Set swap file permissions
|
||||
file:
|
||||
path: "{{ swapfilepath }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0600
|
||||
|
||||
- name: Swapfile padded to swapfile_size & timed to help debug any performance problems
|
||||
shell: 'time dd if=/dev/zero of={{ swapfilepath }} bs={{ swapfileGB }}M count=1024'
|
||||
|
||||
- name: Swap file is formatted
|
||||
command: 'mkswap {{ swapfilepath }}'
|
||||
|
||||
- name: Write swap entry in fstab
|
||||
mount:
|
||||
path: none
|
||||
src: "{{ swapfilepath }}"
|
||||
fstype: swap
|
||||
opts: sw
|
||||
state: present
|
||||
|
||||
- name: Mount swap
|
||||
command: "swapon -a"
|
||||
|
||||
when: not (swapon.stdout_lines | length)
|
|
@ -72,13 +72,8 @@
|
|||
async: 600
|
||||
poll: 10
|
||||
|
||||
- name: Setup swap to prevent kernel firing off the OOM killer
|
||||
shell: |
|
||||
truncate -s 8G /root/swap && \
|
||||
export SWAPDEV=$(losetup --show -f /root/swap | head -1) && \
|
||||
mkswap $SWAPDEV && \
|
||||
swapon $SWAPDEV && \
|
||||
swapon --show
|
||||
- name: Check / setup swap
|
||||
include: "swap.yml"
|
||||
|
||||
- name: ensure directories exist as needed
|
||||
file:
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
---
|
||||
|
||||
# When swap setup is necessary, make it this size
|
||||
swapfileGB: 8
|
||||
|
||||
# For results.yml Paths use rsync 'source' conventions
|
||||
artifacts: "/tmp/artifacts" # Base-directory for collection
|
||||
crio_integration_filepath: "{{ artifacts }}/testout.txt"
|
||||
|
|
Loading…
Reference in a new issue