Skip to content

Hardware Raid

Basic RAID Operation

The RAID plugin provides automated hardware RAID configuration for physical machines.

Operational Stages

The RAID plugin provides the following stages:

  • raid-inventory - Collects inventory of the RAID subsystem
  • raid-enable-encryption - Configures controller-level encryption
  • raid-configure - Creates and configures volumes on the RAID system
  • raid-reset - Clears skip parameters to allow reconfiguration
  • raid-baseline - Captures current configuration as a baseline
  • raid-tools-install - Ensures appropriate RAID tools are installed

Protection Against Accidental Reconfiguration

Once RAID is configured, the system sets toggle parameters to prevent accidental reconfiguration:

  • raid-skip-config - Prevents volume reconfiguration after initial setup
  • raid-skip-encryption - Prevents encryption changes after initial setup

To reconfigure RAID, either clear these parameters manually or use the raid-reset stage.

Typical Workflow

  1. Add machines to a workflow containing RAID stages (e.g., universal-hardware)
  2. Set the raid-target-config parameter with desired volume specifications
  3. Execute the workflow - machines will configure RAID automatically
  4. Skip flags are set automatically to protect the configuration
  5. Use raid-reset stage if reconfiguration is needed

Customizing RAID Workflow Order

Overview

The RAID content pack uses flexiflow to allow help operators customize the order and execution of RAID configuration tasks. This is useful in scenarios where you need virtual disks to be in place before encryption occurs, or when you need to adjust the standard workflow to meet specific hardware or organizational requirements.

Background

By default, the universal-hardware and universal-hardware-raid workflows execute RAID operations in this order:

  1. raid-enable-encryption stage
  2. raid-configure stage

Each of these stages is controlled by flexiflow parameters that define which tasks are executed and in what order.

Flexiflow Control Parameters

The RAID workflow behavior is controlled by two key parameters:

raid-enable-encryption-tasks

Default value:

JSON
[
  "bootenv:sledgehammer",
  "raid-enable-encryption"
]

This parameter controls what happens during the raid-enable-encryption stage. By default, it boots into sledgehammer and enables encryption at the controller level.

raid-configure-tasks

Default value:

JSON
[
  "raid-configure"
]

This parameter controls what happens during the raid-configure stage. By default, it runs the raid-configure task to create virtual disks.

Common Customization: Swapping RAID Configuration and Encryption Order

Problem

Some implementations require virtual disks to be configured before controller-level encryption is enabled. This is common when:

  • Hardware controllers require volumes to exist before encryption setup
  • Organizational security policies dictate a specific ordering
  • Troubleshooting or debugging requires a different sequence

Solution

You can swap the execution order by redefining the two flexiflow parameters. This can be done in a global profile, hardware-specific profile, or directly on a machine.

Step 1: Define raid-configure-tasks to include both tasks in the desired order:

JSON
[
  "bootenv:sledgehammer",
  "raid-configure",
  "raid-enable-encryption"
]

Step 2: Define raid-enable-encryption-tasks to be empty or to skip:

JSON
[]

Implementation Example

Using the DRP CLI to set these parameters on a global profile:

Bash
drpcli profiles set global param raid-configure-tasks to '[
  "bootenv:sledgehammer",
  "raid-configure",
  "raid-enable-encryption"
]'

drpcli profiles set global param raid-enable-encryption-tasks to '[]'

Additional Flexiflow Customizations

Running Only Configuration (Skip Encryption)

To configure RAID volumes without encryption:

JSON
{
  "raid-configure-tasks": [
    "raid-configure"
  ],
  "raid-skip-encryption": true
}

Running Only Encryption (Skip Configuration)

To enable encryption without reconfiguring existing volumes:

JSON
{
  "raid-enable-encryption-tasks": [
    "bootenv:sledgehammer",
    "raid-enable-encryption"
  ],
  "raid-skip-config": true
}

Adding Custom Tasks

You can inject custom tasks into either stage:

JSON
{
  "raid-configure-tasks": [
    "my-custom-pre-raid-task",
    "raid-configure",
    "my-custom-post-raid-task"
  ]
}

Understanding Skip Parameters

The flexiflow system works in conjunction with two boolean parameters that prevent accidental reconfiguration:

raid-skip-config

  • Default: false
  • Purpose: When true, the raid-configure task will skip execution even if called
  • Use case: Prevents reconfiguration of existing RAID volumes once they're set up
  • Reset: The raid-reset stage clears this flag to allow reconfiguration

raid-skip-encryption

  • Default: false
  • Purpose: When true, the raid-enable-encryption task will skip execution even if called
  • Use case: Prevents re-encryption or encryption changes once configured
  • Reset: The raid-reset stage clears this flag to allow reconfiguration

Important: These skip parameters control task behavior within the tasks themselves. The tasks still run, but they exit early when the skip flag is set. This is different from removing tasks from the flexiflow parameter arrays, which prevents the tasks from being invoked at all.