Cobbler实现自动化安装操作系统

基本原理

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客户机发出DHCP请求,向服务器申请IP地址。

2.DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP(简单文件传输协议)服务器的IP地址和PXE引导程序文件pxelinux.0。

3.PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。

4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。

5.PXE客户机通过网络来启动到系统安装主界面。

6.PXE客户机向文件共享服务器发起获取centos或windows系统安装文件的请求。

7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。

8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统的操作。


cobbler对应关系

Cobbler实现自动化安装操作系统_配置文件

Cobbler的配置结构基于一组注册的对象。每个对象表示一个与另一个实体相关联的实体。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或添加更多特定信息。

  • 发行版(distros): 表示一个操作系统。它承载了内核和initrd的信息,以及内核参数等其他数据。
  • 配置文件(profiles):包含一个发行版、一个kickstart文件以及可能的存储库,还包括更多特定的内核参数等其他数据。
  • 系统(systems):表示要配给的机器。它包括一个配置文件或一个镜像、IPMAC地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息。
  • 镜像(images):可以替换一个保函不屑于此类别的文件的发行版对象(例如,无法分为内核和initrd的对象)。


cobbler集成的服务

  • PXE服务支持
  • DHCP服务管理
  • DNS服务管理
  • 电源管理
  • Kickstart服务支持
  • YUM仓库管理
  • TFTP
  • Apache


Cobbler工作原理

Cobbler实现自动化安装操作系统_window_02

Server端
  • 第一步:启动Cobbler服务
  • 第二步:进行Cobbler错误检查,执行cobbler check命令
  • 第三步:进行配置同步,执行cobbler sync命令
  • 第四步:复制相关启动文件到TFTP目录中
  • 第五步:启动DHCP服务,提供地址分配
  • 第六步:DHCP服务分配IP地址
  • 第七步:TFTP传输启动文件
  • 第八步:Server端接收安装信息
  • 第九步:Server端发送ISO镜像和Kickstart文件
Client端
  • 第一步:客户端以PXE模式启动
  • 第二步:客户端获取IP地址
  • 第三步:通过TFTP服务器获取启动文件
  • 第四步:进入Cobbler安装选择界面
  • 第五步:客户端确定加载信息
  • 第六步:根据配置信息准备安装系统
  • 第七步:加载Kickstart文件
  • 第八步:传输系统安装的其它文件
  • 第九步:进行系统安装


cobbler安装

环境配置

网络环境
  • 虚拟机网卡采用NAT模式或者仅主机模式,不要使用桥接模式,因为后面会搭建DHCP服务器,在同一个局域网多个DHCP服务会有冲突。
  • VMware的NAT模式的dhcp服务也关闭,避免干扰。
linux虚拟机环境
  • 关闭防火墙和selinux
[root@cobbler ~]# systemctl stop firewalld.service 
[root@cobbler ~]# setenforce 0
[root@cobbler ~]# sed -i 's/^SELINUX=.*/^C
[root@cobbler ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 
[root@cobbler ~]# cat /etc/selinux/config | grep "^SELINUX"
SELINUX=disabled
SELINUXTYPE=targeted 
[root@cobbler ~]#

安装cobbler

# 配置epel源
[root@cobbler ~]# yum -y install epel-release
# 更改hostname (方便辨认)
hostnamectl set-hostname cobbler 

## 安装及dhcp httpd xinetd cobbler-web
cobbler-web 提供 web 界面
yum 安装 cobbler 时包含 httpd,tftp-server
yum install dhcp cobbler
查看安装后相关文件
cobbler 目录说明
[root@cobbler ~]# rpm -ql cobbler  # 查看安装的文件,下面列出部分。
/etc/cobbler                  # 配置文件目录
/etc/cobbler/settings         # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
/etc/cobbler/dhcp.template    # DHCP服务的配置模板
/etc/cobbler/tftpd.template   # tftp服务的配置模板
/etc/cobbler/rsync.template   # rsync服务的配置模板
/etc/cobbler/iso              # iso模板配置文件目录
/etc/cobbler/pxe              # pxe模板文件目录
/etc/cobbler/power            # 电源的配置文件目录
/etc/cobbler/users.conf       # Web服务授权配置文件
/etc/cobbler/users.digest     # 用于web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template # DNS服务的配置模板
/etc/cobbler/modules.conf     # Cobbler模块配置文件

/var/lib/cobbler              # Cobbler数据目录
/var/lib/cobbler/config       # 配置文件
/var/lib/cobbler/kickstarts   # 默认存放kickstart文件
/var/lib/cobbler/loaders      # 存放的各种引导程序

/var/www/cobbler              # 系统安装镜像目录
/var/www/cobbler/ks_mirror    # 导入的系统镜像列表
/var/www/cobbler/images       # 导入的系统镜像启动文件
/var/www/cobbler/repo_mirror  # yum源存储目录

/var/log/cobbler              # 日志目录
/var/log/cobbler/install.log  # 客户端系统安装日志
/var/log/cobbler/cobbler.log  # cobbler日志

启动服务

[root@cobbler ~]# systemctl enable httpd.service
[root@cobbler ~]# systemctl start httpd.service
[root@cobbler ~]# systemctl enable tftp.socket
[root@cobbler ~]# systemctl start tftp.socket
[root@cobbler ~]# systemctl enable cobblerd.service
[root@cobbler ~]# systemctl start cobblerd.service

检测并排除错误

[root@cobbler ~]# cobbler check

1.配置服务IP
编辑/etc/cobbler/settings文件
scm_track_enabled:0
scm_track_mode:"git"
server: 192.168.134.136

2.配置下一个(还是他)
next_server:192.168.134.136 

3.TFTP配置相关

4.下载 loaders
cobbler get-loadrs

5.执行数据同步
cobbler sync

systemctl restart coblerd.service
cobbler check


6.安装ks文件语法检查工具
yum install pykickstart

7.修改kickstart配置初始化密码
[root@cobbler ~]# openssl passwd -1 123456
$1$uT5GLcOh$13HvFB/laOna639EHwcdX1

启动DHCP

vim /etc/cobbler/settings
manage_dhcp: 1 #设置为1 ,表示cobbler管理dhcp
改配置文件
/etc/cobbler/dhcp.templat

subnet 192.168.10.0 netmask 255.255.255.0 {
     option routers             192.168.10.2; ##路由器
     option domain-name-servers 192.168.10.2; ##域名服务器
     option subnet-mask         255.255.255.0;  ##子网掩码
     range dynamic-bootp        192.168.10.100 192.168.10.250; ##地址池
     default-lease-time         21600; #默认租期
     max-lease-time             43200;#最大租期
     next-server                $next_server; 


##
安装dhcp服务
 yum install dhcp
 启动
 
[root@cobbler ~]# systemctl enable dhcpd
[root@cobbler ~]# systemctl start dhcpd

建立cobbler yum 源(安装系统的源)

[root@cobbler ~]# mount /dev/cdrom /mnt/  # 挂载CentOS7的系统镜像。
# 导入系统镜像
[root@cobbler ~]# cobbler import --path=/mnt/ --name=CentOS-7.1-x86_64 --arch=x86_64
# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.1-x86_64,如果重复,系统会提示导入失败。

[root@cobbler ~]# cobbler distro list  # 查看镜像列表
   CentOS-7.1-x86_64

# 镜像存放目录,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-7.1-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间。
[root@cobbler ~]# cd /var/www/cobbler/ks_mirror/
[root@cobblerks_mirror]# ls
CentOS-7.1-x86_64  config
[root@cobbler ks_mirror]# ls CentOS-7.1-x86_64/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

cobbler常用命令

命令

作用

cobbler check

核对当前设置是否有问题

cobbler list

列出所有的cobbler元素

cobbler report

列出元素的详细信息

cobbler sync

同步配置到数据目录,更改配置最好都要执行下

cobbler reposync

同步yum仓库

cobbler distro

查看导入的发行版系统信息

cobbler system

查看添加的系统信息

cobbler profile

查看配置信息

cobbler

重要的参数

cobbler import --path=/media/ --name=CentOS-7.7-x86_64 --arch=x86_64

--path 镜像路径# --name 为安装源定义一个名字# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.7-x86_64,如果重复,系统会提示导入失败。