以前是怎么安装系统的
1.光盘(ISO文件,光盘的镜像文件) à每一台物理机都得给一个光驱,如果用外置光驱的话,每台机器都需要插一下
2.U盘:ISO镜像刻录到U盘à需要每台机器都需要插一下
3.并行安装à网络安装
批量自动安装
实现原理:将手动安装的所有的详细步骤记录到一个文件中,然后有一种软件通过读取这个文件就可以实现自动化安装系统
kickstart原理及组件
kickstart原理
kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。
PXE向DHCP发送请求--DHCP服务器提供信息--PXE客户端请求下载启动文件--TFTP响应客户端请求并传送文件--PXE请求下载自动应答文件
环境准备
[root@oldboylnb ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@oldboylnb ~]# uname -r
3.10.0-693.el7.x86_64
[root@oldboylnb ~]# getenforce
Disabled
[root@oldboylnb ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@oldboylnb ~]# hostname -I
10.0.0.201 172.16.1.201
kickstart无人值守部署
安装DHCP服务
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、网关地址、DNS服务器地址等信息,并能够提升地址的使用率。DHCP服务
[root@oldboylnb ~]# yum install -y dhcp
Installed:
dhcp.x86_64 12:4.2.5-58.el7.centos
修改dhcp配置文件
cat >>/etc/dhcp/dhcpd.conf< subnet 172.16.1.0 netmask 255.255.255.0 { #服务端本机IP range 172.16.1.100 172.16.1.199; # 可分配的起始IP-结束IP option subnet-mask 255.255.255.0; # 设定netmask default-lease-time 21600; # 设置默认的IP租用期限 max-lease-time 43200; # 设置最大的IP租用期限 next-server 172.16.1.201; # 告知客户端TFTP服务器的ip filename "/pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件 } EOF 启动服务 [root@oldboylnb ~]# systemctl start dhcpd [root@oldboylnb ~]# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled) Active: active (running) since Mon 2018-01-08 09:35:15 CST; 11s ago Docs: man:dhcpd(8) man:dhcpd.conf(5) Main PID: 1398 (dhcpd) Status: "Dispatching packets..." CGroup: /system.slice/dhcpd.service └─1398 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid Jan 08 09:35:15 oldboylnb dhcpd[1398]: Sending on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24 Jan 08 09:35:15 oldboylnb dhcpd[1398]: Jan 08 09:35:15 oldboylnb dhcpd[1398]: No subnet declaration for eth0 (10.0.0.201). Jan 08 09:35:15 oldboylnb dhcpd[1398]: ** Ignoring requests on eth0. If this is not what Jan 08 09:35:15 oldboylnb dhcpd[1398]: you want, please write a subnet declaration Jan 08 09:35:15 oldboylnb dhcpd[1398]: in your dhcpd.conf file for the network segment Jan 08 09:35:15 oldboylnb dhcpd[1398]: to which interface eth0 is attached. ** Jan 08 09:35:15 oldboylnb dhcpd[1398]: Jan 08 09:35:15 oldboylnb dhcpd[1398]: Sending on Socket/fallback/fallback-net Jan 08 09:35:15 oldboylnb systemd[1]: Started DHCPv4 Server Daemon. 查看日志 [root@oldboylnb ~]# tail -20 /var/log/messages Jan 8 09:35:15 oldboylnb dhcpd: Listening on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24 Jan 8 09:35:15 oldboylnb dhcpd: Sending on LPF/eth1/00:0c:29:52:4d:f5/172.16.1.0/24 Jan 8 09:35:15 oldboylnb dhcpd: Jan 8 09:35:15 oldboylnb dhcpd: No subnet declaration for eth0 (10.0.0.201). Jan 8 09:35:15 oldboylnb dhcpd: ** Ignoring requests on eth0. If this is not what Jan 8 09:35:15 oldboylnb dhcpd: you want, please write a subnet declaration Jan 8 09:35:15 oldboylnb dhcpd: in your dhcpd.conf file for the network segment Jan 8 09:35:15 oldboylnb dhcpd: to which interface eth0 is attached. ** Jan 8 09:35:15 oldboylnb dhcpd: Jan 8 09:35:15 oldboylnb dhcpd: Sending on Socket/fallback/fallback-net Jan 8 09:35:15 oldboylnb systemd: Started DHCPv4 Server Daemon. TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 下载并启动tftp [root@oldboylnb ~]# yum install -y tftp-server Installed: tftp-server.x86_64 0:5.2-13.el7 [root@oldboylnb ~]# systemctl start tftp.socket [root@oldboylnb ~]# systemctl status tftp.socket ● tftp.socket - Tftp Server Activation Socket Loaded: loaded (/usr/lib/systemd/system/tftp.socket; disabled; vendor preset: disabled) Active: active (listening) since Mon 2018-01-08 09:53:27 CST; 36s ago Listen: [::]:69 (Datagram) Jan 08 09:53:27 oldboylnb systemd[1]: Listening on Tftp Server Activation Socket. Jan 08 09:53:27 oldboylnb systemd[1]: Starting Tftp Server Activation Socket. 请求下载启动文件syslinux syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。
[root@oldboylnb tftpboot]# yum install -y syslinux Installed: syslinux.x86_64 0:4.05-13.el7 Dependency Installed: mtools.x86_64 0:4.0.18-5.el7 [root@oldboylnb tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@oldboylnb tftpboot]# ll total 28 -rw-r--r-- 1 root root 26764 Jan 8 10:14 pxelinux.0 新建一个pxelinux.cfg目录,存放客户端的配置文件 [root@oldboylnb /]# mkdir -p /var/www/html/CentOS7 [root@oldboylnb /]# mount /dev/cdrom /var/www/html/CentOS7 mount: /dev/sr0 is write-protected, mounting read-only [root@oldboylnb CentOS7]# \cp -a isolinux/* /var/lib/tftpboot/ [root@oldboylnb isolinux]# pwd /var/www/html/CentOS7/isolinux cp: overwrite ‘/var/lib/tftpboot/pxelinux.cfg/default’? y 安装httpd服务 [root@oldboylnb isolinux]# yum -y install httpd [root@oldboylnb isolinux]# systemctl start httpd.service 修改default文件 [root@oldboylnb isolinux]# vim /var/lib/tftpboot/pxelinux.cfg/default 手动网络安装
新建一台空白虚拟机,也不要挂载ISO镜像,创建2个网卡,打开电源。LAN区段172.16.1.0/24 自动安装 创建ks.cfg文件
[root@oldboyedu ks_config]# cat CentOS7-ks.cfg # Kickstart Configurator for CentOS 7 by yao zhang install 告知安装程序,这是一次全新安装,而不是升级upgrade url --url=http://172.16.1.201/CentOS7/ 通过FTP或HTTP从远程服务器上的安装树中安装 text 使用文本模式安装 lang en_US.UTF-8 设置在安装过程中使用的语言以及系统的缺省语言 keyboard us 设置系统键盘类型 zerombr 清除mbr引导信息 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" 系统引导相关配置 指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序) --driveorder,指定在BIOS引导顺序中居首的驱动器 --append=,指定内核参数.要指定多个参数,使用空格分隔它们 network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 –activate 为通过网络的kickstart安装以及所安装的系统配置联网信息 --bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。 static方法要求在kickstart文件里输入所有的网络信息。 network --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate network --hostname=Cobbler #network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7 --ip=,要安装的机器的IP地址 --gateway=,IP地址格式的默认网关 --netmask=,安装的系统的子网掩码 --hostname=,安装的系统的主机名 --onboot=,是否在引导时启用该设备 --noipv6=,禁用此设备的IPv6 --nameserver=,配置dns解析 timezone --utc Asia/Shanghai 设置系统时区 authconfig --enableshadow --passalgo=sha512 系统认证信息 rootpw --iscrypted root密码$6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/ clearpart --all –initlabel 清空分区 --all 从系统中清除所有分区,--initlable 初始化磁盘标签 part /boot --fstype xfs --size 1024 part swap --size 1024 part / --fstype xfs --size 1 –grow --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat --asprimary,强迫把分区分配为主分区,否则提示分区失败 --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值 firstboot –disable 负责协助配置redhat一些重要的信息 selinux –disabled 关闭selinux firewall –disabled 关闭防火墙 logging --level=info 设置日志级别 reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机 %packages @^minimal @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet wget vim bash-completion %end [root@oldboyedu ks_config]# cat /var/lib/tftpboot/pxelinux.cfg/default default ks prompt 0 label ks kernel vmlinuz append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1
安装TFTP服务
[root@oldboylnb /]#mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@oldboylnb isolinux]# cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
查看网页
append initrd=initrd.img method=http://172.16.1.201/CentOS7/
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/ 2选1