heat_template_version: 2014-10-16 description: > Extra config to add swap space to nodes. # Parameters passed from the parent template - note if you maintain # out-of-tree templates they may require additional parameters if the # in-tree templates add a new role. parameters: controller_servers: type: json compute_servers: type: json blockstorage_servers: type: json objectstorage_servers: type: json cephstorage_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' ControllerSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: controller_servers} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"] ComputeSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: compute_servers} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"] BlockStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: blockstorage_servers} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"] ObjectStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: objectstorage_servers} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"] CephStorageSwapDeployment: type: OS::Heat::SoftwareDeploymentGroup properties: config: {get_resource: SwapConfig} servers: {get_param: cephstorage_servers} input_values: swap_size_megabytes: {get_param: swap_size_megabytes} swap_path: {get_param: swap_path} actions: ["CREATE"]