Chapter 4. Ansible IPMI modules in RHEL
Chapter 4. Ansible IPMI modules in RHEL 4.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 name Description name Hostname or ip address of the BMC password Password to connect to the BMC bootdev Device to be used on boot * network * floppy * hd * safe * optical * setup * default User Username to connect to the BMC ipmi_power parameters: Module name Description 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 4.2. 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 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 You have prepared the control node and the managed nodes . You are logged in to the control node as a user who can run playbooks on the managed nodes. The account you use to connect to the managed nodes has sudo permissions on them. The ansible-collection-redhat-rhel_mgmt package is installed. The python3-pyghmi package is installed either on the control node or the managed nodes. The IPMI BMC that you want to control is accessible over network from the control node 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 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 Create a playbook file, for example ~/playbook.yml , with the following content: --- - name: Set boot device to be used on boot hosts: managed-node-01.example.com tasks: - name: Ensure boot device is HD redhat.rhel_mgmt.ipmi_boot: user: <admin_user> password: <password> bootdev: hd Validate the playbook syntax: Note that this command only validates the syntax and does not protect against a wrong but valid configuration. Run the playbook: Verification When you run the playbook, Ansible returns success . Additional resources /usr/share/ansible/collections/ansible_collections/redhat/rhel_mgmt/README.md file 4.3. 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 You have prepared the control node and the managed nodes . You are logged in to the control node as a user who can run playbooks on the managed nodes. The account you use to connect to the managed nodes has sudo permissions on them. The ansible-collection-redhat-rhel_mgmt package is installed. The python3-pyghmi package is installed either on the control node or the managed nodes. The IPMI BMC that you want to control is accessible over network from the control node 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 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 Create a playbook file, for example ~/playbook.yml , with the following content: --- - name: Power management hosts: managed-node-01.example.com tasks: - name: Ensure machine is powered on redhat.rhel_mgmt.ipmi_power: user: <admin_user> password: <password> state: on Validate the playbook syntax: Note that this command only validates the syntax and does not protect against a wrong but valid configuration. Run the playbook: Verification When you run the playbook, Ansible returns true . Additional resources /usr/share/ansible/collections/ansible_collections/redhat/rhel_mgmt/README.md file
--- - name: Set boot device to be used on next boot hosts: managed-node-01.example.com tasks: - name: Ensure boot device is HD redhat.rhel_mgmt.ipmi_boot: user: <admin_user> password: <password> bootdev: hd ansible-playbook --syntax-check ~/playbook.yml ansible-playbook ~/playbook.yml --- - name: Power management hosts: managed-node-01.example.com tasks: - name: Ensure machine is powered on redhat.rhel_mgmt.ipmi_power: user: <admin_user> password: <password> state: on ansible-playbook --syntax-check ~/playbook.yml ansible-playbook ~/playbook.yml