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_redfishpassthrough 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 byipmitool sol activateor your BMC's web console. We do not ship abmc.sol_activate. - IPMI-side
bmc_redfish.*— the low-level passthrough is Redfish-only by design; it errors immediately if the resolved profile usesbackend: 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)
| File | Size | Uploaded | |
|---|---|---|---|
| saltext_bmc-0.0.1.tar.gz | 88.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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