Add an environment to use a swap partition
authorJames Slagle <jslagle@redhat.com>
Sun, 6 Mar 2016 21:02:24 +0000 (16:02 -0500)
committerJames Slagle <jslagle@redhat.com>
Sun, 6 Mar 2016 21:06:18 +0000 (16:06 -0500)
This environment can be used with AllNodesExtraConfig to enable swap on
a device with the given label as specified by the swap_partition_label
parameter.

If Ironic is used to create the swap partition, the partition will have
a label of swap1, so that's a reasonable default for the parameter.

The partition is also written to /etc/fstab as a swap mount so that it
will be enabled on reboot.

Change-Id: I5cd68c13dbfe53eecf6c6ad93151eadc980a902d

extraconfig/all_nodes/swap-partition.yaml [new file with mode: 0644]

diff --git a/extraconfig/all_nodes/swap-partition.yaml b/extraconfig/all_nodes/swap-partition.yaml
new file mode 100644 (file)
index 0000000..89a2adb
--- /dev/null
@@ -0,0 +1,90 @@
+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_partition_label:
+    type: string
+    description: Swap partition label
+    default: 'swap1'
+
+
+resources:
+
+  SwapConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config: |
+        #!/bin/bash
+        set -eux
+        swap_partition=$(realpath /dev/disk/by-label/$swap_partition_label)
+        swapon $swap_partition
+        echo "$swap_partition swap swap defaults 0 0" >> /etc/fstab
+      inputs:
+        - name: swap_partition_label
+          description: Swap partition label
+          default: 'swap1'
+
+  ControllerSwapDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      config: {get_resource: SwapConfig}
+      servers: {get_param: controller_servers}
+      input_values:
+        swap_partition_label: {get_param: swap_partition_label}
+      actions: ["CREATE"]
+
+  ComputeSwapDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      config: {get_resource: SwapConfig}
+      servers: {get_param: compute_servers}
+      input_values:
+        swap_partition_label: {get_param: swap_partition_label}
+      actions: ["CREATE"]
+
+  BlockStorageSwapDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      config: {get_resource: SwapConfig}
+      servers: {get_param: blockstorage_servers}
+      input_values:
+        swap_partition_label: {get_param: swap_partition_label}
+      actions: ["CREATE"]
+
+  ObjectStorageSwapDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      config: {get_resource: SwapConfig}
+      servers: {get_param: objectstorage_servers}
+      input_values:
+        swap_partition_label: {get_param: swap_partition_label}
+      actions: ["CREATE"]
+
+  CephStorageSwapDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      config: {get_resource: SwapConfig}
+      servers: {get_param: cephstorage_servers}
+      input_values:
+        swap_partition_label: {get_param: swap_partition_label}
+      actions: ["CREATE"]
+
+outputs:
+  config_identifier:
+    value: none