Menu Close

Chapter 5. Ansible IPMI modules in RHEL

5.1. The rhel_mgmt collection

The Intelligent Platform Management Interface (IPMI) is a specification for a set of standard protocols to communicate with baseboard management controller (BMC) devices. The IPMI modules allow you to enable and support hardware management automation. The IPMI modules are available in:

  • The rhel_mgmt Collection. The package name is ansible-collection-redhat-rhel_mgmt.
  • The RHEL 8 AppStream, as part of the new ansible-collection-redhat-rhel_mgmt package.

The following IPMI modules are available in the rhel_mgmt collection:

  • ipmi_boot: Management of boot device order
  • ipmi_power: Power management for machine

The mandatory parameters used for the IPMI Modules are:

  • ipmi_boot parameters:
Module nameDescription

name

Hostname or ip address of the BMC

password

Password to connect to the BMC

bootdev

Device to be used on next boot

* network

* floppy

* hd

* safe

* optical

* setup

* default

User

Username to connect to the BMC

  • ipmi_power parameters:
Module nameDescription

name

BMC Hostname or IP address

password

Password to connect to the BMC

user

Username to connect to the BMC

State

Check if the machine is on the desired status

* on

* off

* shutdown

* reset

* boot

5.2. Installing the rhel mgmt Collection using the CLI

You can install the rhel_mgmt Collection using the command line.

Prerequisites

  • The ansible-core package is installed.

Procedure

  • Install the collection via RPM package:

    # yum install ansible-collection-redhat-rhel_mgmt

    After the installation is finished, the IPMI modules are available in the redhat.rhel_mgmt Ansible collection.

Additional resources

  • The ansible-playbook man page.

5.3. Example using the ipmi_boot module

The following example shows how to use the ipmi_boot module in a playbook to set a boot device for the next boot. For simplicity, the examples use the same host as the Ansible control host and managed host, thus executing the modules on the same host where the playbook is executed.

Prerequisites

  • The rhel_mgmt collection is installed.
  • The pyghmi library in the python3-pyghmi package is installed in one of the following locations:

    • The host where you execute the playbook.
    • The managed host. If you use localhost as the managed host, install the python3-pyghmi package on the host where you execute the playbook instead.
  • The IPMI BMC that you want to control is accessible via network from the host where you execute the playbook, or the managed host (if not using localhost as the managed host). Note that the host whose BMC is being configured by the module is generally different from the host where the module is executing (the Ansible managed host), as the module contacts the BMC over the network using the IPMI protocol.
  • You have credentials to access BMC with an appropriate level of access.

Procedure

  1. Create a new playbook.yml file with the following content:

    ---
    - name: Sets which boot device will be used on next boot
      hosts: localhost
        tasks:
        - redhat.rhel_mgmt.ipmi_boot:
           name: bmc.host.example.com
             user: admin_user
             password: basics
             bootdev: hd
  2. Execute the playbook against localhost:

    # ansible-playbook playbook.yml

As a result, the output returns the value “success”.

5.4. Example using the ipmi_power module

This example shows how to use the ipmi_boot module in a playbook to check if the system is turned on. For simplicity, the examples use the same host as the Ansible control host and managed host, thus executing the modules on the same host where the playbook is executed.

Prerequisites

  • The rhel_mgmt collection is installed.
  • The pyghmi library in the python3-pyghmi package is installed in one of the following locations:

    • The host where you execute the playbook.
    • The managed host. If you use localhost as the managed host, install the python3-pyghmi package on the host where you execute the playbook instead.
  • The IPMI BMC that you want to control is accessible via network from the host where you execute the playbook, or the managed host (if not using localhost as the managed host). Note that the host whose BMC is being configured by the module is generally different from the host where the module is executing (the Ansible managed host), as the module contacts the BMC over the network using the IPMI protocol.
  • You have credentials to access BMC with an appropriate level of access.

Procedure

  1. Create a new playbook.yml file with the following content:

    ---
    - name: Turn the host on
      hosts: localhost
        tasks:
        - redhat.rhel_mgmt.ipmi_power:
           name: bmc.host.example.com
             user: admin_user
             password: basics
             state: on
  2. Execute the playbook:

    # ansible-playbook playbook.yml

The output returns the value “true”.