tripleo-heat-templates/extraconfig/all_nodes/swap-partition.j2.yaml

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 %}