tripleo-heat-templates/extraconfig/all_nodes/swap-partition.j2.yaml
Kevin Carter 5e3719d21e
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 <kecarter@redhat.com>
2020-02-20 17:41:04 -06:00

50 lines
1.4 KiB
YAML

heat_template_version: rocky
description: Template file to add a swap partition to a node.
parameters:
servers:
type: json
swap_partition_label:
type: string
description: Swap partition label
default: 'swap1'
resources:
SwapConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config: |
#!/bin/bash
set -eux
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
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
default: 'swap1'
{% for role in roles %}
{{role.name}}SwapDeployment:
type: OS::Heat::SoftwareDeploymentGroup
properties:
name: {{role.name}}SwapDeployment
config: {get_resource: SwapConfig}
servers: {get_param: [servers, {{role.name}}]}
input_values:
swap_partition_label: {get_param: swap_partition_label}
actions: ["CREATE"]
{% endfor %}