天天看点

基于PXE 和 cobbler 自动安装系统

1 概述

本文中将介绍基于pxe和cobbler两种方式的自动化安装。两种方式实现的效果是一样的,但是cobbler是pxe的二次封装,在使用上更加方便,集成多个软件进行实现。关于自动化安装中的相关概念和ks文件等的介绍,详见博客:http://ghbsunny.blog.51cto.com/7759574/1969593

本文是对本地自动化安装系统的扩展。同时,本文在文档后部附上了关于自动化安装pxe系统环境的脚本。

2 基于pxe 自动化安装

pxe(prebootexcutionenvironment)预启动执行环境,intel公司研发基于client/server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统pxe可以引导和安装windows,linux等多种操作系统

pxe网络自动化安装:通过搭建网络yum源(http,ftp,nfs三者选一),tftp服务器,dhcp服务器,原理是,通过dhcp服务器,使得机器启动的时候,获取到相关的ip,在dhcp里指定了next-server,该next-server就是tftp服务器的ip,这样,机器获取到ip后,会到指定的tftp服务器的默认路径/var/lib/tftpboot下去下载相关的文件,首先是加载pxelinux.cfg目录下的default文件,该default文件就是安装机器的菜单选项,在这菜单里,指定kickstart文件路径和/var/lib/tftpboot下的initrd.img和vmlinuz的路径,使得需要安装的对应系统能够启动并加载kickstart文件进行安装。在kickstart文件里我们将指定了安装包的路径。

pxe工作原理

如下图

基于PXE 和 cobbler 自动安装系统

原理介绍

.client向pxe server上的dhcp发送ip地址请求消息,dhcp检测client是否合法(主要是检测client的网卡mac地址),如果合法则返回client的ip地址,同时将启动文件pxelinux.0的位置信息一并传送给client

.client向pxe server上的tftp发送获取pxelinux.0请求消息,tftp接收到消息之后再向client发送pxelinux.0大小信息,试探client是否满意,当tftp收到client发回的同意大小信息之后,正式向client发送pxelinux.0

.client执行接收到的pxelinux.0文件

.client向tftp server发送针对本机的配置信息文件(在tftp服务的pxelinux.cfg目录下,这是系统菜单文件,格式和isolinux.cfg格式一样,功能也是类似),tftp将配置文件发回client,继而client根据配置文件执行后续操作。

.client向tftp发送linux内核请求信息,tftp接收到消息之后将内核文件发送给client

.client向tftp发送根文件请求信息,tftp接收到消息之后返回linux根文件系统

.client启动linux内核

.client下载安装源文件,读取自动化安装脚本

这里用pxe自动化安装centos7为例说明

.安装前准备:关闭防火墙和selinux,dhcp服务器静态ip

.安装软件包

环境准备,搭建以下三个服务

httpd/nfs/ftp(三选一,用于搭建yum源)tftp-server dhcp

文件准备

通过以下两个工具生成相关文件

syslinux  : 生成menu.c32 和 pxelinux.0

system-config-kickstart:生成 kickstart文件

.配置文件共享服务:

.准备kickstart文件

安装路径,这次是用http服务器作为yum源,ks文件中url --url=http:/192.168.32.72/os/7

开机时加载网卡,onboot选项

.配置tftp服务

.配置dhcp服务

可以直接拷贝配置文件进行修改,主要该要使用的网段range和指定tftp服务器next-server和tftp服务器上的默认的文件filename

配置tftp服务

.准备相关文件

tftp路径是

当前文件列表如下:

.准备启动菜单

修改启动菜单

到这里,pxe安装centos7的环境已经准备完成了,这样子,当有机器需要安装系统的时候,开机,选择网络启动就会按照pxe的设置进行安装

3 基于cobbler自动化安装系统

cobbler 介绍

cobbler快速网络安装linux操作系统的服务,支持众多的linux发行版:red hat、fedora、centos、debian、ubuntu和suse,也可以支持网络安装windows,是pxe的二次封装,将多种安装参数封装到一个菜单,基于python编写,提供了cli和web的管理形式 

cobbler 工作流程

 以下图形是cobbler和pxe工作的对比图形

基于PXE 和 cobbler 自动安装系统

cobbler 工作流程解释如下

.client裸机配置了从网络启动后,开机后会广播包请求dhcp服务器(cobbler server)发送其分配好的一个ip

.dhcp服务器(cobbler server)收到请求后发送responese,包括其ip地址

.client裸机拿到ip后再向cobbler server发送请求os引导文件的请求

.cobbler server告诉裸机os引导文件的名字和tftp server的ip和port

.client裸机通过上面告知的tftp server地址通信,下载引导文件

.client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image

.cobbler server发送请求的kickstart和os iamge

.client裸机加载kickstart文件

.client裸机接收os image,安装该os image

cobbler 实现步骤

.安装包,并设置服务

.检查配置

.根据上面提示修改配置

.下载启动相关文件菜单

.分别导入centos的安装源,并查看

.准备kickstart文件并导入cobbler

.配置web管理界面

.测试

cobbler 相关术语

.发行版:表示一个操作系统版本,它承载了内核和initrd 的信息,以及内核参数等其他数据

.配置文件:包含一个发行版、一个kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据

.系统:表示要配置的主机,它包含一个配置文件或一个镜像,还包含ip 和mac 地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息

.存储库:保存一个yum 或rsync 存储库的镜像信息

.镜像:可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和initrd 的对象)

cobbler 各种配置目录说明

cobbler 依赖epel 源安装

yum -y install cobbler

一般是会自动安装相关的包的,如http,dns等,安装完成后,如果还有没有安装的服务,要手动安装,如dhcp。

yum -y install dhcp

.配置文件目录/etc/cobbler

cobbler 目录介绍

cobbler 命令介绍

cobbler 重要的参数

./etc/cobbler/settings中重要的参数设置

cobbler 环境检查

.执行cobbler check命令常见如下异常,一般是配置文件没更改导致

cobbler check常见报错解决办法如下

.修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相应的ip地址或主机名

.修改/etc/cobbler/settings文件中的next_server参数的值为提供pxe服务的主机相应的ip地址

.如果当前节点可以访问互联网,执行“cobbler get-loaders”命令即可;否则,需要安装syslinux程序包,而后制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目录中

.执行“chkconfig rsync on”命令即可

.执行“openssl passwd -1 生成密码,并用其替换/etc/cobbler/settings文件中

default_password_crypted参数的值

cobbler 相关管理

.下载启动菜单:cobbler get-loaders

.管理distro ,这一步是导入光盘的所有文件,时间会比较长,根据光盘的大小决定时间长短

.管理profile ,即启动菜单

.查看profiles

.查看引导文件

.同步cobbler配置

.cobbler sync

多系统引导方案

导入多个ks文件,并将ks文件和yum源做管理

cobbler的web管理实现

.cobbler-web提供cobbler的基于web管理界面,服务包来自epel源

配置文件在/etc/httpd/conf.d/cobbler_web.conf,在httpd的配置目录下,所以要使得cobbler生效,必须重启httpd服务

.认证方式

.定义认证方法:/etc/cobbler/modules.conf,这里介绍两种验证方法认证cobbler_web用户, authn_configfile和authn_pam

基于authn_configfile模块认证

.[authentication]块中module = authn_configfile,系统默认就是authn_configfile这个验证方法

.创建其认证文件/etc/cobbler/users.digest,并添加所需的用户

#以上语句中cobbler是必须要有的,而且第一个字母c大写

#admin是新增加的文件,可以自己随意命名

.注意:添加第一个用户时,使用“-c”选项,后续添加其他用户时不要再使用,cobbler_web的realm只能为cobbler

重启cobbler服务

基于authn_pam模块认证

.更改配置文件/etc/cobbler/modules.conf里的 [authentication]块中指定module = authn_pam

.创建cobbler用户:useraddcobbler

.修改文件/etc/cobbler/users.conf,将自己创建的用户设置为管理员

[admins]

admin = "cobbleruser"其他不用更改

测试

a.安装新的linux系统

b. 通过浏览器https://cobblerserver/cobbler_web 输入用户名和密码就可以访问

安装cobbler步骤如下

1 安装包

2 根据cobbler check 提示进行修改

重启服务并同步文件

2)生成dhcp模版文件

3) 准备启动文件和和菜单风格文件

复制菜单风格文件

 /var/lib/cobbler/loaders中如果缺少一些网络启动加载程序,可以运行'cobbler get-loaders'来下载它们,或者,如果您只想处理x86 / x86_64 netbooting,则可以确保已安装 安装

了syslinux软件包的一个新版本,可以完全忽略这个消息。 该目录中的文件,如果要支持所有架构,应包括pxelinux.0,menu.c32,elilo.efi和yaboot。 “cobbler get-loaders”

命令是解决这些要求的最简单方法。

连接internet

不连internet,只复制menu.c32,pxelinux.0两个文件的话,只支持安装x86/x86_64架构的系统,所以建议还是执行cobbler get-loaders,将所需的文件都下载到 /var/lib/cobbler/loaders来。

cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders

查看启动菜单的菜单选项,命令如下

如果不需要相关菜单,可以用以下命令移除,

3 导入yum源

这一步执行完成后,会将当前的光盘文件全部拷贝到/var/www/cobbler/ks_mirror这个目录下,并且生成新的目录,目录名称自己指定,如centos7.3,这里这个目录的名字一旦设定好了之后,

后续就不要继续更改目录名,否则生成菜单文件会异常,因为名字不匹配

4 生成ks

#注意,这里的应答文件是根据yum源自动生成的,我们也可以自己生成生成ks文件,然后在做管理,把应答文件里的安装方式改成 url  --url=$tree,就会

自动去找到对应的目录,当然这里也可以直接指定对应的路径

这里的$tree 的路径可以通过以下命令查看,

cobbler  distro list 找到源配置文件,如centos73-x86_64

cobbler distro tree centos73-x86_64 就可以看到tree这个变量具体指哪个,如下

kickstart metadata             : {'tree': 'http://@@http_server@@/cblr/links/centos73-x86_64'}

注意,cobbler专门放应答文件的目录是/var/lib/cobbler/kickstarts,将新生成的ks文件拷贝到这里/var/lib/cobbler/kickstarts即可,如

cp  ks73min.cfg /var/lib/cobbler/kickstarts/

然后再将应答文件和yum源做关联

#以上命令将安装的新生成的ks文件和要对应的安装的yum源关联起来,--name要新生成的菜单项的名字,--distro指定yum源(cobbler distro list

这个命令查看当前有多少个yum源,及其名称),--kickstart指定ks文件的路径

cobbler sync

5 启用网页管理

到这里cobbler安装完成了

6 测试

a安装虚拟机,注意网卡模式选择桥接模式

b打开cobbler管理页面

https://172.18.50.73/cobbler_web

4 半自动化安装pxe环境脚本实现

这里附上自动化安装pxe环境的半自动化脚本

将菜单配置文件,dhcp配置文件,ks文件打包放在附件中,有需要可以下载查看

这些配中,需要注意的是ks的文件中,对包源路径指定,如

url --url="http://192.168.32.72/os/6i386/"

还有菜单文件中,ks路径的指定

 append initrd=6i386/initrd.img ks=http://192.168.32.72/ksdir/ks65desk.cfg

还有,dhcp分配的网络段的分配,和当前的网络是可通的

在脚本中,有几个地方需要注意

共准备了三个版本的光盘,32位的6.5版本,64位的6.9版本,和64位的7版本

挂载:/var/www/html/os/{6i386  6x86_64  7 }三个文件夹分别挂载对应的光盘,这里建议手动挂载

启动引导文件:建议手动内核和虚拟根文件到/var/lib/tftpboot{ 6i386  6x86_64  7}这三个文件夹下

ks文件,建议提前准备好,也是手动复制到/var/www/html/ksdir下

虽然脚本实现了自动化的复制,但是前提是/dev/sr0 ---> 6x86_64 ,/dev/sr1 ---> 6i386 ,/dev/sr2 ---> 7

脚本内容如下

5 小结

关于pxe和cobbler安装,两个实现的效果一样,都是自动化安装系统,而且实现原理上也基本一致,但是,由于cobbler是pxe的改良版,所有个人感觉,cobbler的安装更加方便。

文章末尾,附上的pxe安装环境,也类似实现了自动化安装pxe,自动拷贝了脚本,当用户同样是挂载三个光盘,而且挂载的路径和文章中介绍的一样,就可以实现自动化挂载,同时,需要准备了相关的ks文件,放到指定目录下时,根据脚本的提示也可以实现自动化拷贝到相关目录下。文末附件将附上脚本中的6个ks文件,dhcp配置和菜单文件的设置。

上一篇: Git基础04
下一篇: Git基础03

继续阅读