kickstart自动部署centos

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中设置的选项来安装系统。

 

工作流程图:

技术分享

 

实验


配置dhcp服务

[[email protected] ~]# yum -y install dhcp  

[[email protected] ~]# 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;

}

[[email protected] ~]# systemctl restart dhcpd

[[email protected] ~]# systemctl enable dhcpd

[[email protected] ~]# firewall-cmd --permanent --add-service=dhcp

success

[[email protected] ~]# firewall-cmd --reload

 

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

[[email protected] ~]# 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的过程


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

技术分享

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

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

[[email protected] ~]# yum -y install tftp-server

[[email protected] ~]# 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

}

[[email protected] ~]# yum -y install xinetd

[[email protected] ~]# systemctl restart xinetd  

[[email protected] ~]# lsof -i:69  

COMMAND  PID USER   FD  TYPE DEVICE SIZE/OFF NODE NAME

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

[[email protected] ~]# vi /etc/dhcp/dhcpd.conf

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

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

[[email protected] ~]# systemctl restart dhcpd

[[email protected] ~]# setenforce 0

[[email protected] ~]# firewall-cmd --permanent --add-service=tftp

success

[[email protected] ~]# firewall-cmd --reload

 

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

[[email protected] ~]# yum -y install syslinux

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

[[email protected] ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

[[email protected] ~]# systemctl restart xinetd

 

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

技术分享

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

[[email protected]~]#mount /dev/sr0  /mnt

[[email protected]~]#mkdir /var/lib/tftpboot/pxelinux.cfg

[[email protected]~]#cp/mnt/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default

[[email protected]rtserver~]# systemctl restart xinetd.service

 

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

技术分享

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

[[email protected]~]# cp /mnt/isolinux/vesamenu.c32   /var/lib/tftpboot/

 

技术分享

#系统已经成功引导,也找到了配置文件和窗口模块,但是并没有找到内核vmlinuz,所在在此处选择第一项,无法进入,把内核拷贝到tftp默认目录

[[email protected]~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/



技术分享

#启动客户机,报找不到ramdisk映像

[[email protected]~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/




技术分享

#找不到安装源


 

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

[[email protected]~]# yum -y install *ftp*

[[email protected]~]# systemctl enable vsftpd

[[email protected]~]# systemctl restart vsftpd

[[email protected]~]# firewall-cmd --permanent --add-service=ftp

success

[[email protected]~]# firewall-cmd --reload

[[email protected]~]# mkdir /var/ftp/pub/iso

[[email protected]~]# umount /mnt

[[email protected]~]# mount /dev/sr0 /var/ftp/pub/iso


[[email protected]~]# 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文件

[[email protected]~]#yum -y install *kickstart*

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

[[email protected]~]#cp ks.cfg /var/ftp/pub/

[[email protected]~]#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=ftp://192.168.23.134/pub/ks.cfg


[[email protected]~]systemctl restart xinetd.service

[[email protected]~]systemctl restart vsftpd.service

 

 

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

技术分享


 

如有纰漏,欢迎指正。

 

 

 

 


本文出自 “开源精神 源于分享” 博客,请务必保留此出处http://lidaxia.blog.51cto.com/11588738/1913564

以上是关于kickstart自动部署centos的主要内容,如果未能解决你的问题,请参考以下文章

KICKSTART自动部署centos7系统

kickstart介绍与部署

Linux系统中Kickstart+HTTP+DHCP+TFTP全自动批量安装部署

kickstart+DHCP+NFS+TFTP+PXE 全自动化部署Linux系统

Centos7 实战Kickstart 批量系统部署

kickstart自动化安装--tftp+nfs+dhcp