heat_template_version: wallaby 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' ControllerSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: ControllerSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, Controller]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] CellControllerSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: CellControllerSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, CellController]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] CellControllerComputeSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: CellControllerComputeSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, CellControllerCompute]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] ComputeSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: ComputeSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, Compute]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] BlockStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: BlockStorageSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, BlockStorage]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] ObjectStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: ObjectStorageSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, ObjectStorage]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] CephStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: CephStorageSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, CephStorage]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] NetworkerSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: NetworkerSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, Networker]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] ControllerSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: ControllerSwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, Controller]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"] ComputeHCISwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: name: ComputeHCISwapDeployment config: {get_resource: SwapConfig} servers: {get_param: [servers, ComputeHCI]} input_values: swap_partition_label: {get_param: swap_partition_label} actions: ["CREATE"]