HP Proliant 硬件上 Linux 的一次性 PXE 引导

HP Proliant 硬件上 Linux 的一次性 PXE 引导

因此,我使用 Systemimager 通过 PXE 配置新的 CentOS 5.3 主机。我们有几台服务器只是测试目标,我们每天会重新映像几十次,通常,让它们进行 PXE 启动很简单,只需登录到它们的 iLO 界面,重新启动,并在适当的时间按 F12 即可。我的问题是,是否可以通过 linux 命令行告诉服务器在下次重新启动时执行“一次性 PXE 启动”?每次重新映像周期,这都可以为我节省很多时间,包括单击、键入、等待 Java 加载 ilo 控制台等。我知道戴尔通过 OpenIPMI 具有此功能,但我想知道 HP 是否具有类似的功能。

非常感谢!--Lee

答案1

使用 ipmitool 应该可以实现这一点。只需运行:

ipmitool chassis bootdev pxe

您的下一次启动应该是 PXE 启动。

编辑:这似乎不适用于 HP iLO2。但是,您可以通过 SSH 进入 iLO2 界面,然后通过发出以下命令重新配置它

set /system1/bootconfig1/bootsource5 bootorder=1

在不支持从 USB 密钥启动的系统上,它将改为bootsource4。有关完整详细信息,请参阅iLO2 脚本参考

您可以将此命令作为参数发出,ssh这样也可以正常工作。

答案2

所以我在同事的帮助下解决了这个问题。这是一个肮脏的黑客行为,但它确实有效!HP Proliants(至少现在,在 2009 年底)将尝试从 CDROM 启动,然后尝试硬盘,然后尝试 USB 棒,然后他们将进行 PXE 启动。由于无论如何我都会重新映像服务器,我发现如果我们无论如何都要清除引导扇区并立即重新启动,HP boxen 将完成启动过程,绕过硬盘(因为没有 MBR),然后立即进行 PXE 启动。我编写了一个脚本,它发出 dd 命令如下:

#!/bin/bash

# This is meant to assist in re-imaging a server.  This will blow away the
# main partition of a given box, forcing it to pxe-boot next boot.
# Naturally, don't be an idiot and run this on a machine you DON'T want nuked
# from orbit

echo "Nuking from orbit will commence in 5 seconds.  Ctrl-C if this NOT what you want."
echo "You have been warned!"
sleep 8

dd if=/dev/urandom of=/dev/cciss/c0d0 bs=512 count=2

dd if=/dev/urandom of=/dev/cciss/c0d0p1 bs=512 count=2
dd if=/dev/urandom of=/dev/cciss/c0d1p1 bs=512 count=2
dd if=/dev/urandom of=/dev/cciss/c0d2p1 bs=512 count=2
sync

echo "Nuke complete!  Rebooting in 5..."
sleep 5
reboot

哈哈哈!——李

答案3

或者,使用 HP Proliant 支持包 (rpm 名为 hp-health) 中的工具...有一个名为“hpbootcfg”的 CLI 程序,它可以完全按照您的要求执行操作:用法:bootcfg [-F -C -H -T] [-S -Q -R -P] [-r -d -n -b] -D 在所有位置设置默认值

    -F Floppy first
    -C CD ROM first
    -H Harddrive first
    -T Tape first

    -S one time boot to system configuration utility
    -Q one time boot to quick configuration utility
    -R one time boot to RBSU
    -P one time boot to PXE

    -r one time remote
    -d one time remote dial out
    -n one time remote network
    -b bypass F1/F2

答案4

您可以使用 Ansible 通过其 HP iLO 接口从网络启动您的机器,方法是使用“python-hpilo”模块。

为了做到这一点,您可以使用一些 Ansible 角色,例如:

- name: boot from netwrok through HP iLO interface only if the system is an HP server
  hpilo_boot:
    force: yes #make sure what you are doing, it will reboot a running machine
    host: YOUR_ILO_ADDRESS
    login: YOUR_ILO_LOGIN
    password: YOUR_ILO_PASSWORD
    media: network
    state: boot_once #default behaviour
  when: cmdb_hwmodel.startswith('HP ')
  delegate_to: localhost

更多信息请查看:https://docs.ansible.com/ansible/latest/modules/hpilo_boot_module.html

您还可以使用清单文件从网络启动多台机器。有关 Ansible 角色和任务的更多信息,请访问https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.htmlhttps://docs.ansible.com/ansible/latest/user_guide/basic_concepts.html

相关内容