Skip to main content

saltext-bmc

A Salt extension for out-of-band management of bare-metal servers via their BMC (Baseboard Management Controller). Speaks Redfish first and IPMI as a fallback (auto-detected by default), with a uniform interface for:

  • power control (on / off / cycle / reset, graceful or forced)
  • boot-device override (disk, PXE, UEFI HTTP, BIOS setup, CD, USB — one-shot or persistent)
  • inventory (manufacturer, model, serial, UUID, BIOS version, BMC firmware)
  • sensors (temperatures, fans, voltages)
  • a low-level bmc_redfish passthrough for raw GET/POST/PATCH/DELETE against any Redfish endpoint

Primary use case: automated bare-metal provisioning (e.g. UEFI HTTP Boot for ESXi installs) where Salt needs to power-cycle a host and steer its next boot. See PLAN.md for the full design.

Install

pip install saltext.bmc           # Redfish only
pip install 'saltext.bmc[ipmi]'   # adds pyghmi for the IPMI fallback

Requires Python ≥ 3.10 and Salt ≥ 3008.

Quick start

Configure one or more BMC profiles in Pillar:

saltext.bmc:
  profiles:
    bmc-host-01:
      host: 10.0.0.5
      username: root
      password: calvin
      verify_ssl: false
      # backend defaults to 'auto' — probes Redfish, falls back to IPMI.
      # Set to 'redfish' or 'ipmi' explicitly to skip the probe.
      # backend: redfish
    legacy-host:
      host: 10.0.0.7
      username: ADMIN
      password: ADMIN
      backend: ipmi
      port: 623          # IPMI-only override

Execution module:

salt-call --local bmc.power_status     bmc-host-01
salt-call --local bmc.set_boot_device  bmc-host-01 device=http persistent=False
salt-call --local bmc.power_cycle      bmc-host-01
salt-call --local bmc.get_system_info  bmc-host-01
salt-call --local bmc.get_sensor_data  bmc-host-01

# Connection kwargs work without a pillar profile:
salt-call --local bmc.power_status host=10.0.0.5 username=root password=calvin verify_ssl=False

State module:

my-host-boot:
  bmc.boot_device:
    - name: bmc-host-01
    - device: http
    - persistent: false

my-host-power:
  bmc.powered:
    - name: bmc-host-01
    - power: 'on'

Low-level Redfish passthrough (Redfish-only profiles):

salt-call --local bmc_redfish.get   /redfish/v1/ name=bmc-host-01
salt-call --local bmc_redfish.patch /redfish/v1/Systems/1 \
    body='{"AssetTag": "rack-7-slot-3"}' name=bmc-host-01

Resource type

For Salt 3008+ resource-driven workflows, the same operations are exposed as a bmc resource type with per-host targeting:

# Pillar
resources:
  bmc:
    bmc-host-01:
      host: 10.10.10.5
      username: root
      password: calvin
      verify_ssl: false
salt  bmc-host-01              bmc_host.power_status   # by resource ID alone
salt -C 'T@bmc:bmc-host-01'    bmc_host.power_status   # by full SRN (type:id)
salt -C 'T@bmc'                bmc_host.power_cycle    # all bmc resources

What's not here

  • Serial-over-LAN console (sol) — SOL is inherently interactive and is better served by ipmitool sol activate or your BMC's web console. We do not ship a bmc.sol_activate.
  • IPMI-side bmc_redfish.* — the low-level passthrough is Redfish-only by design; it errors immediately if the resolved profile uses backend: ipmi.

License

Apache 2.0

Release files for saltext.bmc 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for saltext.bmc 0.0.1
File Size Uploaded
saltext_bmc-0.0.1.tar.gz 88.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for saltext.bmc 0.0.1
File Interpreter ABI Platform
saltext_bmc-0.0.1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 122.8 kB

Release files / saltext_bmc-0.0.1.tar.gz

Download URL saltext_bmc-0.0.1.tar.gz
Size 88.4 kB
Tags Source
SHA-256 checksum
How to use checksums
610d84a0e55a92349b514e4a6d33214401414239600264cc99c6f96021a8c264
BLAKE2b-256 checksum
How to use checksums
b8f6922b6fd2918c0b29870813867ea1689af09ef66ef140da7b194a1235c249
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 9, 2026.

Transparency log

Release files / saltext_bmc-0.0.1-py2.py3-none-any.whl

Download URL saltext_bmc-0.0.1-py2.py3-none-any.whl
Size 34.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
3fab2aedaf29a548c21b663ef7be32b8eba9e2d905d1363c86eb945c446ae0ac
BLAKE2b-256 checksum
How to use checksums
d58c8f9a30f4a3c3f4f863f67b524ed662070822e390e3ae67995e40cb83f345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page