heat_template_version: pike description: Template file to add a swap file to a node. parameters: servers: type: json swap_size_megabytes: type: string description: Amount of swap space to allocate in megabytes default: '4096' swap_path: type: string description: Full path to location of swap file default: '/swap' resources: SwapConfig: type: OS::Heat::SoftwareConfig properties: group: script config: | #!/bin/bash set -eux if [ ! -f $swap_path ]; then dd if=/dev/zero of=$swap_path count=$swap_size_megabytes bs=1M chmod 0600 $swap_path mkswap $swap_path swapon $swap_path else echo "$swap_path already exists" fi echo "$swap_path swap swap defaults 0 0" >> /etc/fstab inputs: - name: swap_size_megabytes description: Amount of swap space to allocate in megabytes default: '4096' - name: swap_path description: Full path to location of swap file default: '/swap' {% for role in roles %} {{role.name}}SwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: [servers, {{role.name}}]} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"] {% endfor %}