以前是怎么安装系统的

1.光盘(ISO文件,光盘的镜像文件) à每一台物理机都得给一个光驱,如果用外置光驱的话,每台机器都需要插一下

 

2.U盘:ISO镜像刻录到U盘à需要每台机器都需要插一下

 

3.并行安装à网络安装


批量自动安装


实现原理:将手动安装的所有的详细步骤记录到一个文件中,然后有一种软件通过读取这个文件就可以实现自动化安装系统


kickstart原理及组件


blob.png





blob.png


kickstart原理


kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。

PXEDHCP发送请求--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服务

DHCPDynamic 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<<EOF

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服务

TFTPTrivial 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 /]#mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@oldboylnb isolinux]# pwd

/var/www/html/CentOS7/isolinux
[root@oldboylnb isolinux]# cp isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

cp: overwrite ‘/var/lib/tftpboot/pxelinux.cfg/default’? y


安装httpd服务



[root@oldboylnb isolinux]# yum -y install httpd

[root@oldboylnb isolinux]# systemctl start httpd.service


查看网页

blob.png


修改default文件


[root@oldboylnb isolinux]# vim /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

blob.png


手动网络安装

新建一台空白虚拟机,也不要挂载ISO镜像,创建2个网卡,打开电源。LAN区段172.16.1.0/24


blob.png


blob.png

blob.png

blob.png


自动安装

创建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/     通过FTPHTTP从远程服务器上的安装树中安装

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]中的一种,缺省值是dhcpbootpdhcp被认为是相同的。

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,swapvfat

--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

blob.png