kickstart自动安装部署RHEL7
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个 名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果 Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事 情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
系统环境
实验环境:VMware Workstation 12
系统平台:RHEL7.*
网络模式:LAN区段
DHCP / TFTP IP:192.168.135.150 #根据自己实际情况配置
HTTP / FTP / NFS IP:192.168.135.150
防火墙已关闭/iptables: Firewall is not running.
SELINUX=disabled
注意:VMware Workstation使用NTP时,要把NTP的DHCP功能去掉
前期准备
所需要用到的服务:DHCP、TFTP、HTTP(FTP太慢,所以我用了HTTP)
配置yum仓库,挂载光盘镜像
#vim /etc/yum.repos.d/rhel7.repo
[rhel7]
name=rhel7
basurel=file:///mnt
enabled=1
gpgcheck=0
将光盘挂载到/mnt中
#mount /dev/cdrom /mnt
配置DHCP
安装DHCP服务
# yum -y install dhcp
修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:
subnet 192.168.135.0 netmask 255.255.255.0 { #所属网段及掩码;
range 192.168.135.100 192.168.135.120; #IP地址池范围;
option domain-name "test.com";
option routers 192.168.135.2; #路由器IP,可以写网关IP;
option broadcast-address 192.168.135.255;
next-server 192.168.135.130; #TFTP Server 的IP地址;
filename "/pxelinux.0"; #pxelinux 启动文件位置;
default-lease-time 600;
max-lease-time 7200;
}
##也可以根据[root@occl ~]# rpm -ql dhcp | grep example
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ##此模板下内容来修改
启动DHCP服务
#systemctl enable dhcpd.service
#systemctl start dhcpd.service
配置TFTP
yum -y install tftp-server
#需要xinetd,如果没有安装的话也要安装
修改/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
disable = no ##把这写成no即可;
per_source = 11
cps = 100 2
flags = IPv4
}
启动xinetd服务
#systemctl enable xinetd.service
#systemctl start xinetd.service
配置PXE启动所需要的文件
#yum -y install syslinux
说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
拷贝启动文件到/var/lib/tftpboot里
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cd /mnt/images/pxeboot
#cp -rf initrd.img vmlinuz /var/lib/tftpboot/
#mkdir /var/lib/tftpboot/pxelinux.cfg
#cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#chmod u+w /var/lib/tftpboot/pxelinux.cfg/default
####cp /mnt/isolinux/boot.msg /var/lib/tftpboot/
####chmod u+w /var/lib/tftpboot/boot.msg
修改default文件
[root@occl pxelinux.cfg]# vim default
default linux
timeout 600
display boot.msg
# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title Red Hat Enterprise Linux 7.2
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13
###中间省略部分,找到下面一行修改一下红色部分
label linux
menu label ^Install Red Hat Enterprise Linux 7.2
kernel vmlinuz
append initrd=initrd.img inst.ks=http://192.168.135.150/ks.cfg quiet #这个地址根据自己的实际情况;ks.cfg这个文件后面会配置
保存退出
检查
[root@occl tftpboot]# pwd
/var/lib/tftpboot
[root@occl tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz boot.msg
[root@occl tftpboot]# cd pxelinux.cfg/
[root@occl pxelinux.cfg]# ls
default
配置HTTP
yum -y install httpd
创建iso文件夹目录,用来存放光盘软件包
#mkdir /var/www/html/iso
拷贝光盘中所有文件到iso文件夹中
#cp -rf /mnt/* /var/www/html/iso/
修改/etc/httpd/conf/httpd.conf 下添加:
<Directory "/var/www/html/iso">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
systemclt start httpd.service
systemclt enable httpd.service
生成ks.cfg 文件
ks.cfg是kickstart安装配置文件,系统就是按照ks.cfg来安装的。我们将在后面配置
安装Kickstart
#yum -y install system-config-kickstart
在桌面环境下配置Kickstart
#system-config-kickstart
后面几项不用管,直接保存
保存在/root/下,后缀不要动
root目录下有个anaconda-ks.cfg文件,我们进去把安装软件脚本拷贝到咱们刚才创建的那个ks.cfg中
#vim /root/anaconda-ks.cfg
........
%packages
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@kde-desktop
@multimedia
@print-client
@x11
%end
把anaconda-ks.cfg文件最下方的%packages与%end之间的内容粘贴到咱们的ks.cfg中
#vim /root/ks.cfg
把上面一串@的所有内容都粘贴进去,包括两个%哪行。
把ks文件拷贝到/var/www/html/里面
#cp /root/ks.cfg /var/www/html/
[root@occl html]# ls
iso ks.cfg
检查防火墙及SElinux等其他服务是否配置好
检查SELinux是否关闭
#setenforce 0 //关闭SELinux
检查防火墙,开放dhcp,ftp,tftp服务,或者关闭防火墙
检查所有服务是否正常启动
#systemctl is-active dhcpd
#systemctl is-active vsftpd
返回结果都是“active”
#netstat -tulnp | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:*
确保default文件和ks.cfg文件配置正确。
这样基本就配置完成了,试验一下吧。