kickstart模式实现批量安装centos7.x系统

1.1 安装系统的方法

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

  l  U盘:ISO镜像刻录到U盘==>>需要每台机器都需要插一下

  l  并行安装==>>网络安装

  l  自动化安装

1.2 linux下批量安装系统

kickstart是RedHat公司开源的软件,所以对CentOS兼容性最好。

原理:

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

  kickstart是一个项目的名称。没有这个软件。使用者水平是高中以上

  cobbler是对kickstart的所有组件的封装。使用者水平是初中以上。本质上就是网页版本的kickstart。

1.2.1 PXE说明

  PXE,全名Pre-boot Execution Environment,预启动执行环境;

  通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;

  由Intel和Systemsoft公司于1999年9月20日公布的技术;

  客户端/Server的工作模式;

  PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;

  PXE客户端(客户端)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)

1.2.2 kickstart原理

 

1.2.3 PXE请求顺序说明

①  PXE 客户端发送UDP广播请求

  PXE 客户端从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。

②  DHCP服务器提供信息

  DHCP服务器收到客户端的请求,验证是否来至合法的PXE 客户端的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

③  PXE客户端请求下载启动文件

  客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

④  TETP服务器响应客户端请求并传送文件

  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从tftp服务器 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

⑤  请求下载自动应答文件

  客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

⑥  客户端安装操作系统

  将ks.cfg文件下载回来后,通过该文件找到http镜像,并按照该文件的配置请求下载安装过程需要的软件包。

  http镜像和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。

  安装完成后,将提示重新引导计算机。

1.3 kickstart批量安装系统实践

  一般批量安装操作系统最好一次安装23台机器最佳,主要因为大部分交换机为24口,安装23台服务器没有太大的压力

1.3.1 环境说明

防火墙与selinux必须关闭。

[root@kickstart ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

[root@kickstart ~]# uname -r
3.10.0-693.el7.x86_64

[root@kickstart ~]# getenforce
Disabled

[root@kickstart ~]# 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@kickstart ~]# hostname -I
10.0.0.201 172.16.1.201

1.3.2 第一个里程碑:安装dhcp服务

安装

yum install dhcp -y

配置DHCP服务

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.201;
filename "/pxelinux.0";
}
EOF

配置文件说明:

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

启动DHCP服务

[root@kickstart ~]# systemctl start dhcpd.service
[root@kickstart ~]# systemctl status dhcpd.service
● dhcpd.service - DHCPv4 Server Daemon

检测端口信息

[root@kickstart ~]# netstat -lntup |grep dhcpd
udp        0      0 0.0.0.0:43679           0.0.0.0:*           2090/dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*             2090/dhcpd
udp6       0      0 :::58101                :::*                     2090/dhcpd    

查看其日志信息: (日志位置为/var/log/messages)

[root@kickstart ~]# tailf /var/log/messages
Nov 13 19:01:40 clsn dhcpd: Listening on PF/eth1/00:0c:29:a8:59:b2/172.16.1.0/24
Nov 13 19:01:40 clsn dhcpd: Sending on   LPF/eth1/00:0c:29:a8:59:b2/172.16.1.0/24
Nov 13 19:01:40 clsn dhcpd:
Nov 13 19:01:40 clsn dhcpd: No subnet declaration for eth0 (10.0.0.201).
Nov 13 19:01:40 clsn dhcpd: ** Ignoring requests on eth0.  If this is not what
Nov 13 19:01:40 clsn dhcpd:   you want, please write a subnet declaration
Nov 13 19:01:40 clsn dhcpd:   in your dhcpd.conf file for the network segment
Nov 13 19:01:40 clsn dhcpd:   to which interface eth0 is attached. **

注:配置dhcp的时候是可以配置监听的网卡,指定监听网卡

DHCPDARGS=eth1  # 指定监听网卡

1.3.3 创建一个新的空白虚拟机

说明:Centos7.3之后安装系统至少需要2G内存,低于2G将无法安装

 

   开启虚拟机

 

日志输出

Nov 13 19:01:40 clsn dhcpd: Sending on   Socket/fallback/fallback-net
Nov 13 19:01:40 clsn systemd: Started DHCPv4 Server Daemon.
Nov 13 19:12:16 clsn dhcpd: DHCPDISCOVER from 00:0c:29:64:7b:09 via eth1
Nov 13 19:12:17 clsn dhcpd: DHCPOFFER on 172.16.1.120 to 00:0c:29:64:7b:09 via eth1
Nov 13 19:12:18 clsn dhcpd: DHCPREQUEST for 172.16.1.120 (172.16.1.201) from 00:0c:29:64:7b:09 via eth1
Nov 13 19:12:18 clsn dhcpd: DHCPACK on 172.16.1.120 to 00:0c:29:64:7b:09 via eth1
Nov 13 19:12:54 clsn kernel: perf: interrupt took too long (6342 > 6262), lowering kernel.perf_event_max_sample_rate to 31000

1.3.4 安装tftp服务

安装tftp软件

[root@kickstart ~]# yum install tftp-server -y

启动服务

[root@kickstart ~]# systemctl start tftp.socket
[root@kickstart ~]# systemctl status tftp.socket

tftp根目录

[root@kickstart ~]# cd /var/lib/tftpboot/

   再次启动虚拟机

 

启动发现又tftp但是没找到要加载的系统。上面报错是在TFTP服务的根目录找不到启动文件pxelinux.0

1.3.5 获取pxelinux.0系统

通过安装软件获得

[root@kickstart tftpboot]# yum install -y syslinux

复制pxelinux.0文件到tftp根目录

[root@kickstart tftpboot]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
[root@kickstart tftpboot]# ls
pxelinux.0 

 

 

    首先排除最简单故障原因:selinux是否关闭,防火墙是否关闭

    上面的错误是因为pxelinux.0这个小系统的配置文件(default不存在,或者文件名不对

1.3.6 添加pxelinux.0配置文件

1)给虚拟机添加上centos7的镜像,注意实在kickstart服务端添加

 

2)将镜像挂载上

特别说明:由于这是测试环境可以使用挂载,在生产环境中必须把镜像中的文件复制到硬盘上,光驱速度太慢。

mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS7

   3)将镜像中的相关文件复制到tftp根目录

cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

4)修改default配置文件实现通过网络安装操作系统

CentOS7.X 网络安装的关键点,修改default文件

 

   修改完成后,重启pxe客户端,就会有安装界面,与使用光盘安装一致,这里就不是做详细的记录了。注意实现网路安装需要将下一步完成(配置http服务)。

 

5)CentOS7实现自动化安装的default文件

[root@kickstart ~]# 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

1.3.7 配置httpd服务

安装apache服务

[root@kickstart tftpboot]# yum install httpd -y

启动apache服务

[root@kickstart tftpboot]# systemctl start httpd.service
[root@kickstart tftpboot]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server

通过浏览器访问,使用curl命令镜像访问。

http://10.0.0.201/CentOS7/
curl http://172.16.1.201/CentOS7/

 

1.4 ks文件说明

1.4.1 ks文件的作用

   通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。

1.4.2 ks文件生成的三种方式

方法1

  每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)  

方法2

  Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。

方法3

  阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。

1.4.3 centos7.4自动应答文件(ks)

# Kickstart Configurator for CentOS 7 by yao zhang #命令段
install   #告知安装程序,这是一次全新安装,而不是升级
url --url="http://172.16.1.201/CentOS7/"  #通过http下载安装镜像
text     #以文本格式安装
lang en_US.UTF-8   #设置字符集格式
keyboard us  #设置键盘类型
zerombr   #清除mbr引导
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"    #指定引导记录被写入的位置
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  #配置eth0网卡
network  --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate   #配置eth1网卡
network  --hostname=Cobbler  #设置主机名
#network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai  可以使用dhcp方式设置网络
authconfig --enableshadow --passalgo=sha512  #设置密码格式
rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/     #密文密码
clearpart --all --initlabel  #清空分区
part /boot --fstype xfs --size 1024   #/boot分区
part swap --size 1024                    #swap分区
part / --fstype xfs --size 1 --grow   #/分区
firstboot --disable       #负责协助配置redhat一些重要的信息
selinux --disabled        #关闭selinux
firewall --disabled       #关闭防火墙
logging --level=info      #设置日志级别
reboot                       #安装完成重启

%packages #包组段   @表示包组
@^minimal
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
%end

%post #脚本段,可以放脚本或命令
systemctl disable postfix.service   #关闭邮件服务开机自启动
%end

1.4.4 PXE配置文件default

由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的MAC地址为8F:3H:AA:6B:CC:5D,对应的IP地址为10.0.0.195,那么客户机首先尝试以MAC地址为文件名匹配的配置文件,如果不存在就以IP地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是 /tftpboot/pxelinux.cfg/01-8F:3H:AA:6B:CC:5D。如果该文件不存在,就会根据IP地址来查找配置文件了,这个算法更复杂些,PXE映像查找会根据IP地址16进制命名的客户机配置文件。例如:10.0.0.195对应的16进制的形式为C0A801C3。(可以通过syslinux软件包提供的gethostip命令将10进制的IP转换为16进制)

如果C0A801C3文件不存在,就尝试查找C0A801C文件,如果C0A801C也不存在,那么就尝试C0A801文件,依次类推,直到查找C文件,如果C也不存在的话,那么最后尝试default文件。

总体来说,pxelinux搜索的文件的顺序是:

/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default

1.4.5 上面的事情做完以后就可以批量安装系统了

[root@Cobbler ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  1.5G   97G   2% /
devtmpfs        227M     0  227M   0% /dev
tmpfs           237M     0  237M   0% /dev/shm
tmpfs           237M  4.6M  232M   2% /run
tmpfs           237M     0  237M   0% /sys/fs/cgroup
/dev/sda1      1014M  135M  880M  14% /boot
tmpfs            48M     0   48M   0% /run/user/0

[root@Cobbler ~]# 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@Cobbler ~]# getenforce
Disabled

[root@Cobbler ~]# hostname -I
10.0.0.202 172.16.1.202

1.5 常见错误

1.5.1 网卡无法启动解决

解决办法:

   将NetworkManager服务停止,再重新启动network服务

[root@CentOS7 ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.

[root@CentOS7 ~]# systemctl stop NetworkManager

1.5.2 Could not find kernel image

 

报错原因:selinux没关

1.5.3 查考文档

http://blog.oldboyedu.com/autoinstall-kickstart/

http://www.zyops.com/autoinstall-kickstart

 

时间: 2024-10-22 08:44:57

kickstart模式实现批量安装centos7.x系统的相关文章

Cobbler全自动批量安装部署Linux系统

说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.21.160-192.168.21.200 eth1(第二块网卡,用于内网)IP地址段:10.0.0.160-10.0.0.200 子网掩码:255.255.255.0 网关:192.168.21.2 DNS:8.8.8.8  8.8.4.4 所有服务器均支持PXE网络启动 实现目的:通过配置Cobb

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

说明: Kickstart服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统:CentOS 5.10 64位 eth0(第一块网卡,用于外网)IP地址段:192.168.21.160-192.168.21.200 eth1(第二块网卡,用于内网)IP地址段:10.0.0.160-10.0.0.200 子网掩码:255.255.255.0 网关:192.168.21.2 DNS:8.8.8.8 8.8.4.4 所有服务器均支持PXE网络

使用cobbler批量安装操作系统(基于Centos7.x )

1.1 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用. Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理. Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集

安装Windows XP系统时蓝屏已经更改了硬盘模式仍无效

  适用范围: 此故障前提是改装Windows XP系统时,有蓝屏现象,且更改硬盘模式后无效,可尝试此方案操作. 知识点分析: 安装Windows XP系统时,出现蓝屏已经更改了硬盘模式且无效,可更换USB2.0接口(包括USB充电黄口),或BIOS下关闭USB3.0测试. BIOS下关闭USB3.0方法,如下图:

只能打开linux-原是window10,想要双系统,安装centos7后window就打不开了

问题描述 原是window10,想要双系统,安装centos7后window就打不开了 错误如图,麻烦大神解答一下,谢谢! 解决方案 应该是你的WIN10的系统引导被破坏了新的bootloader会覆盖掉Windows的bootloader,导致Win 10无法启动.可以用类似EasyBCD的软件修复引导 解决方案二: window10+CentOS双系统安装64位window 7安装10G 10.2.03Mac Pro 安装 双系统 window7 解决方案三: 你找和U盘做成PE系统 ,然后

Docker CentOS7的系统上安装部署以及基础教程_docker

说明: 本文介绍如何在CentOS7的系统上安装部署Docker环境,本文参考Docker官方文档如下链接: https://docs.docker.com/engine/installation/centos/ CentOS7的系统上安装部署Docker环境 1 CentOS7安装(略) 2 升级系统 yum update 升级完成后需要重启下系统. 3 添加docker yum源 执行如下命令: cat >/etc/yum.repos.d/docker.repo name=Docker Re

Win7系统批量安装字体

在平时工作中,我们经常需要各种字体,那么我们该如何快速的添加字体呢,本文就为大家来介绍一下. 答:在Win7里批量安装Win7字体其实更简单,打开C盘,双击Windows文件夹,再双击Fonts文件夹,然后把多种字体复制进去就行.以下是详细的批量安装字体步骤图文教程. 第一步,打开"C:WindowsFonts". 打开"C:WindowsFonts" 第二步,复制多种字体到Fonts文件夹里. 复制多种字体到Fonts文件夹里 如果你已经安装有某种字体,不用担心,

使用Cobbler批量安装操作系统

前言    在实际生产中,我们常常会遇到这样一种情况,就是我们需要同时安装几十甚至上百台服务器,如果我们使用U盘或者光盘的方式的话,或许老板直接就将我们辞退了.这里我们介绍一种能够实现自动化安装操作系统的方式.   我们搭建Cobbler的实验环境是基于CentOS 7.3 -1611 的基础的.   同时这个实验可以帮助你一步步的完成所有的操作,不过,如果你想自定义安装的内容的话,建议你先看本文 自定义kickstart文件 部分,以便有所印象. Cobbler 简介    Cobbler项目

安装Windows 7系统的那些事儿

据微软内部人士透露,微软将在7月完成对Windows 7的整个研发工作,并且在7月中下旬将编译完成的Windows 7光盘的母盘交付给与其合作的OEM厂商,批量制作Windows 7的彩包装产品,并且分发给计算机厂商进行Windows 7的预装.如果不跳水的话,用户在10月22日将会购买到彩包装版本的Windows 7.不管怎样,Windows 7 RTM已经触手可及.此时,对于个人用户特别是企业用户来说,Windows 7的部署已经提上了议事日程.本文将从个人用户的角度就Windows 7安装