kickstart自动部署centos

前端之家收集整理的这篇文章主要介绍了kickstart自动部署centos前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

kickstart自动部署centos

工作中,我们有时候需要安装几十上百台服务器,这种情况下用u盘或者光驱逐台安装,太花时间与人力,显然不现实,所以应该选择自动化部署操作系统的方式,自动化部署操作系统的工具有很多,这里我用的是kickstart这个工具。


kickstart原理:

kickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。


kickstart工作流程:

客户机先从网络上启动,执行pxe程序(PXE的作用就像是在网卡ROM里的一个小小的操作系统,它把自己的网络引导功能提供给系统的BIOS,就可以通过网络启动linux),再向dhcp服务器请求IP地址,获得到dhcp服务器发来的IP地址之后会请求引导文件pxelinux.0),服务器发送引导文件;客户机引导成功之后,再向服务器请求配置文件(pxelinux.cfg),服务器发送配置文件,再请求内核文件(vmlinuz),发送内核文件,请求传送根文件系统(initrd.img),然后内核启动,请求ks文件,安装程序会根据ks.cfg中设置的选项来安装系统。

工作流程图:

wKioL1jlCXrRgU8lAACRmc_7aeA800.png

实验


配置dhcp服务

[root@kickstartserver ~]# yum -y install dhcp

[root@kickstartserver ~]# vi /etc/dhcp/dhcpd.conf

subnet 192.168.23.0 netmask 255.255.255.0

{

range 192.168.23.230 192.168.23.250;

option broadcast-address 192.168.23.255;

option routers 192.168.23.254;

default-lease-time 3600;

max-lease-time 7200;

}

[root@kickstartserver ~]# systemctl restart dhcpd

[root@kickstartserver ~]# systemctl enable dhcpd

[root@kickstartserver ~]# firewall-cmd --permanent --add-service=dhcp

success

[root@kickstartserver ~]# firewall-cmd --reload

进入客户端BISO,设置从网络引导,然后开机,查看dhcp服务的日志

[root@kickstartserver ~]# systemctl status dhcpd -l

dhcpd.service - DHCPv4 Server Daemon

Loaded: loaded(/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)

Active: active (running) sinceMon 2017-4-05 23:01:23 EDT; 2min 22s ago

Docs: man:dhcpd(8)

man:dhcpd.conf(5)

Main PID: 4361 (dhcpd)

Status: "Dispatchingpackets..."

CGroup:/system.slice/dhcpd.service

└─4361 /usr/sbin/dhcpd -f -cf/etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid

Apr 05 23:01:23 kickstartserver.example.com dhcpd[4361]: Sendingon Socket/fallback/fallback-net

Apr 05 23:01:23 kickstartserver.example.com systemd[1]: Started DHCPv4Server Daemon.

Apr 05 23:03:23 kickstartserver.example.com dhcpd[4361]: DHCPDISCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:24 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:25 kickstartserver.example.com dhcpd[4361]: DHCPDISCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:25 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:29 kickstartserver.example.com dhcpd[4361]: DHCPDISCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:29 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:37 kickstartserver.example.com dhcpd[4361]: DHCPDISCOVERfrom 00:0c:29:83:db:a3 via eno16777736

Apr 05 23:03:37 kickstartserver.example.com dhcpd[4361]: DHCPOFFER on192.168.23.230 to 00:0c:29:83:db:a3 via eno16777736

#可以看到客户机从服务端申请IP的过程


查看客户端开机引导界面,查看报错

wKioL1jlC5HAOQNsAAAEa62-afM179.png

#客户机已经获取IP地址,但是没有获取到引导文件pxelinux.0,为了让客户机获取到这个文件,需要搭建tftp服务,并且要修改dhcp服务器的配置文件,在dhcp服务的配置文件中指定tftp服务器的地址和引导文件名称

ps:由于pxe的限制性,只能把引导文件放在tftp

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

[root@kickstartserver ~]# vi /etc/xinetd.d/tftp

service tftp

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot #tftp服务的默认目录

disable = no #yes改成no

per_source = 11

cps = 100 2

flags = IPv4

[root@kickstartserver ~]# yum -y install xinetd

[root@kickstartserver ~]# systemctl restart xinetd

[root@kickstartserver ~]# lsof -i:69

COMMAND PID USER FDTYPE DEVICE SIZE/OFF NODE NAME

xinetd 5171 root 5uIPv4 61272 0t0UDP *:tftp #UDP69端口在监听,说明tftp服务正常运行

next-server192.168.23.134; #tftp服务器的地址

filename"pxelinux.0"; #引导文件名称

[root@kickstartserver ~]# setenforce 0

[root@kickstartserver ~]# firewall-cmd --permanent --add-service=tftp

把引导文件pxelinux.0放置在tftp默认目录

[root@kickstartserver ~]# yum -y install syslinux

ps:syslinux是一个功能强大的引导加载程序

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

[root@kickstartserver ~]# systemctl restart xinetd

查看客户端开机引导界面,查看报错

wKioL1jlC8mxCRI9AAAFWZ0thGk870.png

#客户机已经成功引导,但是没有获取配置文件isolinux.cfg(用来指定内核文件在哪里),把isolinux.cfg文件放在/var/lib/tftpboot/pxelinux.cfg目录下并命名为default

[root@kickstartserver~]#mount /dev/sr0 /mnt

[root@kickstartserver~]#mkdir /var/lib/tftpboot/pxelinux.cfg

[root@kickstartserver~]#cp/mnt/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

[root@kickstartserver~]# systemctl restart xinetd.service

查看客户端开机引导界面,查看报错

wKiom1jlC-uCbfdoAAAG8p_81qw156.png

#系统已经找到配置文件,但是找不到窗口模块,把窗口模块放置在tftp默认目录下

[root@kickstartserver~]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/

wKiom1jlDCLyBqeBAAAOwLV9T-0996.png

#系统已经成功引导,也找到了配置文件和窗口模块,但是并没有找到内核vmlinuz,所在在此处选择第一项,无法进入,把内核拷贝到[root@kickstartserver~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/



wKiom1jl9a_TN9BRAAAumv0TdSM929.jpg

#启动客户机,报找不到驱动文件

[root@kickstartserver~]#cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/




wKiom1jl-LTDODDDAAChrbKCVZY037.jpg

#找不到安装源


ftp服务,用ftp服务来搭建安装源

[root@kickstartserver~]# yum -y install *ftp*

[root@kickstartserver~]# systemctl enable vsftpd

[root@kickstartserver~]# systemctl restart vsftpd

[root@kickstartserver~]# firewall-cmd --permanent --add-service=ftp

[root@kickstartserver~]# firewall-cmd --reload

[root@kickstartserver~]# mkdir /var/ftp/pub/iso

[root@kickstartserver~]# umount /mnt

[root@kickstartserver~]#mount /dev/sr0 /var/ftp/pub/iso


[root@kickstartserver~]# vi /var/lib/tftpboot/pxelinux.cfg/default

label linux

menu label ^Install CentOS 7

kernel vmlinuz

append initrd=initrd.imginst.stage2=ftp://192.168.23.134/pub/iso quiet

生成ks.cfg文件

[root@kickstartserver~]#yum -y install *kickstart*

[root@kickstartserver~]#system-config-kickstart #需要图形化界面的支持,用图形化界面生成ks.cfg文件,很简单,这里略过。

[root@kickstartserver~]#cp ks.cfg /var/ftp/pub/

[root@kickstartserver~]#vi /var/lib/tftpboot/pxelinux.cfg/default

append initrd=initrd.imginst.stage2=ftp://192.168.23.134/pub/iso quiet ks=ftp://192.168.23.134/pub/ks.cfg


[root@kickstartserver~]systemctl restart xinetd.service

[root@kickstartserver~]systemctl restart vsftpd.service

开启客户端,这时候便会开始自动安装

wKioL1jmEebw3DaOAADap2bgnNk556.jpg

如有纰漏,欢迎指正。

猜你在找的CentOS相关文章