如何远程启动CentOS 7的netinstall?

我有50多台机器运行CentOS 6.4或6.8。 我希望使用configuration脚本(例如,使用“基本服务器”模板和基于硬件ID设置主机名/静态IP),使用安装在公共NFS和/或CIFS共享上的安装介质,使用CentOS 7重新安装这些机器在我的本地networking上。 后来,我打算用Ansible远程控制这些机器,所以我也想运行一个安装后的脚本。

我怎样才能远程(通过SSH)触发这个重新安装?


基于Iain的回答并进行一些Googlesearch,下面介绍如何从CentOS 7执行这种安装:

将vmlinuz和initrd.img下载到boot:

sudo curl -o /boot/vmlinuz http://mirror.zetup.net/CentOS/7/os/x86_64/isolinux/vmlinuz sudo curl -o /boot/initrd.img http://mirror.zetup.net/CentOS/7/os/x86_64/isolinux/initrd.img 

将自定义菜单项添加到/etc/grub.d/40_custom

 menuentry "My custom boot entry" { set root=(hd0,1) linux /vmlinuz ks=http://my-server/ks.cfg initrd /initrd.img } 

在上面的linux上添加任何其他选项。

将自定义条目设置为/etc/default/grub的默认选项:

 GRUB_DEFAULT="My custom boot entry" 

然后运行:

 grub2-mkconfig --output=/boot/grub2/grub.cfg 

抓起一杯咖啡,重新启动:

 reboot 

您可以通过使用合适的命令行参数引导内核来重新安装grub。 我在这里概述了EL6的过程,但是EL7需要做一些改变。 这只是一个大纲,但它应该让你朝着正确的方向前进。

下载/centos/7/os/x86_64/isolinux/vmlinuz以从您select的回购/boot
/centos/7/os/x86_64/isolinux/initrd.img下载到/boot

configuration一个grub条目 – 把它放在第一位。

 title Install CentOS7 kernel /vmlinuz ro upgradeany biosdevname=0 net.ifnames=0 ip=192.168.254.44::192.168.254.220:255.255.255.0:somehost.tld:eth0:none ks=http://server.tld/ks/kickstart.ks nameserver=8.8.8.8 headless vnc vncpassword=SomePassword initrd /initrd.img 

上面的代码会引导安装内核,并按照描述configuration它的IPv4,然后下载kickstart脚本并从那里安装系统。

注:当我这样做时,系统要求使用旧式ethN接口名称。 如果你想要新的一致的命名,那么你可能不得不弄清楚如何提供接口的IP节

 ip=address::gateway:netmask:hostname:interface:method 

你可能会逃避

 ip=dhcp 

可能是可以省略接口,例如

 ip=address::gateway:metmask:hostname::none 

一旦你得到这个工作,它运作良好。 您可能需要查看相关文档中的选项。

我启动一个VNC服务器,以便我可以看到发生了什么,如果我需要它可以省略。

无头参数会阻止系统查找和初始化video硬件,您可能需要忽略该video并观看IPMI控制台。