kickstart自动化安装

第1章 kickstart

实现原理:将手动安装的所有详细步骤记录到一个文件中,然后有一种软件通过

1.1 什么是PXE?

PXE是预启动环境,通过网络接口启动计算机,不依赖本地存储设备,(如硬盘)或者本地已安装的操作系统,C/S工模式,PXE客户端会调用网际协议-IP,用户数据报协议-UDP,动态主机设定协议-DHCP,小型文件传输协议-TFTP

1.2 PXE+kickstart无人值守安装操作系统完整过程:

1.      PXE客户端向DHCP服务器发送UDP广播请求ip地址

2.      DHCP服务端提供相应信息

这个响应信息包含客户端分配的IP地址,pxelinux启动程序(TFTP服务器的)位置,以及配置文件

3.      PXE客户端向TFTP服务器请求下载启动文件

客户端收到服务端的回应后,会回应一个帧,以请求传送启动所需要的文件,这些启动文件包括:pxelinux.0 pxelinux.cfg/default  vmlinuz  initrd.img等文件

4.      TFTP响应并传送文件

当服务器端收到客户端的请求后,他们之间将有更多信息在客户端与服务端之间作应答,用以决定启动参数,bttoromtftp通讯协议从boot server下载启动安装程序所必须的文件,default下载完成后,会根据该文件中定义的引导顺序,启动安装

5.      PXEhttp服务器请求自动应答文件

客户端通过pxrlinux.cfg/default文件成功的引导linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装系统,如果是网络安装,则会在这个时候初始化网络,并定位安装位置,接着会读取default文件中指定的自动应答文件,ks,cfg所在位置,根据该文件位置请求下载该文件

6.      客户端安装操作系统

ks.cfg文件下载回来后,通过该文件找到os server并按照指定该我就按的配置请求下载安装过程中需要的软件包,os server和客户端建立连接后将开始传输软件包

                                          Kickstart_第1张图片

第2章 批量装机软件介绍:

2.1 kickstart:

是一种无人值守的安装方式,工作原理是在安装过程中记录人工干预填写的各种参数,并生成以个名为ks.cfg的文件,如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适参数,就采用,如果没有找到,便会弹出对话框提示手动安装,所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载,ks.cfg文件,

2.2 cobbler:

集中和简化了通过网络安装操作系统需要使用到的DHCPTFTPDNS服务的配置,cobbler不仅有一个命令行界面,还有web界面,大大降低了使用者的入门水平

第3章 kickstart部署流程:

3.1 安装dhcp服务:

[root@centos-7 ~]# yum install  -y dhcp

3.1.1 修改配置文件:

cat >>/etc/dhcp/dhcpd.conf<

subnet 172.16.1.0 netmask 255.255.255.0 {  

range 172.16.1.100 172.16.1.199;      可以分配的其实ip和结束ip

option subnet-mask 255.255.255.0;     设定子网掩码

default-lease-time 21600;           

max-lease-time 43200;

next-server 172.16.1.201;             告知客户端tftp服务器的ip

filename "/pxelinux.0";               告知客户端从tftp服务端的根目录下载pxelinux.0文件

}

EOF

3.1.2 启动dhcp服务:

[root@centos-7 ~]# systemctl  start dhcpd

[root@centos-7 ~]# ss -lntup |grep 67

udp    UNCONN     0      0         *:67                    *:*                   users:(("dhcpd",pid=15565,fd=7))                            查看67端口存在即可

3.2 安装tftp服务并启动

[root@centos-7 ~]# yum -y install tftp-server

3.2.1 启动tftp服务

[root@centos-7 ~]# systemctl start tftp.socket

3.3 安装syslinux

syslinux是一个功能强大的引导加载程序,而且兼容各种介质,它还是一个小型的linxu操作系统个,它的目的是简化首次安装linux时间,并建立修护或其他特殊用途的启动盘,如果没有找到pxelinux.0这个文件,可以安装一下

[root@centos-7 ~]# yum -y install syslinux

3.3.1 复制pxelinux.0启动文件

[root@centos-7 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@centos-7 ~]# ll /var/lib/tftpboot/

total 28

-rw-r--r-- 1 root root 26764 Mar 12 14:56 pxelinux.0

3.3.2 创建镜像存放的站点目录

 [root@centos-7 ~]# mkdir -p /var/www/html/CentOS7

3.3.3 挂载镜像到站点目录

[root@centos-7 ~]# mount /dev/cdrom /var/www/html/CentOS7

复制启动菜单程序文件

[root@centos-7 ~]# cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/

3.3.4 创建一个目录,来存放客户端的配置文件

[root@centos-7 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@centos-7 ~]# cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

3.4 安装配置http服务

[root@centos-7 ~]# yum -y install httpd

3.4.1 启动http服务

[root@centos-7 ~]# systemctl start httpd.service

3.4.2 修改default文件,注释64行,并添加如下:

[root@centos-7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/

3.5 配置ks文件:ks即应答文件,用来指定系统安装中一些参数

[root@Cobbler ~]# tar xfP ks_config_for_CentOS7.tar_\(1\).gz

[root@centos-7 ~]# vim /var/www/html/ks_config/CentOS7-ks.cfg

[root@centos-7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

3.5.1 ks文件内容:

#Kickstart Configurator for CentOS 7.x

lang en_US

keyboard us

timezone Asia/Shanghai

rootpw 123456

text

install

url --url=http://172.16.1.201/CentOS-7.2/

bootloader --location=mbr

zerombr

clearpart --all --initlabel

part /boot --fstype xfs --size 1024 --ondisk sda

part swap --size 1024 --ondisk sda

part / --fstype xfs --size 1 --grow --ondisk sda

auth  --useshadow  --enablemd5

network --bootproto=static --device=eth0 --onboot=on --ip=10.0.0.52 --netmask=255.255.255.0 --gateway=10.0.0.254 --nameserver=10.0.0.254 --hostname=CentOS111

network --bootproto=static --device=eth1 --onboot=on --ip=172.16.1.52 --netmask=255.255.255.0

reboot

firewall --disabled

selinux --disabled

skipx

 

%packages

@base

@compat-libraries

@debugging

@development

tree

nmap

sysstat

lrzsz

dos2unix

telnet

%end