Skip to main content

Dell iDRAC (Redfish)

v0.2.5

Monitor and operate a Dell iDRAC over its Redfish REST API with curl — system identity and health rollup, the Dell subsystem rollup, storage controllers and drives, power and thermal telemetry, firmware inventory, the System Event Log and Lifecycle Controller log, and the Lifecycle Controller job queue. Plus gated mutators: power control (ComputerSystem.Reset), clear / delete a job, and clear the SEL. Targets an iDRAC by hostname/IP; credentials come from the runner environment. Reads are read-only GETs.

12 allowed by default 2 need approval by default 1 denied by default
Pack ID
dell-idrac
Vendor
emisar
OS
linux
Actions
15
Required binaries. Install these on the host before relying on the pack — an action that calls a missing one fails at run time.
curl

Install

emisar pack install fetches this pack, re-validates it, and verifies its content hash against the --hash below — the exact bytes this page was rendered against, so a tampered copy is rejected — before copying it into the runner's packs dir. The command reloads a running daemon itself; no manual restart.

on the runner host
sudo emisar pack install dell-idrac --hash sha256:77bf347e730d904f624b87a802384354c4a53e605ebecfa324a566fabef12c70

Setup

Every action calls the iDRAC Redfish API at https://{{ args.host }}/redfish via curl on the runner host. The target must be listed exactly in IDRAC_ALLOWED_HOSTS . Auth is HTTP Basic from IDRAC_USER and IDRAC_PASSWORD (sent as an Authorization header over curl stdin, never in argv or the audit log).

Environment

Set these on the runner host, then add each name to execution.inherit_env so the value reaches the action.

  • IDRAC_ALLOWED_HOSTS required

    Comma-separated exact iDRAC hostnames or IPv4 addresses that actions may target. Hostname matching is ASCII case-insensitive; entries do not accept wildcards, CIDRs, URLs, or spaces.

  • IDRAC_USER required

    iDRAC account name. Provision a dedicated least-privilege account: a read-only role covers every read; the job and reset mutators need an Operator/ConfigureComponents role.

  • IDRAC_PASSWORD required

    iDRAC account password. Sent as an HTTP Basic Authorization header piped to curl over stdin, so it never lands in argv, a ps listing, or the audit log.

  • IDRAC_INSECURE

    Set to exactly "true" to skip TLS verification of the iDRAC certificate. Unset (and any other value) verifies — the secure default, since credentials travel over this channel. iDRAC ships a Dell self-signed cert, so either install a CA-signed cert on the iDRAC (preferred) or set this escape hatch explicitly for a self-signed fleet.

Notes

  • Create the account in the iDRAC web UI under iDRAC Settings → Users → Local Users: take a free slot, enable it, and give it the Read Only role for the reads or Operator for the job and reset mutators.
  • IDRAC_ALLOWED_HOSTS , IDRAC_USER , IDRAC_PASSWORD , and any IDRAC_INSECURE override must also be allowlisted in the runner's execution.inherit_env — the action env is scrubbed to PATH/LANG/LC_ALL/TERM by default, so a variable present on the host but not inherited is silently dropped and the call is refused or fails to authenticate.
  • Auth is HTTP Basic on purpose. It consumes no iDRAC session slot, whereas X-Auth-Token sessions draw from the shared web/Redfish session budget (iDRAC9: 8 concurrent, iDRAC8: 6); monitoring tools that open sessions and never close them are the classic cause of a 'maximum number of user sessions reached' lockout of the GUI/admin. Stateless Basic polls avoid that entirely.
  • Redfish API access (health, power/thermal, SEL/LC logs, firmware inventory, job queue, power control) is available at the iDRAC Basic license tier — this pack needs no Enterprise/Datacenter license. Streaming telemetry (SSE) would; plain polling does not.
  • Resource IDs are the stable embedded primaries System.Embedded.1 (system/chassis) and iDRAC.Embedded.1 (manager), unchanged across iDRAC8 and iDRAC9. The power/thermal reads use the universal /Power and /Thermal resources; newer firmware also exposes /PowerSubsystem, /ThermalSubsystem, and /Sensors, reachable via the generic get action.

Verify it works

Runs idrac.system, a low-risk read that confirms the pack can reach its target. Run it on the host once the pack is installed; pack install runs it for you.

on the runner host
sudo emisar pack verify dell-idrac

Install and configure a pack walks through the whole sequence on a host.

Actions 15 total

View on GitHub
  • idrac.clear_job_queue script high High — service-affecting

    Clear the Lifecycle Controller job queue

    Clear the iDRAC job queue — POST /redfish/v1/Managers/iDRAC.Embedded.1/Oem/Dell/DellJobService/Actions/DellJobService.DeleteJobQueue. JID_CLEARALL deletes all scheduled jobs and the pending attribute values attached to them; JID_CLEARALL_FORCE additionally restarts the Lifecycle Controller services — a last resort when the iDRAC/LC is wedged. Use to unstick a queue that is blocking new config or firmware jobs. Inspect the queue with jobs first; this can cancel work that is mid-flight.

    View source on GitHub
  • idrac.clear_sel script high High — service-affecting

    Clear the System Event Log

    Erase the iDRAC System Event Log — POST /redfish/v1/Managers/iDRAC.Embedded.1/LogServices/Sel/Actions/LogService.ClearLog. IRREVERSIBLE: every SEL entry is wiped and cannot be recovered. Pull the log with sel first if you need a record. Routine after addressing the faults a server logged, but it destroys forensic history, so it is gated. (The Lifecycle Controller log is append-only and is intentionally not clearable here.)

    View source on GitHub
  • idrac.delete_job script medium Medium — changes state, easily reversible

    Delete one Lifecycle Controller job

    Delete a single job from the queue by id — DELETE /redfish/v1/Managers/iDRAC.Embedded.1/Jobs/JID_xxxxxxxxxxxx. The surgical alternative to clear_job_queue: remove one stuck or unwanted job (find its JID with jobs) without touching the rest of the queue. Deleting a scheduled job discards its pending change; it does not undo a job that already completed.

    View source on GitHub
  • idrac.firmware script low Low — read-only or trivially reversible

    List installed firmware versions

    List the firmware inventory — GET /redfish/v1/UpdateService/FirmwareInventory?$expand=*($levels=1). Returns one member per component (BIOS, iDRAC, NIC, PERC, PSU, drives, …) with its Version and whether it is Updateable. Members are prefixed Installed- (running), Available- (staged/pending), or Previous- (rollback image). The answer to "what firmware is on this box and is anything pending?".

    View source on GitHub
  • idrac.get script low Low — read-only or trivially reversible

    GET an arbitrary Redfish resource

    Get any Redfish resource by path — a read-only GET under /redfish/v1 that the curated reads do not cover. Give a path like /Chassis/System.Embedded.1/Sensors or /Systems/System.Embedded.1/Memory?$expand=*($levels=1), including a query string ($expand, $skip, $filter). Use it to reach newer subsystems (/PowerSubsystem, /ThermalSubsystem), page a long log (?$skip=50), or read a single job (/Managers/iDRAC.Embedded.1/Jobs/JID_xx…). Read-only — it only ever issues a GET.

    View source on GitHub
  • idrac.health script low Low — read-only or trivially reversible

    Show per-subsystem health rollup

    Show the Dell subsystem health rollup in one call — GET /redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus. Returns a member per subsystem (Processor, Memory, Storage, Fan, PowerSupply, Voltage, Intrusion, …), each with a SubSystem name and its RollupStatus (Ok / Warning / Critical), so one read tells you exactly which subsystem is degraded. The fastest "what is unhealthy on this box?" answer.

    View source on GitHub
  • idrac.jobs script low Low — read-only or trivially reversible

    List Lifecycle Controller jobs

    List the Lifecycle Controller job queue — GET /redfish/v1/Managers/iDRAC.Embedded.1/Jobs?$expand=*($levels=1). Each job is expanded inline with its Id (JID_...), JobState (Scheduled / Running / Completed / Failed), PercentComplete, and Message. The answer to "what config/firmware jobs are queued or running, and how far along?". A queued job shows JobState Scheduled — read PercentComplete for true progress. Read-only.

    View source on GitHub
  • idrac.lclog script low Low — read-only or trivially reversible

    List Lifecycle Controller log entries

    List the Lifecycle Controller log — GET /redfish/v1/Managers/iDRAC.Embedded.1/LogServices/Lclog/Entries. The LC log is the iDRAC's own activity history: configuration changes, firmware updates, job results, and component events, each with Created, Severity, MessageId, and Message. Broader than the SEL (which is hardware faults only). Read-only.

    View source on GitHub
  • idrac.manager script low Low — read-only or trivially reversible

    Show iDRAC manager state and firmware

    Show the iDRAC controller itself — GET /redfish/v1/Managers/iDRAC.Embedded.1. Returns the iDRAC firmware version, model, date/time, and its own Status.Health. Use to confirm the management controller's firmware level and that the iDRAC is healthy, as distinct from the server it manages.

    View source on GitHub
  • idrac.power script low Low — read-only or trivially reversible

    Show power supplies and consumption

    Show power telemetry — GET /redfish/v1/Chassis/System.Embedded.1/Power. Returns each power supply (model, capacity, line input, Status.Health) and their redundancy, the system voltages, and the current/average power consumed in watts. Use to check PSU health/redundancy and draw. (Newer iDRAC firmware also serves /PowerSubsystem; this universal /Power resource works on iDRAC8 and iDRAC9.)

    View source on GitHub
  • idrac.power_control script critical Critical — data loss or irreversible

    Reset / power-control the server

    Change the server's power state via Redfish — POST /redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset with the chosen ResetType. GracefulShutdown and GracefulRestart ask the OS to stop cleanly; ForceOff, ForceRestart, PowerCycle, and Nmi are abrupt and can lose in-flight data. On (power up) and PushPowerButton (toggle) are also available. Check the current state with system (PowerState) first. The exact ResetType set varies by iDRAC firmware — the iDRAC rejects an unsupported value with an error.

    View source on GitHub
  • idrac.sel script low Low — read-only or trivially reversible

    List System Event Log entries

    List the System Event Log — GET /redfish/v1/Managers/iDRAC.Embedded.1/LogServices/Sel/Entries. Each entry has Created, Severity (OK / Warning / Critical), Message, MessageId, and the sensor that raised it — the hardware-fault history (ECC, PSU, thermal, intrusion). Read-only. For a long log, page with the generic get action and ?$skip=N, or filter with ?$filter=Severity eq 'Critical'.

    View source on GitHub
  • idrac.storage script low Low — read-only or trivially reversible

    Show storage controllers and drives

    List the storage subsystem with controllers and drives expanded in one call — GET /redfish/v1/Systems/System.Embedded.1/Storage?$expand=*($levels=1). Returns each controller (e.g. PERC) and its physical drives with capacity, media type, and Status.Health, so you can spot a predicted or failed drive. Read-only.

    View source on GitHub
  • idrac.system script low Low — read-only or trivially reversible

    Show system identity, power state, health

    Show the server's top-line state — GET /redfish/v1/Systems/System.Embedded.1. Returns model, service tag (SKU), BIOS version, PowerState (On/Off), the overall Status.HealthRollup (OK / Warning / Critical, aggregating subordinate subsystems), and the inline ProcessorSummary and MemorySummary health. The starting point for "what is this server and is it healthy?", and the action to verify the pack can reach and authenticate to an iDRAC.

    View source on GitHub
  • idrac.thermal script low Low — read-only or trivially reversible

    Show fans and temperatures

    Show thermal telemetry — GET /redfish/v1/Chassis/System.Embedded.1/Thermal. Returns each temperature sensor (inlet, exhaust, CPU) in Celsius with its thresholds and each fan's RPM and Status.Health, plus fan redundancy. Use to check for a hot inlet, a failed fan, or lost cooling redundancy. (Newer iDRAC firmware also serves /ThermalSubsystem; this universal /Thermal resource works on iDRAC8 and iDRAC9.)

    View source on GitHub