运维自动化系统部署

运维自动化之系统部署 cobbler

所谓调度器当用户访问量特别大的时候我们那单台服务器已经无法对外提供足够的服务能力,性能达不到要求这时候我们会多买几台服务器,但是用户去访问就不知该去访问哪个服务器所以这时候就需要有一个前端的调度器来分配用户访问那一个服务器。在企业对外服务的时候这些服务器会分组。外面有总的调度器在里面在分子调度器层层调度,当然为了加上访问通常我们是离不开缓存的。

anaconda tui安装程序

安装启动过程文字解析
光盘之所以能够启动启起来那就是因为这两个文件(isolinux/boot.cat)(isolinux/isolinux.bin)也具有启动功能。
在安装光盘启动的时候,光盘启动有一个菜单,这个菜单能够让用户正常安装或者进入救援模式。菜单配置文件:isolinux/isolinux.cfg
每个对应的菜单选项:
加载内核:isolinuz/vmlinuz
向内核传递参数:append initrd=initrd.img ...
所以光盘在启动的时候实际上也是加载了小的linux光盘之所以能启动起来能启动一个安装向导因为背后他也启动了一个自己的内核也启动initrd.img这样的一些文件就和操作系统启动一个意思。不过他的启动目标不是为了启动一个操作系统而是为了加载一个安装向导。但是安装向导终究是一个软件而这个软件要跑到操作系统上,所以之前就要加载linux内核。后面可以加一些不同的内核参数
menu label ^Install or upgrade an existing system 这是安装向导
kernel vmlinuz 这是需要加载的内核文件
append initrd=initrd.img 这是内核后面需要跟的内核参数
第一项菜单和第三项菜单得救援模式本质上的差别就是rescue这个内核参数
isolinux/isolinux.cfg 这个文件就是启动菜单

在安装linux得时候除了用光盘安装,也支持基于别的方式来安装
进入就救援模式的多种方法:下图

输入一个askmethod手工选择安装方式

然后输入OK他就会走网络的这个地址寻找安装包,但是这个就要依赖于事先搭建的网络共享。

装载根文件系统,并启动anaconda
默认启动GUI接口
若是显式指定使用TUI接口:向内核传递text参数即可
(1)按tab键,在后面增加text
(2)按ESC键:boot: linux text
进入字符安装过程

anaconde手工安装系统阶段
在安装过程中手工安装一个系统需要提供那些项,将来自动化安装就必须要把手工安装的那些项都给他指定号否则就会停在那,缺少一项都不行,所以就要把那些该设置的项一点不落的给他准备好。

在安装过程种必须指定的项:
1、语言要指定
2、键盘布局要指定
3、选择硬盘要指定(初始化硬盘)
4、指定主机名
5、网卡的设置需要设置成自动获取并且把网卡启用起来
6、选择时区去掉UTC这个时区同步
7、输入root口令
8、分区默认分,会自动划分逻辑卷
9、选择最小化安装
后续将实现自动化安装就必须要把以上信息告诉给安装向导,才能实现自动化安装。怎么将以上信息告诉给安装向导呢,方法就是写一个应答文件而这个应答文件就是希望把我们在安装的时候的各种设置给他写到文件里去,告诉安装向导,为了要实现自动化安装要用什么选项。但是这个应答文件虽然是一个文本文件,但是他是有要求的。
Cnetos7(6)应答文件的格式要求

生成的应答文件centos6和centos7不通用,7上的应答文件格式和6的应答文件格式不一样
生成应答文件有两种方法,还有一种方法是在安装操作系统的时候系统会将你在安装时候的整个操作设置都会生成一个应答文件放在了root账户的家目录里面并且命名为anconda-ks.cfg在这个文件实际上这个文件就是kickstart的标准格式,这文件里面存放的就是当初装系统的时候怎么做的一些设置,anaconda这个文件就是已经可以拿过来使用的kickstart文件,但是这个配置文件的格式比较复杂因此我们在通常情况下还是会使用Xmanager方式。
Centos7最小化安装Xmanager制作ks应答文件的方法 (实现自动化安装linux)
通过工具生成system-config-kickstart,不过这种工具默认没有安装,而且他的依赖包特别多所以就要安装这个工具

通过这样的图形菜单可以制作出应答文件

安装前脚本就是在安装初始化之前先跑一个脚本做初始化工作(默认不填写)
安装后脚本就是操作系统装完了自动跑一个脚本

这时候就已经将应答文件生成完了,更好的方法可以将应答文件放到网上去。或者自己搭一个http服务器

当然现在还离不开光盘但是再进入的时候敲入应答文件然后不用管了。现在做的是7的应答文件,7的应答文件一定要确保在7上用这是配套的。而且呢7的应答文件格式有问题就会导致这个应答文件无法使用但是输入ksvalidator 命令跟应答文件这是会自动检查脚本语法

应答文件的调用

但是这时候这台新的机器没有ip地址所以他会去两个地方获取ip
1、加入有http服务的话他就回去http服务获取ip
2、如果没有的话就需要手工去配地址
再将自己写的应答文件
如果没有httpd服务,就会卡在那手动添加httpd服务。添加好了就回车让他自己安装

U盘的自动安装linux使u盘代替光盘来实现自动化安装

U盘实现Centos7最小化(mini)应答文件自动安装步骤

当然这个写完以后未来还可以写入多个菜单以制启动各种linux系统服务包括(centos6 ubantu)。
但是6和7的内核版本不一样,想要同时实现6和7 在同一个菜单内就得拷两套内核。所以这个配置文件里就得分别创建不同的操作系统内核
同时实现6和7的自动安装放到一个配置文件里
进入到/data/myiso/isolinux这个目录里

当然拷贝过来名字不能一样,所以得各自创建一个独立得文件夹存放不同的两个内核和其他配置文件

但是由于6没有应答文件,所以现在就要给6创建一个应答文件

:因为不更改的话http服务页面打不开。所以权限属性很重要。
修改centso6的vim/var/www/html/ksdir ks6_desktop.cfg应答文件:↓↓

修改好了之后再进到vim /data/myiso/isolinux/isolinux.cfg这个配置文件添加开机启动菜单

现在配置文件都做完了之后就准备把整个目录都刻到U盘里去。所以现在需要先制作成iso文件
这串命令可以将整个目录刻成一个iso文件:↓↓
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/

然后再把boot.iso这个文件刻到 U盘里

+
做完之后再试试现在这个U盘是否能正常启动,先将制作这个U盘的虚拟机关机,然后将U盘拔出

在找一个新的虚拟机插上一个新的硬盘。

于此同时按下F10退出保存
DHCP服务

DHCP逻辑
在DHCP服务器上DHCP只是分配了一个地址段,当一个主机得到了这个地址段的ip之后是有使用时间租期的一般租期为1天。当这个主机不再使用了关机了,然后一天的时间到了而租期也就到期了,这个主机使用的地址就会立即回收。回收之后这个地址就可以再次给别人使用。所有无形中就实现了用较少的ip给较多的计算机来使用。
DHCP工作过程
DHCP工作过程是基于UDP协议实现的,UDP协议中服务器走67端口客户端走68端口。
如果要利用DHCP进行获取地址要确保防火墙打开67 ,68端口当然我们现在已经将防火墙关了,加入开始的话一定别忘了打开67,68端口。DHCP的工作过程涉及到了八个报文

DHCP报文
首先用户在没有拿到地址之前会向网络发出DISCOVER消息,这个DISCOVER消息就是声明我现在没有网络地址,请问网络中谁是DHCP服务器。这个DISCOVER消息是基于广播机制的所以网络中很多机器都收到了这个请求了。收到请求之后服务器一看你需要IP我这正好有就是个DHCP服务器,那我就找一个我自己的IP地址没有人使用的IP地址分一个给用户。这个阶段就叫做OFFER。分配给了用户以后,当客户端收到了这个地址以后,不一定就一定选择这个地址因为网络中有可能有多个服务器。他就会选择一个回应给服务器,我选择了谁谁谁的服务器给我的地址,自然别人一看没有要我的地址,将来DHCP就可以把那个没有要的地址回收。给别的计算机分配了。假如服务器一看用户要了自己的地址了。最终就要确认了这个阶段就是ACKNOWLEDGE阶段。经过这4个过程客户端就从服务器上得到了地址。这是通常我们会看到的4个过程,这4个过程是比较正常的状态。
当然也可能有其他的DHCP的特殊报文比方说NAK,DECLINE,RELEASE,INFORM等等。NAK:服务器发个客户端的说我这边没有合适的地址给你,你想申请地址我着没有
DECLINE:客户端给服务器端的,说DHCP你给我的地址结果这个地址在网络中有人占用了。比如有人静态配置这个地址。和我拿到的地址冲突了。
RELEASE(释放):客户端向服务器端发出了请求,你给我的地址我不想要,我想放弃这个地址。
INFORM:客户端给服务器端发的。说客户端我希望得到更详细的信息。

                         续租IP地址
DHCP续租
    IP租约期限达到50%时,DHCP客户端会请求更新IP地址租约
    IP租约期限达到87.5%时,还没收到服务器响应,会申请重新绑定IP
    当IP地址分配的时候没有指定租期时,默认为一天。

IP地址释放
​​​​​​IP地址释放
如果IP地址租约到期还没有收到服务器相应,客户端停止使用此IP地址
如果DHCP客户端不在使用分配的IP地址,也可以主动向DHCP服务器发送DHCP

renew时间为有效时间:这个时间就为租期。租期决定了这个地址什么时候会过期,获取这个地址之后正常情况下如果没有续约这个地址到renew这个时间就会过期
expire为过期时间:这个时间并不是北京时间他是UTC时间,也就是说应该把现在的时间转换为UTC时间这和他们进行计算。

这些都是广播
Linux如何搭建DHCP服务配置

DHCP服务和其他服务类似都是需要安装软件包的。
如何实现跨网段的DHCP服务器地址分配有几种方式
第一种:可以用特殊的路由器 :RFC 1542
RFC1542这种路由器的特点是允许跟dhcp的这种特定的广播通过,如果我们的路由器是符合RFC1542这种标准的他是允许DHCP这种包文通过的,虽然DHCP是个广播但是他允许过,只是允许DHCP的广播过别的广播过不去。但是这种路由器要求有点高并不是所有路由器都能满足这种要求,RFC叫做本地请求助解。
第二种方式:
我们可以在没有DHCP服务的这一端给他准备一个叫DHCP的中继代理,叫做DHCPRELAY中继代理,这个RELAY他事先配好了,知道网络中谁是DHCP服务器假设这个服务器我们用A表示,这个中继代理他平时在网络中监听。她发现有一个DHCP的客户端向网络中发广播,这个RELAY收到广播之后一看有人向网络中申请地址,我虽然不是DHCP服务器但是我是中继代理,RELAY会收集这种DHCP的申请,把你申请的地址收集之后帮DHCP转发过去,这个转发是单播不是广播,它可以把用户的申请转发过来,对A说有用户申请地址。因为A上面有很多DHCP服务器的配置地址池的,A会给RELAY一个地址单播再回来然后RELAY再把地址转交给用户。这个过程是单播所以可以轻松穿过路由器。但是中继代理事先就要把DCHP服务器的地址配置上不然RELAY不知道谁是服务器。然后再点对点的转过来,这就是中继代理。

为了解决单点失败问题至少的准备两组DHCP服务器互相备份下图。

实验通过DHCP服务让用户得到IP地址
要做这个实验一定要清楚:因为DHCP分配地址是基于广播的。而且DHCP不会选择性的分配地址谁先向DHCP要地址,就先给谁所以再配置的DHCP实验的时候,一定不要桥接。所以做这个实验的时候一定要一个独立网段
要做这个实验之前先要把找一个没有人用的网段

等会之实验的时候只有这个VNnet17网路里的主机才能获取我自己配置的DHCPip,等会还要有个一个客户端,客户端要实现获取到DHCP服务就必须和服务端一个网段

实验已准备完

将充当服务器的主机改为dhcp自动获取

做dhcp服务器是静态ip,然后再给别人分配动态地址

将来我们希望另一台客户端的主机也在VMnet17这个网段获取地址,所以和服务端是一个网段的,最终应该配置的范围也是10网段得这个范围。
Dhcp安装

Dhcp 详情

Dhcp 各个重要文件的介绍

Dhcp服务的启动
一般的服务刚装上就能启动,但是dhcp这个服务比较特殊,因为在dhcp配置文件里面有一些缺失的配置项。原因就是dhcp的配置文件有问题

作为一个dhcp服务器来讲要个网段中的主机分配地址,就要给dhcp服务指定一个ip地址范围,那个网段到那个网段,意思就是必须要给自己所在网卡指定一个网段,不然服务器不来,既然有两张网卡只要一个ip网段就行

修改完都需重启服务

在去客户端重启网络,结果发现依旧拿不到地址

但是这时候客户端依旧拿不到dhcp地址所以还得进一步修改配置文件

设置默认续约时间

查看这个目录可以看到那个主机在我这获取了ip

如何让客户端不仅得到ip还有网关、DNS和其他信息:下图修改配置文件
这个位置除了指定ip和网段还能然他获取其他信息
option routers:所谓的网关
option domain-name-servers :DNS地址
option domain-name "magedu.org”; 域后缀
由此我们通过这几个设置让DHCP客户端得到地址的同时还得到网关 DNS地址和域后缀

通过dhcp实现自动化安装
Dhcp在自动化安装这个过程中承担的是让我们客户端在没有装系统的情况下从服务器获取一个IP,这是前提条件必须的让客户端具有网络功能,但是光有网络功能没有用因为我们从网络中得到一个IP,也不足以让计算机启动起来,我只有启动起来才能激活anaconda-ks.cfg安装向导引导文件。因为anaconda-ks.cfg这个安装向导启动文件才能实现后续安装。
其它配置选项:
filename: 指明引导文件名称
next-server:提供引导文件的服务器IP地址
u示例:
filename "pxelinux.0";
next-server 192.168.1.100;
u检查语法
service dhcpd configtest
接下来让客户端获取地址之后还要在获取一些东西其中两项很关键:
1:pxelinux.0
2:next-server
这两项和自动安装相关,要想实现自动化安装就要让他去服务器上下载关键配置文件。而bootlorc就要pxelinux.0这个文件提供的,而这个文件需要事先的放到一个服务器上,让客户端从服务器上下载下来。
next-server:后面跟TFTP服务器IP。这个服务器呢就是所谓的TFTP服务器。TFTP服务器类似于FTP服务器,能够让我们从TFTP服务器上下载文件,下载完文件之后继而就可以将pxelinux.0文件下载下来而这个文件就起到了bootlocrm的作用,把bootlocrm下载好之后就可以去服务器上下载内核下载initrd.img 。进而加载菜单加载后续的自动化安装向导。所以需要配合这两项
next-server TFTP(TFTP服务器地址)

TFTP服务能够让我们从服务器上下载资源资源上载资源,但是他的功能不像FTP功能这么强大,TFTP就是简化般的FTP服务TFTP也能够提供基本的文件共享功能。

搭建TFTP服务
TFTP能够实现简单的服务器搭建能够在TFTP上面下载一些小文件,tftp也是一个非独立服务
1、安装tftp软件centos6的安装
Centos7 上的安装:↓↓

Centos6 上的安装

/usr/sbin/in.tftpd 这是他的主程序:↓

然后启动tftp服务:↓↓

/var/lib/ftfpboot这个目录存放的就是提供下载的共享资源

PXE结合DHCP和tftp实现自动化安装linux

PXE工作原理及实验
这个流程需要我们事先准备多个服务器,第一个dhcp服务器第二个tftp服务器,大家都知道dhcp是可以分配ip的tftp是可以共享文件的可以让用户连接到tftp服务器下载文件,有了这个我们需要事先将这两个服务器搭好,搭好以后我们这台客户端的机器假设是一台想装linux的电脑,这台电脑把电源一打开他在启动的时候会自动的向网络中发请求,需要有人给我分配地址,这时候客户端的主机就会发出一个DHCP的请求报文,而我们网络中正好就有dhcp服务器就会把地址给客户端,同时不仅把IP地址给客户端重要的是他还分配了TFTP给客户端,这时候客户端就会去寻找tftp服务器。因为客户端现在还要需要将linux启动起来需要内核文件和加载菜单启动项而客户端现在是一个新主机什么都没有,所以他需要向通过dhcp服务器获取到tftp服务器的地址,当客户端知道tftp的地址之后,就会向tftp服务器发请求说,tftp服务器现在我希望能够从你这把bootlorm的文件下载下载了我好启动,这时候tftp就可以把他事先存放的一个充当bootlorm功能的文件下载下来,这个文件默认就是pxelinux.0 。
tftp服务器的ip地址以及从tftp服务器上下载的pxelinux.0文件。都需要通过dhcp服务器向客户端主机告知,所以我们接下来还要把刚才说的没有做完的事继续来完善:
PEX自动化安装linux操作系统步骤:
如何通过dhcp服务器告诉客户端下载文件及连接tftp服务器ip地址:
1、下载dhcp服务软件包

2、服务端主机下载tftp服务软件包

3、客户端主机下载tftp服务软件包

4、修改dhcp服务配置文件内容
进入dhcp服务配置文件,修改dhcp网段机添加tftp服务端主机得dhcp网络ip地址和pxelinux.0文件夹

在这给他加上tftp服务器的dhcp服务的IP地址。现在我要连接到tftp服务器而tftp服务器的ip就是10.0.0.1
现在客户端通过dhcp服务链接过来又连接上了tftp服务器,但是这时候要在tftp服务器上的/var/lib/tftpboot这个文件夹去下载pxelinux.0。
5、创建pxelinux.0文件目录:

命令:yum search查找软件包。pxelinux软件包,需要下载syslinux.x86_64因为pxelinux.0这个文件需要这个软件包来生成

搭建了DHCP
6、实现装centos7最小化安装操作系统
光启动没有用。因为安装linux系统的还要获取相关的内核配置文件,以及在获取完之后还希望弹出一个安装操作系统的菜单,有了菜单才能选择菜单到底装那个,总之DHCP的工作已经做完了,而tftp的工作已经可以实现文件共享了。不过呢光通过TFTP单单获取pxelinux.0这个文件是不够的,要额外的把其他相关的内核及启动文件都复制过来。

现在装6的操作系统就要将centos6的内核相关文件传到tftp服务器端的/var/lib/tftpboot这个目录里
要先实现自动安装这个功能必须要求网卡必须有PXE功能

现在在/var/lib/tftpboot这个文件下创建一个文件夹,建起来之后将菜单文件放到里面去,在将菜单目录复制到pxelinux.cfg/default这目录去

因为我们就装一个系统用不到这么花哨的背景图片,所以就希望用这种简单朴素的风格图片。
就用刚才我们安装syslinux的时候的图片

当然现在要使用这个菜单的背景图片了所以现在就要把刚才写的default文件就要写清楚

就把这个配文件没用的东西都可以删了,然后将大标题改为自己想写的格式

在tftp的服务器端上配置应答文件。应答文件也得配合http服务所以也得打一个http服务

然后再将http服务启动起来,进入到/var/www/html目录因为这个目录就是http服务下载文件的目录,再给ks应答文件创建一个文件夹,将上面制作的ks应答文件放到这个目录下。

然后还要打一个yum源,让这台服务器的机器什么都干了,tftp服务也做,dhcp服务也做,http服务也做都是这一台机器做然后还要让这台机器搭一个yum源。在/var/www/html搭建一个yum源,这是http服务的yum源目录格式

再将7的光盘给他挂上去

当然这是临时挂载,如果想开机自动挂载就要写到vim /etc/fstab配置文件里

这是iso9660格式,工作中一般不是光盘而是将整个iso文件拷到目录里,然后将iso文件挂出来。等会还要装6呢所以现在顺便就把6的挂载也搞定吧
然后再将整个6的第一张光盘拖到tftp服务器上去

再开一个终端查看该文件

再把这个文件名贴到vim /etc/fstab配置文件里

因为这个文件在root下而且他要挂载到/var/www/html/centos/6/os/x86_64/这个目录里保存退出

查看源码源地址
将7的yum源写到ks配置文件里。

再将6的应答配置文件加上搭建好的yum源

设置菜单启动项添加ks应答文件
到此就搞得差不多了,接下来回到启动菜单的配置文件里vim /var/lib/tftpboot/pxelinux.cfg/default

现在我们知道通过菜单要找vmlinuz(内核文件)和initrd启动文件。但是这两个文件现在没有的话得去拷贝一份。所以就从这个 /misc/cd/isolinux/{vmlinuz,initrd.img} .拷贝到当前目录下。以为tftpboot这个目录是tfpt服务可以提供用户下载得目录

将/var/lib/tftpboot/pxelinux.cfg/pxelinux.cfg里得default默认菜单配置文件修改成下图这样:↓↓

接下来就可以拿一个电脑来实现安装,如果这个电脑上的功能支持PXE就可以正常安装了
找新电脑安装过程这个新电脑要求和我们得DHCP服务要在一个网段
创建一个新虚拟机:

Cobbler 工作流程

cobbler简介

Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
cobbler集成服务

PXE服务支持
DHCP服务管理
DNS服务管理(可选bind,dnsmasq)
电源管理
Kickstart服务支持
YUM仓库管理
TFTP(PXE启动时需要)
Apache(提供kickstart的安装源,并提供定制化的kickstart配置)

cobbler配置文件详解cobbler配置文件目录在/etc/cobbler
配置文件 作用
/etc/cobbler/settings cobbler 主配置文件
/etc/cobbler/iso/ iso模板配置文件
/etc/cobbler/pxe pxe模板配置文件
/etc/cobbler/power 电源配置文件
/etc/cobbler/user.conf web服务授权配置文件
/etc/cobbler/users.digest web访问的用户名密码配置文件
/etc/cobbler/dhcp.template dhcp服务器的的配置模板
/etc/cobbler/dnsmasq.template dns服务器的配置模板
/etc/cobbler/tftpd.template tftp服务的配置模板
/etc/cobbler/modules.conf 模块的配置文件

cobbler数据目录
目录 作用
/var/lib/cobbler/config/ 用于存放distros,system,profiles等信息配置文件
/var/lib/cobbler/triggers/ 用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstart/ 默认存放kickstart文件
/var/lib/cobbler/loaders/ 存放各种引导程序以及镜像目录
/var/www/cobbler/ks_mirror/ 导入的发行版系统的所有数据
/var/www/cobbler/images/ 导入发行版的kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/ yum仓库存储目录

cobbler日志文件
日志文件路径 说明
/var/log/cobbler/installing 客户端安装日志
/var/log/cobbler/cobbler.log cobbler日志

cobbler命令详解

cobbler check //核对当前设置是否有问题
cobbler list //列出所有的cobbler元素
cobbler report //列出元素的详细信息
cobbler sync //同步配置到数据目录,更改配置最好都要执行下
cobbler reposync //同步yum仓库
cobbler distro //查看导入的发行版系统信息
cobbler system //查看添加的系统信息
cobbler profile //查看配置信息

/etc/cobbler/settings这个文件会题cobbler做很多事这是一个配置文件
找到这行,替换为当前主机的ip

在搜索next_server修改为当前IP

在使用这条命令下载必要的yum源

在执行cobbler sync

生成加密口令

在打开配置文件/etc/cobbler/settings找到这一行就该口令

打开配置文件找到这一行自动生成DHCP

在重启cobbler服务

找到dhcp模板配置文件修改网络

修改这几行和当前主机ip一样

猜你喜欢

转载自blog.51cto.com/14451140/2436649