如何在20分钟内批量部署20台ESXi服务器
近期新到20台华为RH2288V5服务器,需要部署ESXi,由于机器较多,于是考虑是否能用pxe实现批量部署,经过两天的摸索实践,最终也实现了上述目标,现记录一下过程。
先介绍一下背景。此次新到的RH2288V5,前面没有配硬盘,只在后面PCI卡位置配了一块M2的SSD。经过查看BIOS,机器配了两块RAID卡,一块用于管理前硬盘背板,另外一块用于管理PCI槽位的M2 SSD。服务器默认的RAID配置,没有划分VD,配的唯一一块SSD配为Unconfigure Good状态,且RAID控制器没有开启JBOD模式。
由于整机只配了一块SSD,RAID卡要么把这唯一的一块SSD划分一个RAID0的VD,要么开启RAID控制器的JBOD模式让这块SSD以直通模式被操作系统识别。那么问题来了,如何批量修改这一批机器的RAID呢?分别接显示器进BIOS一台台配RAID显然不是最好的办法,费时费力。需要说明的是,华为RH2288V5服务器默认是开启了UEFI引导的,基本上各大品牌现在新出的服务器,都是默认UEFI模式了。
经过一番搜寻,发现Broadcom提供了一个叫StorCLI的命令行工具,这个工具可以实现对RAID卡所有的配置,下载地址docs.broadcom/docs/MR_SAS_Unified_StorCLI_7.8-007.0813.0000.0000.zip。那是否能通过pxe引导一个live模式的linux,然后自动运行storecli把控制器JBOD模式启用起来呢?目标是在最短的时间内实现批量配置RAID,所以最好是拿一个开箱即用的linux,不能涉及到复杂的修改或定制linux启动介质等工作,最终经过一番测试后在clonezilla上实现了所需的功能。
clonezilla是一个基于debian/ubuntu修改的发行版,不带图形界面,其主要用途其实是备份/恢复系统,那为什么会选择用它呢?首先是这个发行版体积比较小,整个ISO只有不到300M;其次最重要的是它支持在grub的内核参数传入一些它自定义的参数,来实现很多额外的功能,其中最重要是有我们需要的直接运行命令的参数!
版本使用是用的 clonezilla-live-20180812-bionic-amd64.iso,它是基于ubuntu 18.04LTS修改而来。下载链
接:sourceforge/projects/clonezilla/files/clonezilla_live_alternative/
让我们首先来详细分析如何使用pxe+clonezilla+storcli实现批量配置服务器RAID。
1、首先需要准备一台RHEL7的虚拟机(当然你要喜欢的话用物理机也行,网络能通就行),这台机用于提供dhcp+tftp+nfs服务,这些服务都需要先配置好,具体关于如何配置以及PXE引导更多的内容,可以参考我的上一篇文章。在这篇文章中,用于dhcpd分配IP的是虚拟机第二块网卡,地址配的是192.168.3.1,网段当然就是192.168.3.0了。
2、准备前期所需的脚本及storcli主程序。本文使用的NFS目录为/nfs/pxe,在这个目录里面,准备好3个文件,分别是jbod.sh,storcli64,ks_esxi.cfg。
jbod.sh用于clonezilla引导成功之后,通过该脚本来执行storcli配RAID,该文件内容如下:
echo "";uefi boot
echo "**** Ready to run StorCli! ****";
echo "";
sleep 5;
sudo /opt/storcli64 /c1 set jbod=on;
sleep 5;
echo "";
sudo /opt/storcli64 show;
sleep 10;
echo "";
echo "**** Going to REBOOT NOW! ****";
echo "";
sleep 5;
sudo reboot;
这里需要解释两条命令。
storcli64 show
是查看当前系统的RAID卡基本信息,RH2288V5配的两个RAID卡会显示为第0块和第1块RAID控制器,M2 SSD所在的RAID卡为第1块。
storcli64 /c1 set jbod=on
是指将第1块RAID卡的jbod功能设为on,即打开接了M2 SSD的RAID卡的JBOD功能。
storcli64为主程序,这个文件需要从storcli的包解压出来,从压缩包里面的ubuntu或linux目录里面的deb/rpm包提取均可(可使用7zip来解压提取)。
ks_esxi.cfg为esxi自动kickstart部署用的,配RAID这个过程用不到,先创建备用。
3、准备使用PXE引导clonezilla。下载好clonezilla的ISO,将它解压到/var/lib/tftpboot/images/clonezilla目录,然后把RHEL7的grubx64.efi拷到上述目录并创建grub的配置文件grub.cfg。
(至于为什么不直接使用clonezilla的ISO自带的grubx64.efi,是因为实测它自带的grubx64.efi无论如何都不认grub.cfg的配置文件,也可能是我放的路径不对吧)。
如果RHEL7是使用传统的非EFI模式安装的,那么就需要去RHEL7的ISO里面提取grubx64.efi,提取方法上一篇文章里面有写。然后把/etc/f里面定义的启动文件修改为:filename "images/clonezilla/grubx64.efi" 。
cp /boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/images/clonezilla
touch /var/lib/tftpboot/images/clonezilla/grub.cfg
4、配置PXE引导clonezilla。grub.cfg的完整内容如下:
set default=0
set timeout=3
menuentry "Clonezilla live (Default settings, VGA 1024x768)"{
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论