Chapter 5. The Redfish modules in RHEL The Redfish modules for remote management of devices are now part of the redhat.rhel_mgmt Ansible collection. With the Redfish modules, you can easily use management automation on bare-metal servers and platform hardware by getting information about the servers or control them through an Out-Of-Band (OOB) controller, using the standard HTTPS transport and JSON format. 5.1. The Redfish modules The redhat.rhel_mgmt Ansible collection provides the Redfish modules to support hardware management in Ansible over Redfish. The redhat.rhel_mgmt collection is available in the ansible-collection-redhat-rhel_mgmt package. To install it, see Installing the redhat.rhel_mgmt Collection using the CLI . The following Redfish modules are available in the redhat.rhel_mgmt collection: redfish_info : The redfish_info module retrieves information about the remote Out-Of-Band (OOB) controller such as systems inventory. redfish_command : The redfish_command module performs Out-Of-Band (OOB) controller operations like log management and user management, and power operations such as system restart, power on and off. redfish_config : The redfish_config module performs OOB controller operations such as changing OOB configuration, or setting the BIOS configuration. 5.2. Redfish modules parameters The parameters used for the Redfish modules are: redfish_info parameters: Description baseuri (Mandatory) - Base URI of OOB controller. category (Mandatory) - List of categories to execute on OOB controller. The default value is ["Systems"]. command (Mandatory) - List of commands to execute on OOB controller. username Username for authentication to OOB controller. password Password for authentication to OOB controller. redfish_command parameters: Description baseuri (Mandatory) - Base URI of OOB controller. category (Mandatory) - List of categories to execute on OOB controller. The default value is ["Systems"]. command (Mandatory) - List of commands to execute on OOB controller. username Username for authentication to OOB controller. password Password for authentication to OOB controller. redfish_config parameters: Description baseuri (Mandatory) - Base URI of OOB controller. category (Mandatory) - List of categories to execute on OOB controller. The default value is ["Systems"]. command (Mandatory) - List of commands to execute on OOB controller. username Username for authentication to OOB controller. password Password for authentication to OOB controller. bios_attributes BIOS attributes to update. 5.3. Using the redfish_info module The following example shows how to use the redfish_info module in a playbook to get information about the CPU inventory. For simplicity, the example uses 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. OOB controller access details. Procedure Create a playbook file, for example ~/playbook.yml , with the following content: --- - name: Manage out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Get CPU inventory redhat.rhel_mgmt.redfish_info: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: GetCpuInventory register: result 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 the CPU inventory details. Additional resources /usr/share/ansible/collections/ansible_collections/redhat/rhel_mgmt/README.md file 5.4. Using the redfish_command module The following example shows how to use the redfish_command module in a playbook to turn on a system. For simplicity, the example uses 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. OOB controller access details. Procedure Create a playbook file, for example ~/playbook.yml , with the following content: --- - name: Manage out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Power on system redhat.rhel_mgmt.redfish_command: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: PowerOn 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 The system powers on. Additional resources /usr/share/ansible/collections/ansible_collections/redhat/rhel_mgmt/README.md file 5.5. Using the redfish_config module The following example shows how to use the redfish_config module in a playbook to configure a system to boot with UEFI. For simplicity, the example uses 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. OOB controller access details. Procedure Create a playbook file, for example ~/playbook.yml , with the following content: --- - name: Manages out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Set BootMode to UEFI redhat.rhel_mgmt.redfish_config: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: SetBiosAttributes bios_attributes: BootMode: Uefi 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 The system boot mode is set to UEFI. Additional resources /usr/share/ansible/collections/ansible_collections/redhat/rhel_mgmt/README.md file

Commands:
--- - name: Manage out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Get CPU inventory redhat.rhel_mgmt.redfish_info: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: GetCpuInventory register: result
ansible-playbook --syntax-check ~/playbook.yml
ansible-playbook ~/playbook.yml
--- - name: Manage out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Power on system redhat.rhel_mgmt.redfish_command: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: PowerOn
ansible-playbook --syntax-check ~/playbook.yml
ansible-playbook ~/playbook.yml
--- - name: Manages out-of-band controllers using Redfish APIs hosts: managed-node-01.example.com tasks: - name: Set BootMode to UEFI redhat.rhel_mgmt.redfish_config: baseuri: " <URI> " username: " <username> " password: " <password> " category: Systems command: SetBiosAttributes bios_attributes: BootMode: Uefi
ansible-playbook --syntax-check ~/playbook.yml
ansible-playbook ~/playbook.yml