Kickstart批量安装centos7

1、安装PEX所需服务
dhcp:                        分配给客户端提供的IP地址;
tftp-server:          tftp服务器端, 提供系统安装所需文件;
xinetd:                 tftp服务超级守护进程, 用于唤醒tftp服务;
httpd:                  基于http服务提供安装源;
syslinux:               提供pxelinux.0文件, 此文件用于引导系统, 相当于bootloader;
2、安装所需软件包
yum  install  httpd   httpd-devel   dhcp*  tftp-server  xinetd -y
3、配置tftp服务
将/etc/xinetd.d/tftp文件中的 disable = yes改成disable = no即可,基于sed命令也可以实现
sed  -i  ‘/disable/s/yes/no/g’/etc/xinetd.d/tftp
TFTP服务是使用xinetd服务程序来管理的。xinetd服务可以用来管理多种轻量级    的网络服务,而且具有强大的日志功能。
要实现远程安装系统,需要在TFTPBOOT目录指定相关PXE内核模块及相关参数,配置步骤如下:
内核文件:vmlinuz initrd.img
引导菜单配置文件: isolinux.cfg
系统自带的两种窗口模块之一:vesamenu.c32
1)mount     /dev/cdrom    /mnt/cdrom
2)yum  install   syslinux   syslinux-devel   -y          #安装syslinux必备文件
3)mkdir -p /var/lib/tftpboot/pxelinux.cfg/
     cp /mnt/cdrom/isolinux/isolinux.cfg   /var/lib/tftpboot/pxelinux.cfg/default
     cp /mnt/cdrom/isolinux/vesamenu.c32   /var/lib/tftpboot/
     cp /mnt/cdrom/images/pxeboot/vmlinuz   /var/lib/tftpboot/
     cp /mnt/cdrom/images/pxeboot/initrd.img   /var/lib/tftpboot/
     cp /usr/share/syslinux/pxelinux.0    /var/lib/tftpboot/ 
     chmod  644  /var/lib/tftpboot/pxelinux.cfg/default    
配置TFTPBOOT引导文件default
default vesamenu.c32
timeout 30
display boot.msg
menu clear
menu background splash.png
menu title CentOS Linux 7
label linux
  menu label ^Install CentOS Linux 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.repo=http://10.0.0.6/centos7 quiet ks=http://10.0.0.6/ks.cfg
label check
  menu label Test this ^media & install CentOS Linux 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 rd.live.check quiet
配置文件详解:
default vesamenu.c32                   #默认会加载一个菜单
timeout 10                                     #超时时间为10S                 
display boot.msg 
menu clear
menu background splash.png
menu title CentOS Linux 7
label linux
  menu label ^Install CentOS Linux 7
  menu default
  kernel vmlinuz                     # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录
  append initrd=initrd.img inst.repo=http://10.0.0.6/centos7 quiet ks=http://10.0.0.6/ks.cfg        #192.168.0.131是kickstart服务器,ks.cfg是kickstart主配置文件 
label check
  menu label Test this ^media & install CentOS Linux 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 rd.live.check quiet
TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:
chkconfig    tftp  --level 35 on  && service  xinetd  restart 
4.HTTPD+DHCPD配置
远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来:
mkdir -p /var/www/html/centos7/
mount /dev/cdrom /var/www/html/centos7/
#cp /dev/cdrom/*  /var/www/html/centos7/ (可选配置)
cat>/etc/dhcp/dhcpd.conf<<EOF
ddns-update-style interim;
ignore client-updates;
next-server 192.168.10.4;
filename "pxelinux.0";
allow booting;
allow bootp;
subnet 192.168.10.0 netmask 255.255.255.0 {
 
option routers          192.168.10.1;
option subnet-mask      255.255.255.0;
range dynamic-bootp 192.168.10.180 192.168.10.200;
}
EOF
# ddns-update-style interim 动态的dns 的更新方式
# ignore client-updates"     这个选项是不允许客户机更新 DNS 记录
#allow booting;#定义能够PXE启动
#allow bootp;#定义支持bootp
# subnet 192.168.10.0 netmask 255.255.255.0 服务端IP网段及掩码
# range 192.168.10.10 192.168.56.20; dhcp 分发的地址范围,最好将本机IP包含在内。
# default-lease-time 600;max-lease-time 7200;  IP地址租约时间。
# filename "pxelinux.0"; 指定引导文件位置,这里是TFTP根目录下的pxelinux.0。
#  next-server 192.168.56.14; TFTP服务器地址。
dhcp服务端口查看
[root@kickstart ~]# ss -nulp | grep dhcpd
UNCONN 0 0 *:44810 *:* users:(("dhcpd",pid=5197,fd=20))
UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=5197,fd=7))
UNCONN 0 0 :::5138 :::* users:(("dhcpd",pid=5197,fd=21))
httpd服务端口查看
ss -tnl | grep 80
LISTEN 0 128 :::80
5. 配置kickstart
可以使用system-kickstart系统软件包来配置,ks.cfg配置文件内容如下:
cat>/var/www/html/ks.cfg<<EOF
install
text
keyboard 'us'
rootpw  www.jfedu.net                          
timezone  Asia/Shanghai
url --url=http://10.0.0.6/centos7
lang zh_CN
firewall  --disabled
network  --bootproto=dhcp --device=ens33
auth      --useshadow  --passalgo=sha512
firstboot   --disable
selinux   --disabled
bootloader --location=mbr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=300
part / --fstype="ext4"   --grow
part swap --fstype="swap" --size=512
reboot
%packages
@base
@core
%end
EOF
ks.cfg文件组成大致分为3段 命令段 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项 软件包段
%packages @groupname:指定安装的包组 package_name:指定安装的包 -package_name:指定不安装的包 在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。 脚本段(可选) %pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少) %post:安装系统后执行的命令或脚本(基本支持所有命令) 关键字 含义 install 告知安装程序,这是一次全新安装,而不是升级upgrade。 url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。 url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp://<username>:<password>@<server>/<dir> nfs 从指定的NFS服务器安装。 nfs --server=nfsserver.example.com --dir=/tmp/install-tree text使用文本模式安装。 lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8 keyboard 设置系统键盘类型。keyboard us zerombr 清除mbr引导信息。 bootloader 系统引导相关配置。 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。 --driveorder,指定在BIOS引导顺序中居首的驱动器。 --append=,指定内核参数.要指定多个参数,使用空格分隔它们。 network为通过网络的kickstart安装以及所安装的系统配置联网信息。 network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 --bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。 static方法要求在kickstart文件里输入所有的网络信息。 {network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。 --ip=,要安装的机器的IP地址. --gateway=,IP地址格式的默认网关. --netmask=,安装的系统的子网掩码. --hostname=,安装的系统的主机名. --onboot=,是否在引导时启用该设备. --noipv6=,禁用此设备的IPv6. --nameserver=,配置dns解析.} timezone 设置系统时区。timezone --utc Asia/Shanghai authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512 设置密码加密方式为sha512 启用shadow文件。 rootpw root密码 clearpart 清空分区。clearpart --all --initlabel --all 从系统中清除所有分区,--initlable 初始化磁盘标签 {part磁盘分区。 part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 –grow --asprimary --size=200 --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。 --asprimary,强迫把分区分配为主分区,否则提示分区失败。 --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。 --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。} firstboot 负责协助配置redhat一些重要的信息。 firstboot --disable selinux 关闭selinux。selinux --disabled firewall 关闭防火墙。firewall --disabled logging设置日志级别。logging --level=info reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。 
6.重启各个服务,启动新的客户端验证测试:
service  httpd   restart
service  dhcpd   restart
service  xinetd   restart
7. 开启新的虚拟机,BIOS以网卡启动:
 
原文地址:https://www.cnblogs.com/deny/p/12976234.html