因此,我使用 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.html和https://docs.ansible.com/ansible/latest/user_guide/basic_concepts.html