第 23 章 使用 rhel_mgmt 集合通过 IPMI 和 Redfish 进行远程管理
使用智能平台管理接口(IPMI)和 Redfish API,管理员也可以远程管理主机,即使操作系统没有运行。rhel_mgmt
Ansible 集合提供了使用 IPMI 和 Redfish 执行某些远程操作的模块,如设置引导设备。
23.1. 使用 rhel_mgmt.ipmi_boot
模块设置引导设备
您可以使用 redhat.rhel_mgmt
集合的 ipmi_boot
模块来设置主机的引导设备。此模块使用智能平台管理接口(IPMI)执行此操作。
当您使用此 Ansible 模块时,会涉及三个主机:控制节点、受管节点,以及应用实际 IPMI 操作的基板管理控制器(BMC)的主机。控制节点在受管节点上执行 playbook。受管主机连接到远程 BMC 以执行 IPMI 操作。例如,如果您在 playbook 中设置 hosts: managed-node-01.example.com
和 name: server.example.com
,则 managed-node-01.example.com
将通过使用 server.example.com
上的 IPMI 更改设置。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 -
ansible-collection-redhat-rhel_mgmt
软件包安装在控制节点上。 - 您有凭证来访问 BMC,这些凭证有更改设置的权限。
- 受管节点可以通过网络访问远程 BMC。
流程
将您的敏感变量存储在一个加密文件中:
创建 vault :
ansible-vault create ~/vault.yml
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
Copy to Clipboard Copied! 在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:ipmi_usr: <username> ipmi_pwd: <password>
ipmi_usr: <username> ipmi_pwd: <password>
Copy to Clipboard Copied! - 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Set the boot device by using IPMI hosts: managed-node-01.example.com vars_files: - ~/vault.yml tasks: - name: Install python3-pyghmi prerequisite ansible.builtin.dnf: name: python3-pyghmi state: latest - name: Set the boot device to hd redhat.rhel_mgmt.ipmi_boot: name: <bmc_hostname_or_ip_address> port: <bmc_port_number> user: "{{ ipmi_usr }}" password: "{{ ipmi_pwd }}" bootdev: hd persistent: true
--- - name: Set the boot device by using IPMI hosts: managed-node-01.example.com vars_files: - ~/vault.yml tasks: - name: Install python3-pyghmi prerequisite ansible.builtin.dnf: name: python3-pyghmi state: latest - name: Set the boot device to hd redhat.rhel_mgmt.ipmi_boot: name: <bmc_hostname_or_ip_address> port: <bmc_port_number> user: "{{ ipmi_usr }}" password: "{{ ipmi_pwd }}" bootdev: hd persistent: true
Copy to Clipboard Copied! 示例 playbook 中指定的设置包括以下内容:
name: <bmc_hostname_or_ip_address>
- 定义 BMC 的主机名或 IP 地址。这是受管节点在其上执行操作的主机的 BMC。
port: <bmc_port_number>
-
设置远程管理控制协议(RMCP)端口号。默认值为
623
。 bootdev: <value>
设置引导设备。您可以选择以下值之一:
-
hd
: 从硬盘引导。 -
网络
:从网络引导. -
光
学:从光驱(如 DVD-ROM)引导。 -
floppy
:从软盘引导. -
安全
:在安全模式下从硬盘驱动器引导. -
设置
:引导到 BIOS 或 UEFI。 -
默认
:删除任何 IPMI 直接引导设备请求。
-
persistent: <true|false>
-
配置远程主机是否对所有引导都使用定义的设置,还是只针对下一个配置。默认情况下,此变量设置为
false
。请注意,并非所有 BMC 都支持永久设置引导设备。
如需有关 playbook 中使用的所有变量的详细信息,请在控制节点上使用
ansible-doc redhat.rhel_mgmt.ipmi_boot
命令来显示模块的文档。验证 playbook 语法:
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
Copy to Clipboard Copied! 请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied!