自动化装机遇到的坑

公司最近由于业务量上来,买了一批机器,因此,我跟同事就一起合计定出一套机器上架的流程来。其中,最重要的一环就是将机器装系统自动化。我们选用的技术栈的 Pxe + Cobbler + Kickstart

我们遇到的第一个坑就是——不知道 Cobbler 如何针对不同的机器,设置好不同的静态 IP。在 Cobbler 的官方文档里面,上面写着对于下面的命令是可以设定机器装完系统后的静态 IP 的:

cobbler system add --name=server --static=1 --interface=eth0 --ip-address=192.168.0.1 --netmask=255.255.255.0

可是我尝试好多次之后,都发现结果于我预料的不一致。后来才发现,Cobbler 设置网卡名称和网卡的 IP 地址这一功能是跟它自身的 Snippets 紧密结合起来的。更进一步地说就是,上面命令的参数其实会被 Cobbler 转换成一些变量,然后 Cobbler 提供了一些 Snippets,你只有在你的 Kickstart 文件里面引用了这些 Snippets,才能给网卡设置 IP 地址(post_network_config)。

我们遇到的第二个坑就是——我们把机器上架到机房之后,发现机器从 Networker Boot 时,总是报PXE-E51: No DHCP or proxyDHCP offers were received。一开始,我们以为是 DHCP 服务器配置错误了,搞了搞去搞了很久。后面才从国外的一个论坛中找到了原因:由于 STP 的原因,交换机在发现有机器接上来的时候,为了避免回路,会等待一段时间(大概 30s)之后才允许数据包通过。而在这 30s 内,BIOS 的 Pxeclient 发出的数据包早就超时了,所以就会包上面的错误。解决的办法就是在交换机上启动 postfast 或者是 edged port(针对不同的交换机叫法可能不同,但是目的都是去掉交换机等待的 30s)。

第三个坑就是 Cobbler 需要知道机器网卡的 Mac 地址才能使机器以 PXE 模式启动时自动装系统,但是我们使用的 Ipmitool 本身并没有实现获取机器网卡的 Mac 地址的命令。Google 了大半天,终于搜到获取机器 Mac 地址的命令:

ipmitool -H 192.168.0.1 -U ADMIN -P ADMIN raw 0x30 0x21

第四个坑就是由于我们使用的主板比较新,默认的 BIOS 模式是 UEFI,但是 Cobbler 2.6.7 版本对 UEFI 模式的支持根本就不好,所以需要被迫切换到 Legacy 模式当中去。Intel 的 Ipmi 文档中是写明可以指定机器启动的时候,主板是以 Legacy 还是 UEFI 模式启动的,然而尝试了大半天发现不行。发了封邮件去问主板供应商怎么样实现这个需求,结果得到的回答是你无法通过命令完成这个切换,必须从界面上去设置!

你可能感兴趣的:(自动化装机遇到的坑)