Add an environment to use a swap partition

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
This commit is contained in:
James Slagle 2016-03-06 16:02:24 -05:00
parent 00e47eaf5b
commit 94f580370d
1 changed files with 90 additions and 0 deletions

View File

@ -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