不管什么运维标准化,自动化,那开始都是最简单的系统安装。若开始系统安装都没有实现,更加不要谈后面的一切,之前说过使用一套开源的工具来搭建自动化运维平台,那么系统安装也一样使用开源的一套工作来做。Cobbler+IPMI来实现整个装机过程,目前在使用的好像有PPTV(推出了一个较经典的分布式装机系统),小米的装机平台等等。今天就简单介绍一下如何使用cobbler+ipmi来完成装机整个过程

运维自动化--自动化安装_第1张图片

1.整个部署系统架构(参考了PPTV的分布式模式)


一般稍大点的公司都会租用多个机房(包括自己的小机房),好点就会通过裸光纤各个机房之间打通,但是如果有两位数以上的服务器同时安装,那带宽会如何呢?考虑这个建议在各机房部署一套cobbler服务器,以便各机房使用各自的p_w_picpath文件,形成了(Master+Slave+Slave...)就取PPT的一个架构图

运维自动化--自动化安装_第2张图片

所有的有关 distro、Profile、Images、kickstart文件等都在Master上操作,通过rsync进行同步到各个节点上。并通过主平台根据IDC信息来调各自的API来实现system的管理。


2. 实现工具


前台:bootstrap+django

工具:cobbler+ipmi+Dell DTK(MegaCli)


3. 实现流程

 

 i. 服务器上架,初始化配置。配置ipmi,修改bios(因UEFI启动模式支持不是很好,待后期优化)。

  ii. 平台添加信息。IDC信息,主机名,MAC,ipmi等信息通过表单提交给待装机平台(一些硬件信息后期考虑二维码的模式实现,现在不流行扫一扫);

  iii. 根据信息开始安装。通过api将信息添加到cobbler的system,使用ipmi来管理服务器的电源信息。

  iv. 物理机通过dell的DTK或MegaCli,先启动一个精简的镜像系统,进行raid的配置。

  v. 开始正式部署操作系统。通过post方式,从装机的客户端上不断上传状态信息到服务器端,服务器接收信息后根据不同情况做不同的处理,并将进度呈现在前台。比如安装完成后上传完成状态信息,第一步做的是将PXE启动模式禁用改为硬盘启动,将cobbler中的system的netboot改为False(为什么不删除,主要是为后期的初始化固定IP地址,为了DHCP上做MAC和IP绑定)

  vi. 整个装机到此基本已经完成,根据情况接下来做一下初始化的设置。

运维自动化--自动化安装_第3张图片


4. 自动化装机中一些关键问题及建议处理方式


  i. 在开始安装系统前,在执行开始安装的按钮时,后台同时将服务器的启动模式设置成PXE启动;

  ii. Raid自动化划分。对于物理服务器需要设置raid的,默认cobbler的profile设置为精简的操作系统,然后进行raid划分,完成raid划分后,post状态,根据状态再修改system的profile,重启服务器开始安装系统,实现自动raid划分。

  iii. 安装异常确认。对于安装的客户端如何监控具体的异常状态,有几种方式:最简单的就是查看日志,那就需要将安装日志在我们的控制台上来打开并查看;使用带外管理的remote console(KVM);使用ipmi的sol来查看异常问题。

  iv. 如何安全控制生产系统被勿装。有几种方法可以做到:a.硬件设置上避免。 禁用启动模式中的网卡设备;b. 系统平台避免。不断的确认,并在装机前提前将服务器的电源关闭,等待一定时间才能点击安装,初始化完尽快的删除cobbler中的system或将system的netboot设置为false;c. 网络隔离。将普通网络VLAN跟装机VLAN分离,通过开始安装前划vlan后装机后划vlan来实现网络的分离。

目前遇到的几个关键问题。。。待大家一起再补充

5. screenshot

 装机表单

运维自动化--自动化安装_第4张图片


待安装列表

运维自动化--自动化安装_第5张图片

安装日志

运维自动化--自动化安装_第6张图片

安装记录

运维自动化--自动化安装_第7张图片


有兴趣的可以加99798703一起探讨

github:https://github.com/Elivis/opsa-master

关注OPSA公众号

运维自动化--自动化安装_第8张图片

欢迎大家来邮件讨论:[email protected]