IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ###PXE+Kickstart 无人值守安装服务搭建 #### -> 正文阅读

[系统运维]###PXE+Kickstart 无人值守安装服务搭建 ####

自动化无人值守系统

使用光盘镜像来安装Linux系统的方法,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统。这时,我们就需要使用PXE + TFTP +FTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,也大大提升了系统安装的效率

部署的基本流程:

安装系统的设备需要通过bios设置,设置成网络启动。一台服务器需要有DHCP服务;方便分配ip给安装系统的设备。一台服务器要有TFTP服务,TFTP服务器是需要提供一下启动所需要的文件;
在安装的过程中,需要有些分区的指定、主机名;因此也需要一种自动应答的机制;---->kickstart技术就是设定了自动应答的文件;

操作环境

操作软件:VMware虚拟机
??操作系统:CentOS Linux release 7.4.1708
??网络连接:NAT模式? ?主机模式
??服务端IP:NAT模式IP:192.168.100.31? ? ?主机模式IP:192.168.20.11

安装环境

#关闭selinux
setenforce 0
sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
?#关闭防火墙:
systemctl disable firewalld.service
#重启使生效:
shutdown -r now
?

安装yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
##配置阿里镜像提供的epel源
wget -O /etc/yum.repos.d/epel-7.repo  http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all     # 清除系统所有的yum缓存
yum makecache     # 生成yum缓存

安装配置DHCP,tftp-server syslinux vsftpd 服务

[root@localhost ~]# yum install -y dhcp  tftp-server  syslinux  vsftpd  -y

添加主机模式网络

?然后系统多个网卡,ens33为主机模式网卡,ens160为NAT模式网卡

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::67b2:bb23:d93e:261e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b4:39:5f  txqueuelen 1000  (Ethernet)
        RX packets 26  bytes 8892 (8.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 64  bytes 11328 (11.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.31  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::f192:baab:eec0:800a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b4:39:55  txqueuelen 1000  (Ethernet)
        RX packets 2838  bytes 3937313 (3.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1192  bytes 107057 (104.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

配置静态主机模式ip地址

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
NAME="ens33"
UUID="4d9af6bf-36bd-481c-9cf3-bbc3bba19499"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.20.11"
PREFIX="24"
GATEWAY="192.168.20.2"
#DNS1="192.168.20.254"
#DNS2="223.5.5.5"

[root@localhost ~]# ifconfig ens33 down    ###关闭网卡
[root@localhost ~]# ifup ens33             ##开启网卡
[root@localhost ~]# ip ad sh dev ens33   
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:b4:39:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.11/24 brd 192.168.20.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feb4:395f/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

配置dhcpd文件,启动DHCP服务

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

allow booting; allow bootp;
ddns-update-style none;
ignore client-updates;

subnet 192.168.20.0 netmask 255.255.255.0    ## 分配多少个ip
{
     range 192.168.20.11 192.168.20.250;     #指定了具体分配的范围,两个范围要用空格隔开;
     option routers 192.168.20.2;            ## 网关
     option subnet-mask 255.255.255.0;       ## 子网掩码
     option domain-name-servers 192.168.20.11;    ## dns信息--固定格式 
     default-lease-time 21600;                    ## 作用时间21600秒--6小时  
     max-lease-time 43200;                        ## 最大租约时间12小时
     next-server 192.168.20.11;                   #tftp服务端IP地址
     filename "pxelinux.0";                       ## 用户加载的引导文件
}

#保存
wq!
[root@localhost ~]# systemctl restart dhcpd.service 
[root@localhost ~]# systemctl enable dhcpd
[root@localhost ~]# systemctl status dhcpd

查看客户机dhcp获取情况

[root@localhost ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

lease 192.168.20.128 {
  starts 4 2022/06/30 07:24:38;
  ends 4 2022/06/30 13:24:38;
  tstp 4 2022/06/30 13:24:38;
  cltt 4 2022/06/30 07:24:38;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:f9:ff:c2;
}
server-duid "\000\001\000\001*P\013\377\000\014)\2649_";

[root@localhost ~]# 

TFTP服务器配置

[root@localhost ~]#  vim /etc/xinetd.d/tftp 

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no    ##disable修改为no表示开启tftp服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动TFTP服务

[root@localhost ~]# systemctl restart tftp
[root@localhost ~]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.

连接cd驱动器,挂载镜像

[root@localhost ~]# mkdir /media/cdrom 
[root@localhost ~]# mount  /dev/cdrom  /media/cdrom/  
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# mount  /dev/cdrom  /media/cdrom/  
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /media/cdrom 忙
       /dev/sr0 已经挂载到 /media/cdrom 上
[root@localhost ~]# df -lh
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   46G  2.7G   43G    6% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.6M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  148M  867M   15% /boot
tmpfs                    380M     0  380M    0% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /media/cdrom
[root@localhost ~]# 

##进入/var/lib/tftpboot
我们首先需要把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。另外在RHEL 7系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。

[root@localhost ~]#  cd /var/lib/tftpboot
[root@localhost tftpboot]# ls
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@localhost tftpboot]#  cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@localhost tftpboot]#  cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .
[root@localhost tftpboot]# ls
boot.msg  initrd.img  pxelinux.0  vesamenu.c32  vmlinuz
[root@localhost tftpboot]# 

##然后在TFTP服务程序的目录中新建pxelinux.cfg目录,虽然该目录的名字带有后缀,但依然也是目录,而非文件!将系统光盘中的开机选项菜单复制到该目录中,并命名为default。这个default文件就是开机时的选项菜单

[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default

##默认的开机菜单中有两个选项,

要么是安装系统,

要么是对安装介质进行检验。

既然我们已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的选项,未免与我们的主旨(无人值守安装)相悖。现在我们编辑这个default文件,把第1行的default参数修改为linux,这样系统在开机时就会默认执行那个名称为linux的选项了。对应的linux选项大约在64行,我们将默认的光盘镜像安装方式修改成FTP文件传输方式,并指定好光盘镜像的获取网址以及Kickstart应答文件的获取路径:

[root@localhost tftpboot]# vim pxelinux.cfg/default
第一行  default vesamenu.c32      ##改为  default linux   
第64行  append initrd=initrd.img inst.stage2=ftp://192.168.20.11 ks=ftp://192.168.20.11/pub/ks.cfg quiet    ###改 (64行)

##配置VSFtpd服务程序

[root@localhost tftpboot]# systemctl restart vsftpd
[root@localhost tftpboot]# 
[root@localhost tftpboot]#  systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost tftpboot]# 

##在确认系统光盘镜像已经正常挂载到/media/cdrom目录后,把目录中的光盘镜像文件全部复制到vsftpd服务程序的工作目录中。

[root@localhost tftpboot]# cp -r /media/cdrom/* /var/ftp  ##这个过程大约需要3~5分钟

##创建KickStart应答文件

? ? ? ? Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。那么,既然这个文件如此重要,该去哪里找呢?其实在root管理员的家目录中有一个名为anaconda-ks.cfg的文件,它就是应答文件。下面将这个文件复制到vsftpd服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd服务程序数据目录中的pub子目录中)。使用chmod命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容:
?

[root@localhost tftpboot]#  cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@localhost tftpboot]# chmod +r /var/ftp/pub/ks.cfg

##首先把第5行的光盘镜像安装方式修改成FTP协议,仔细填写好FTP服务器的IP地址,并用本地浏览器尝试打开下检查有没有报错。然后把第25行的时区修改成上海(Asia/Shanghai),最后再把30行的磁盘选项设置为清空所有磁盘内容并初始化磁盘:

[root@localhost tftpboot]# vim /var/ftp/pub/ks.cfg 
 # Use CDROM installation media
5行   cdrom  更改为   url --url=ftp://192.168.20.11

25行  timezone Asia/Shanghai --isUtc 
30行  clearpart --none --initlabel   更改为  clearpart --all --initlabel 

重启所有服务

[root@localhost tftpboot]# systemctl enable dhcpd vsftpd tftp
[root@localhost tftpboot]# systemctl restart dhcpd vsftpd tftp

在按照以上方法成功部署各个相关的服务程序后,就可以使用PXE + Kickstart无人值守安装系统了。在采用下面的步骤建立虚拟主机时,一定要把客户端的网卡模式设定成与服务端一致的“仅主机模式”,否则两台设备无法进行通信,也就更别提自动安装系统了。

自动安装

添加虚拟机设置为稍后安装操作系统

?

?设置网络适配器为“主机模式” ,设备状态 点击启动

?然后就开始自动安装Centos系统

?

?

?

?

?自动安装的账号密码为;服务器端的账号密码 IP可以看出已经DHCP获取到了。

?PXE+Kickstart 自动化无人值守安装服务搭建就完成了

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:22:23  更:2022-07-04 23:24:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:01:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计