From 5e3719d21ef69d3b47a547dceb6a08743438c6fb Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Thu, 20 Feb 2020 17:41:04 -0600 Subject: [PATCH] Improve the ability to enable swap This change will imporve the ability to enable a swap partition should one be present. The updated script will now use the label when defined and found, it then will look for a partition in the /etc/fstab file prior to writing the file system entry. This resolves an issue where if this template was executed more than once, a given partition would be written to the /etc/fstab file repeatedly. If a given label is undefined the script will look for swap filesystem types and use the UUID of the given swap filesystem to enable swap functionality. This improvement will ensure hosts that have swap partition already created, but potentially unlabled, are able to be handled correctly. This will work with LVM, Logical, Primary partition types. Change-Id: I60a1f427d4f58ae559c797f37f8230d6eb694e1d Signed-off-by: Kevin Carter --- extraconfig/all_nodes/swap-partition.j2.yaml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/extraconfig/all_nodes/swap-partition.j2.yaml b/extraconfig/all_nodes/swap-partition.j2.yaml index 0f3b161e46..5bca8e7850 100644 --- a/extraconfig/all_nodes/swap-partition.j2.yaml +++ b/extraconfig/all_nodes/swap-partition.j2.yaml @@ -18,14 +18,19 @@ resources: config: | #!/bin/bash set -eux - swap_partition=$(realpath /dev/disk/by-label/$swap_partition_label) - if [ -f "$swap_partition" ]; then - swapon $swap_partition - echo "$swap_partition swap swap defaults 0 0" >> /etc/fstab + if [ -e "/dev/disk/by-label/${swap_partition_label}" ]; then + swap_partition=$(realpath /dev/disk/by-label/${swap_partition_label}) + if ! grep -qe "${swap_partition}" /etc/fstab; then + echo "$swap_partition swap swap defaults 0 0" | tee -a /etc/fstab + fi else - echo "$swap_partition needs to be a valid path" - echo "Check that $swap_partition_label is a valid partition label" + for item in $(lsblk -f --output FSTYPE,UUID | awk '/swap/ {print $2}'); do + if ! grep -qe "${item}" /etc/fstab; then + echo -e "UUID=${item} swap swap defaults 0 0" | tee -a /etc/fstab + fi + done fi + swapon -a inputs: - name: swap_partition_label description: Swap partition label