--- - name: IPMI配置BMC地址 hosts: "{{ target_hosts | default('all') }}" become: yes vars: # BMC网络配置 bmc_ip: "10.10.10.100" bmc_netmask: "255.255.255.0" bmc_gateway: "10.10.10.1" # BMC用户配置 bmc_user: "admin" bmc_password: "Admin@123" bmc_channel: 1 # 是否启用DHCP(设为true则忽略上面的静态IP配置) bmc_dhcp: false tasks: - name: 安装ipmitool package: name: ipmitool state: present - name: 加载IPMI内核模块 modprobe: name: "{{ item }}" state: present loop: - ipmi_devintf - ipmi_si ignore_errors: yes - name: 查看当前BMC配置 shell: ipmitool lan print {{ bmc_channel }} register: bmc_current changed_when: false ignore_errors: yes - name: 显示当前BMC信息 debug: msg: "{{ bmc_current.stdout_lines | default(['无法读取BMC信息']) }}" - name: 设置BMC为静态IP shell: ipmitool lan set {{ bmc_channel }} ipsrc static when: not bmc_dhcp - name: 配置BMC IP地址 shell: ipmitool lan set {{ bmc_channel }} ipaddr {{ bmc_ip }} when: not bmc_dhcp - name: 配置BMC子网掩码 shell: ipmitool lan set {{ bmc_channel }} netmask {{ bmc_netmask }} when: not bmc_dhcp - name: 配置BMC默认网关 shell: ipmitool lan set {{ bmc_channel }} defgw ipaddr {{ bmc_gateway }} when: not bmc_dhcp - name: 设置BMC为DHCP模式 shell: ipmitool lan set {{ bmc_channel }} ipsrc dhcp when: bmc_dhcp - name: 配置BMC用户密码 shell: | ipmitool user set name {{ bmc_channel }} 2 {{ bmc_user }} 2>/dev/null || true ipmitool user set password 2 {{ bmc_password }} ipmitool user enable 2 ipmitool channel setaccess {{ bmc_channel }} 2 privilege=4 no_log: true ignore_errors: yes - name: 验证BMC配置 shell: ipmitool lan print {{ bmc_channel }} register: bmc_verify changed_when: false - name: 显示最终配置 debug: msg: | ═══════ BMC配置完成 ═══════ 模式: {{ 'DHCP' if bmc_dhcp else '静态IP' }} IP: {{ bmc_ip }} 掩码: {{ bmc_netmask }} 网关: {{ bmc_gateway }} 用户: {{ bmc_user }} ═══════════════════════════ {{ bmc_verify.stdout }}