了解Cobbler之前,我们需要先对PXE及KickStart有一定的认识。

PXE

  PXE(Pre-bootExecution Environment),预启动执行环境,通过网络接口启动计算机,支持Client通过网络从Server下载映像,并由此通过网络启动操作系统;在启动过程中,Client要求Server分配IP地址,再用TFTP下载一个启动软件包到本机内存中执行,由这个启动软件包完成Client基本的软件设置并安装操作系统。
  要达成PXE有两个必须的条件:
  (1)Client的网卡必须要支持PXE功能,并且开机时选择从网卡启动;
  (2)完整的PXE Server必须要提供含有DHCP、TFTP服务,还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件)。

KickStart

  KickStart 是一种无人值守的安装方式,它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。我们可以简单理解为一个自动安装应答配置管理程序。通过读取这个配置文件,系统知道怎么去分区,要安装什么包,配什么IP,优化什么内核参数等等。其主要组成部分包括:

  • KickStart安装选项,包含语言的选择,防火墙,密码,网络,分区的设置等;
  • %Pre部分,安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
  • %Package部分,安装包的选择,可以是@core这样的group形式,也可以是vim-*这样的包形式;
  • %Post部分,安装后执行的脚本,通常用来做系统的初始化设置,比如启动的服务,相关的设定等。

PXE+KickStart的工作流程

  • 1. PXE Client向DHCP Server发送请求:支持PXE的网络接口卡(NIC)的Client的BIOS设置成为网络启动,通过UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP Server索取IP地址等信息。
  • 2. DHCP Server提供信息:DHCP Server收到Client的请求,验证是否来至合法的PXE Client的请求,验证通过它将给Client返回响应,响应内容包含了为Client分配的IP Address、TFTP Server以及配置文件所在位置。
  • 3. PXE Client请求下载启动文件:Client收到DHCP Server的响应后,会回应一个帧,以请求传送启动所需文件,这些启动文件包括:pxelinux.0(相当于boot loader)、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
  • 4. TFTP Server响应Client请求并传送文件:Client会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
  • 5. 请求下载自动应答文件:Client通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。(或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。)接着读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
  • 6. Client安装操作系统:将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。

Cobbler

概述

  Cobbler由python语言开发,是对PXE和KickStart的封装,融合很多特性,提供了CLI和Web的管理形式,能更加方便地实行网络安装;Cobbler也提供了API接口,因此使用其它语言也很容易做扩展。Cobbler不仅可以安装物理机,同时也支持KVM、XEN虚拟化、Guest OS的安装;更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理。

组成

  Cobbler的结构基于一组注册的对象,每个对象都是相互关联的实体(该实体指向另一个实体,或者另一个实体指向该实体)。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或添加更多特定信息。对象类型的定义为:

  • 发行版(Distribution):表示一个操作系统,它承载了kernel和initrd的信息,以及内核参数等其它数据;
  • 配置文件(Profile):包含一个发行版、一个KickStart文件以及可能的存储库,还包含更多特定的内核参数等其它数据;
  • 系统(System):包含一个配置文件或一个镜像,还包含IP Address和MAC Address、电源管理(地址、凭据、类型)以及更为专业的数据等信息;
  • 存储库(Repository):保存一个yum或rsync存储库的镜像信息;
  • 镜像(Image):可替换一个包含不属于此类别的文件的发行版对象。

  基于注册的对象以及各个对象之间的关联,Cobbler 知道如何更改文件系统以反映具体配置,因为系统配置的内部是抽象的,因此我们可以只关注想要执行的操作。

工作原理

    Server端:

  • 启动Cobbler服务
  • 进行Cobbler错误检查,执行cobbler check命令
  • 进行配置同步,执行cobbler sync命令
  • 复制相关启动文件文件到TFTP目录中
  • 启动DHCP服务,提供地址分配
  • DHCP服务分配IP地址
  • TFTP传输启动文件
  • Server端接收安装信息
  • Server端发送ISO镜像与Kickstart文件

    Client端:

  • 客户端以PXE模式启动
  • 客户端获取IP地址
  • 通过TFTP服务器获取启动文件
  • 进入Cobbler安装选择界面
  • 客户端确定加载信息
  • 根据配置信息准备安装系统
  • 加载Kickstart文件
  • 传输系统安装的其它文件
  • 进行安装系统

小结

  • Cobbler可以看作是一个更多功能的PXE,它实现系统安装和PXE+KickStart也差不多,需要的文件和过程大致都一样;
  • Cobbler能自动管理DNS/TFTP/DHCP/RSYNC这四个服务(但似乎对TFTP的管理有点bug,需要手动启动TFTP),且Cobbler依赖于HTTPD(PXE支持HTTP/NFS/FTP);
  • 基本的系统安装,Cobbler只需生成一个Distro和一个Profile即可:Distro相当于一个镜像,它提供安装系统过程中所需的一切文件,如vmlinuz,initrd以及rpm包等;Profile的作用是为了自动修改pxelinux.cfg/default文件,每生成或修改一次profile,都会在default文件中修改或追加对应的label;
  • 除了Distro/Profile之外,Cobbler还管理System/Images/Repository等,但是用的很少。

Cobbler实现自动化安装(上)--原理篇的更多相关文章

  1. Cobbler实现自动化安装(下)--实现过程

    实验环境 [root@cobbler ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@cobbler ~] ...

  2. 树莓派安装cobbler,自动化安装CentOS

    安装python.相关python模块.apache sudo apt-get install python python2.7 python-django python-netaddr python ...

  3. CentOS 7 搭建Cobbler实现自动化安装系统

    1.安装软件包 # yum -y install epel-release     #安装EPEL源 # yum -y install cobbler dhcp pykickstart 2.启动cob ...

  4. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  5. cobbler单台服务器实现批量自动化安装不同版本系统-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  6. Cobbler自动化安装部署系统

    自动化安装部署 https://www.cnblogs.com/nulige/p/6796593.html PXE+Kickstart工作原理 pxe+kickstart工作流程 网卡上的pxe芯片有 ...

  7. CentOS 7 Cobbler 自动化安装系统

    在上一篇Cobbler 安装中,配置好了Cobbler,下面来配置自动化安装 配置cobbler-DHCP # 修改settings中参数,由cobbler控制dhcp [root@cobbler ~ ...

  8. Cobbler自动化安装

    # Cobbler自动化安装 [Cobbler官网](http://cobbler.github.io) ![](/Users/wanyongzhen/Library/Containers/com.t ...

  9. Linux系统自动化安装之cobbler实现

    一.cobbler简介 cobbler是快速网络安装linux操作系统的服务,支持众多的Linux发行版本,如redhat|.fedora.centos.debian.ubuntu和suse,也可以支 ...

随机推荐

  1. Springboot基础知识

    1.@RestController注解 Spring4之后新加入的注解,@RestController是@ResponseBody和@Controller的组合注解.(返回json需要@Respons ...

  2. 01_NIO基本概念

    [NIO的几个概念] Buffer(缓冲区) Channel(通道,管道) Selector(选择器,多路复用器) [Buffer] Buffer是一个对象,它包括一些要写入或者要读取的数据.在NIO ...

  3. MFC string char cstring 类型转换

    在Unicode环境下用以下转换: CString z_strCurtTime = _T(""); // 获取当前时间 CTime z_tCurTime = CTime::GetC ...

  4. maven学习(七)后续扩展、资料

    写这几篇博客的来源是 "maven实战 + 网上的博客 + 平时使用的心得 ".记录的都是比较常用的东西,也有一些只做了大概了解.或者干脆直接略过,在这里做一下总结,如果有需要在进 ...

  5. Studying TCP's Congestion Window using NS

    Studying TCP's Congestion Window using NS How to obtain TCP's CWND value The most important value th ...

  6. db2巡检小脚本

    写了下db2巡检的一个小脚本,只能做常规检查,减少日常工作量,脚本内容如下: #!/bash/bin echo "物理CPU个数为:"cat /proc/cpuinfo| grep ...

  7. sql语句中where,have,on的区别

    一.where和on的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户.  在使用left jion时,on和where条件的区别如下:   1. ...

  8. Java虚拟机1:开篇

    1.前言 由于后期学习需要用到大量的JVM底层的东西,所有本人调整了一下学习计划,打算先从JVM入手,了解整个JAVA的运行机制,内存模型,编译原理等等一些底层的东西,这样在学习 后面的东西,会有一种 ...

  9. MQ中将消息发送至远程队列的配置

    MQ中将消息发送至远程队列的配置 摘自MQ资源管理器帮助文档V7 在开始学习本教程之前,您需要从系统管理员处了解标识网络上接收机器的名称:IP地址.MQ的端口号.队列管理器.接收(远程机器)或者是发送 ...

  10. 转:Json序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...