Convert AllNodesExtraConfig to support composable roles
[apex-tripleo-heat-templates.git] / extraconfig / all_nodes / swap.j2.yaml
diff --git a/extraconfig/all_nodes/swap.j2.yaml b/extraconfig/all_nodes/swap.j2.yaml
new file mode 100644 (file)
index 0000000..9714908
--- /dev/null
@@ -0,0 +1,58 @@
+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:
+  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 %}