Skip to main content

Salt extension for out-of-band server management via Redfish (with IPMI fallback): power, boot-device override, inventory, and sensors.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saltext_bmc-0.0.1.tar.gz (88.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

saltext_bmc-0.0.1-py2.py3-none-any.whl (34.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file saltext_bmc-0.0.1.tar.gz.

File metadata

  • Download URL: saltext_bmc-0.0.1.tar.gz
  • Upload date:
  • Size: 88.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for saltext_bmc-0.0.1.tar.gz
Algorithm Hash digest
SHA256 610d84a0e55a92349b514e4a6d33214401414239600264cc99c6f96021a8c264
MD5 feeefadcbe8415d84ae6d68f748a3bc4
BLAKE2b-256 b8f6922b6fd2918c0b29870813867ea1689af09ef66ef140da7b194a1235c249

See more details on using hashes here.

Provenance

The following attestation bundles were made for saltext_bmc-0.0.1.tar.gz:

Publisher: deploy-package-action.yml on salt-extensions/saltext-bmc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file saltext_bmc-0.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: saltext_bmc-0.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for saltext_bmc-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3fab2aedaf29a548c21b663ef7be32b8eba9e2d905d1363c86eb945c446ae0ac
MD5 de62eae3206211af3a3580fa54cec097
BLAKE2b-256 d58c8f9a30f4a3c3f4f863f67b524ed662070822e390e3ae67995e40cb83f345

See more details on using hashes here.

Provenance

The following attestation bundles were made for saltext_bmc-0.0.1-py2.py3-none-any.whl:

Publisher: deploy-package-action.yml on salt-extensions/saltext-bmc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page