我有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控制台。