部署YUM仓库以及如何使用PXE网络装机

一、YUM仓库的相关概述及部署

  • YUM仓库: 通过YUM仓库完成rpm软件包的安装、升级、卸载等任务,能够自动查找并且 解决rpm包之间的依赖性关系
    (1)基于RPM包构建的软件更新机制
    (2)可以自动解决依赖性关系
    (3)所有软件包由集中的YUM软件仓库提供
    下面是YUM仓库示例图:
    YUM仓库示例图
    (一台服务器是源,通过ftp或http等去提供YUM仓库,客户机通过ftp或http等可以指定YUM仓库的主机从而使用YUM仓库)
  • 适用环境: 拥有大量的Linux主机的本地网络中,可以构建一台YUM源服务器来缓解软件的安装、升级等
  • 分类:
    (1)本地YUM (自己就是自己的YUM仓库)
    (2)网络YUM

(1)准备安装源

  • 软件仓库的提供方式:
    (1)FTP服务: ftp://…
    (2)HTTP服务: http://…
    (3)本地目录: file:///…
  • RPM软件包的来源:
    (1)CentOS发布的RPM包集合
    (2)第三方组织发布的RPM包集合
    (3)用户自己定义的RPM包集合
  • 构建CentOS 7 软件仓库
    (1)RPM包来自CentOS 7 DVD光盘 (也就是镜像文件)
    (2)通过FTP、HTTP或者本地目录提供给客户机
  • 在软件仓库中加入非官方RPM包组
    (1)包括存在依赖性关系的所有RPM包
    (2)使用createrepo工具建立仓库数据文件 (把指定的目录变成可以使用的RPM包仓库)

(2)示例:

主机名称 主机地址 环境角色
YUM1 192.168.100.9 YUM仓库(源)
YUM2 192.168.100.10 YUM的客户端

-YUM1的配置(源)

******安装vsftpd服务,提供ftp的访问以及安装createrepo工具(有依赖包)
[root@YUM1 ~]# mount /dev/cdrom /media/cdrom/  (挂载光盘)
mount: /dev/sr0 写保护,将以只读方式挂载
[root@YUM1 ~]# cd /media/cdrom/Packages/    (切换到光盘所在的软件包位置)
[root@YUM1 Packages]# rpm -ivh vsftpd-3.0.2-27.el7.x86_64.rpm   (使用RPM方式安装ftp)
警告:vsftpd-3.0.2-27.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:vsftpd-3.0.2-27.el7              ################################# [100%] (安装完成)
[root@YUM1 Packages]# systemctl start vsftpd  (启动ftp服务)
[root@YUM1 Packages]# systemctl enable vsftpd  (设置ftp服务为开机自启)
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@YUM1 Packages]# rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm   (createrepo的依赖包)
警告:deltarpm-3.6-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:deltarpm-3.6-3.el7               ################################# [100%]
[root@YUM1 Packages]# rpm -ivh libxml2-python-2.9.1-6.el7.4.x86_64.rpm (createrepo的依赖包)
警告:libxml2-python-2.9.1-6.el7.4.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:libxml2-python-2.9.1-6.el7.4     ################################# [100%]
[root@YUM1 Packages]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm (createrepo的依赖包)
警告:python-deltarpm-3.6-3.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:python-deltarpm-3.6-3.el7        ################################# [100%]
[root@YUM1 Packages]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm  (安装createrepo工具)
警告:createrepo-0.9.9-28.el7.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:createrepo-0.9.9-28.el7          ################################# [100%]
[root@YUM1 Packages]# cd   (回到家目录)
******准备YUM官方软件包仓库(也就是CentOS7光盘自带的软件包)
[root@YUM1 ~]# mkdir /var/ftp/CentOS7  (在ftp默认的主目录下创建一个目录作为软件仓库使用)
[root@YUM1 ~]# cp -rf /media/cdrom/* /var/ftp/CentOS7/  (复制光盘的所有内容到刚刚创建的软件仓库,时间较长)
(ftp服务默认的存储位置就是/var/ftp/目录下)
******准备非CentOS7光盘自带的其他软件包
[root@YUM1 ~]# mkdir /var/ftp/other
[root@YUM1 ~]# cd /var/ftp/other/
[root@YUM1 other]# createrepo -g /media/cdrom/repodata/repomd.xml ./ (将源发布的其他rpm包存放到/var/ftp/other目录中)
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@YUM1 other]# ll  (发现多了一个repodata的目录)
总用量 4
drwxr-xr-x 2 root root 4096 12 17 17:56 repodata
至此YUM仓库准备完毕

-YUM2的配置(客户端)

******在YUM2上创建指定yun仓库的yum文件
[root@YUM2 ~]# cd /etc/yum.repos.d/
[root@YUM2 yum.repos.d]# cat <<a> centos7.repo 
> [local]
> name=centos7
> baseurl=ftp://192.168.100.9/CentOS7  (指定ftp服务的CentOS7软件包目录)
> enabled=1
> gpgcheck=0
> [other]
> name=other
> baseurl=ftp://192.168.100.9/other    (指定ftp服务的other软件包目录)
> enabled=1
> gpgcheck=0
> a
[root@YUM2 yum.repos.d]# 
现在客户端即可使用服务器的yum仓库进行相关的部署

(3)使用YUM的相关工具管理软件包

-查询软件包

1[root@YUM1 ~]# yum  list                   ——获得系统中软件的安装情况(已经安装的和可用的软件包都会列出)
2[root@YUM1 ~]# yum  list  installed        ——系统中已经安装的软件包列表
3[root@YUM1 ~]# yum list available          ——系统中尚未安装的软件包
4[root@YUM1 ~]# yum list updates            ——查询可以升级版本的软件包
5[root@YUM1 ~]# yum  info                   ——查询软件包的描述信息 (列出所有软件包描述信息)
6[root@YUM1 ~]# yum  info  软件包名          ——查询特定的软件包描述信息
7[root@YUM1 ~]# yum  search  all  关键词     ——查询指定软件包 
8[root@YUM1 ~]# yum grouplist               ——获得软件的分组信息
9[root@YUM1 ~]# yum  groupinfo  分组名称     ——可查询出这个分组所包括的软件包信息

-安装、升级、卸载软件包

1)安装:
[root@YUM1 ~]# yum  -y  install  软件包名称  (下载软件包并安装;-y 自动确认)
2)卸载:
[root@YUM1 ~]#yum   -y  remove   软件包名称   
3)安装组: 
[root@YUM1 ~]#yum  -y  groupinstall   软件包组名
4)卸载组: 
[root@YUM1 ~]#yum  -y  groupremove    软件包组名

二、部署PXE远程安装服务

PXE: 工作在C/S模式,允许客户机通过网络从服务器下载引导镜像,并且加载安装文件或者整个操作系统
构建PXE网络体系的前提:
(1)网络中要有一台DHCP服务器给客户机自动分配地址,指定引导文件位置
(2)服务器通过TFTP提供引导镜像文件的下载
(3)客户机网卡需要支持PXE协议,并且主板支持网络启动

(1)部署远程安装服务器:

******准备CentOS7的安装源 (通过FTP协议)
[root@YUM1 ~]# cat /etc/yum.repos.d/centos.repo (需要提前写一个本地YUM源)
[aaa]                                                           
name=这是一个本地YUM                             
baseurl=file:///media/cdrom                          
enabled=1                                                         
gpgcheck=0    
[root@YUM1 ~]#mount /dev/cdrom /meida/cdrom (挂载镜像文件)
[root@YUM1 ~]#yum -y install vsftpd
。。。。。。
完毕!
[root@YUM1 ~]# mkdir /var/ftp/CentOS7  (在ftp默认的主目录下创建一个目录作为软件仓库使用)
[root@YUM1 ~]# cp -rf /media/cdrom/* /var/ftp/CentOS7/ (复制光盘的所有内容到刚刚创建的软件仓库,时间较长)
******安装并启动TFTP服务器 
[root@YUM1 ~]# yum -y install tftp-server (安装tftp服务)
。。。。。。
完毕!
[root@YUM1 ~]# vim /etc/xinetd.d/tftp  (修改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                 = yes
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
 “disable=yes” 改为 “disable=no”
# 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
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
保存退出
[root@YUM1 ~]# systemctl start tftp  (开启tftp服务)
[root@YUM1 ~]# systemctl enable tftp  (设置tftp服务为开机自启)
******准备Linux内核、初始化镜像文件
内核和初始化镜像文件都是在光盘上,要把其复制到tftp服务器的根目录下
[root@YUM1 ~]# cd /media/cdrom/images/pxeboot/
[root@YUM1 pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz (initrd.img :初始化镜像文件; vmlinuz  :内核文件)
[root@YUM1 pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/ (把两个文件复制到tftp服务器根目录)
******准备PXE引导程序和启动菜单文件 (pxe 引导程序叫 pxelinux.0 ,由syslinux 软件包提供,先要进行安装)
[root@YUM1 pxeboot]# yum -y install syslinux
。。。。。。
完毕!
[root@YUM1 pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  (复制一份引导文件到tftp的根目录下)
******编写启动菜单文件
[root@YUM1 pxeboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@YUM1 pxeboot]# cat <<a> /var/lib/tftpboot/pxelinux.cfg/default (写入数据)
> default auto      
> prompt 1            
> label auto           
>     kernel vmlinuz
>     append initrd=initrd.img method=ftp://192.168.100.9/CentOS7  (地址都写本机地址)
> 
> label linux text    
>     kernel vmlinuz
>     append text initrd=initrd.img method=ftp://192.168.100.9/CentOS7
> 
> label linux rescue       
>     kernel vmlinuz
>     append rescue initrd=initrd.img method=ftp://192.168.100.9/CentOS7
> a
[root@YUM1 pxeboot]# systemctl restart tftp
[root@YUM1 pxeboot]# systemctl restart vsftpd
******安装并且启动dhcp
[root@YUM1 pxeboot]# yum -y install dhcp (安装dhcp)
。。。。。。
完毕!
[root@YUM1 pxeboot]# vim /etc/dhcp/dhcpd.conf (编写主配置文件)
写入
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
subnet 192.168.100.0 netmask 255.255.255.0 {
    
       (允许分配的网段)
 range 192.168.100.150 192.168.100.200;   (分配的地址范围)
option routers 192.168.100.250;   (默认的网关)
next-server 192.168.100.9;   (指定TFTP服务器的地址)
filename "pxelinux.0";   (指定PXE引导程序的文件名)
}
保存退出
[root@YUM1 pxeboot]# systemctl start dhcpd (开启dhcp服务)
[root@YUM1 pxeboot]# systemctl enable dhcpd  (设置dhcp服务为开机自启)
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
至此配置完毕

开一台新的虚拟机无需添加镜像文件,网卡配置一样,运行内存调成2G以上即可
在这里插入图片描述
通过DHCP自动获取地址后,在 “boot:”点击回车即可,然后等待一段时间,就会弹出CentOS7的安装界面
在这里插入图片描述

(2)实验Kickstart无人值守安装

  • Kickstart工具: 配置安装应答文件,自动完成安装过程中的各种设置,从而无需手动干预,提高网络装机的效率

-步骤:

********安装system-config-kickstart 工具(最好直接使用带有图形化界面的系统)
[root@YUM1 ~]#  yum -y install system-config-kickstart
。。。。。。
完毕!
[root@YUM1 ~]# yum groupinstall GNOME Desktop (有时候命令行系统打不开的话,可以先安装一下图形化桌面)
。。。。。。
完毕!
******通过图形化向导工具配置安装应答文件
[root@YUM1 ~]# system-config-kickstart
  • 会弹出“Kickstart配置程序”
    配置程序
  • 根据想要配置的条件,进行配置即可
    在这里插入图片描述
  • 选择FTP服务器,填写本机地址,FTP目录就是放镜像文件的目录CentOS7

在这里插入图片描述

  • 选择“安装新引导装载程序”
    在这里插入图片描述
  • 点击添加
    在这里插入图片描述
  • 根据要求新建新的分区

在这里插入图片描述

  • 选择网络配置,点击添加,填写设备名称和网络类型
    在这里插入图片描述
    在这里插入图片描述
  • 在防火墙配置中禁用SElinux和防火墙
    在这里插入图片描述
  • 可以选择是否安装图形化环境
    在这里插入图片描述
  • 因为是虚拟机有时候会出现无法选择软件包的情况,真实环境中按照要求选择最小安装——开发工具等,根据要求即可
    在这里插入图片描述
  • 在安装后脚本中,可以选择解释程序,然后添写一些系统初始化配置的脚本
    在这里插入图片描述
  • 点击文件,保存即可,默认在root目录下就行
  • 在这里插入图片描述
******在root目录下发现多了一个新文件,就是刚刚保存的文件
[root@YUM1 ~]# ll
总用量 12
-rw-------. 1 root root 1545 7   2 20:24 anaconda-ks.cfg
-rw-r--r--. 1 root root 1576 7   2 20:25 initial-setup-ks.cfg
-rw-r--r--  1 root root 1134 12 17 23:04 ks.cfg  (刚刚创建的文件)
drwxr-xr-x. 2 root root    6 7   2 20:28 公共
drwxr-xr-x. 2 root root    6 7   2 20:28 模板
drwxr-xr-x. 2 root root    6 7   2 20:28 视频
drwxr-xr-x. 2 root root    6 7   2 20:28 图片
drwxr-xr-x. 2 root root    6 7   2 20:28 文档
drwxr-xr-x. 2 root root    6 7   2 20:28 下载
drwxr-xr-x. 2 root root    6 7   2 20:28 音乐
drwxr-xr-x. 2 root root    6 7   2 20:28 桌面
[root@YUM1 ~]# mkdir /var/ftp/ks  (在ftp下创建新目录)
[root@YUM1 ~]# cp -rf /root/ks.cfg /var/ftp/ks/  (复制一份到新建的目录中)
[root@YUM1 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default  (在PXE文件中写入下列内容)
default auto
prompt 0
label auto
        kernel vmlinuz
        append ks=ftp://192.168.100.1/ks/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192
保存退出
[root@YUM1 ~]# cat <<a>> anaconda-ks.cfg  (在anaconda-ks.cfg文件中末尾追加下列内容)
> %packages
> @^gnome-desktop-environment
> @base
> @core
> @desktop-debugging
> @development
> @dial-up
> @directory-client
> @fonts
> @gnome-desktop
> @guest-agents
> @guest-desktop-agents
> @input-methods
> @internet-browser
> @java-platform
> @multimedia
> @network-file-system-client
> @networkmanager-submodules
> @print-client
> @x11
> chrony
> 
> %end
> a
******重启三个服务
[root@YUM1 ~]# systemctl restart dhcpd
[root@YUM1 ~]# systemctl restart vsftpd
[root@YUM1 ~]# systemctl restart tftp
至此kickstart无人值守配置完成,打开新建的虚拟机,发现安装时会自动进行(但是boot还得按回车)

无人值守
无人值守
至此kickstart无人值守成功!!!!

猜你喜欢

转载自blog.csdn.net/rzy1248873545/article/details/111307934