Linux--批量自动装机

实验环境

     随着某公司业务不断发展,服务器主机的数量也迅速增长,对于功能变更或新采购的服务器, 需要重新安装CentOS7操作系统,为了提高服务器装机效率,要求基于PXE网络实现全自动无人值 守批量安装。

需求描述

> 服务器的IP地址为“192.168.184.101”,所在网段为“192.168.184.0/24”。

> 搭建 PXE 网络装机服务器,为新采购的10台服务器裸机安装CentOS操作系统。

> 新装的系统为最小化安装,默认语言为“中文”。

> 为新装的系统自动配置好YUM仓库,root密码设置为“abc.123”。

11.3.1 搭建PXE远程安装服务器

       本例的PXE远程安装服务器集成了CentOS 7安装源,TFTP服务,DHCP服务,能够向客户机裸 机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。

1.准备CentOS 7安装源

       CentOS 7的网络安装源一般通过HTTP或FTP协议发布,另外也支持NFS(Network File System, 网络文件系统)协议,关于NFS的配置请参阅其他资料,这里不再赘述。

例如,若采用FTP协议发布安装源,可以在服务器上部署一个YUM软件仓库。

[root@node01 centos7]# mount /dev/cdrom /mnt/
[root@node01 ~]# mkdir /var/ftp/centos7
[root@node01 ~]# cp -rf /mnt/* /var/ftp/centos7/
[root@node01 ~]# systemctl start vsftpd

2. 安装并启用TFTP服务

     TFTP服务由tftp一server软件包提供,配置文件位于/etc/xinetd.d/tftp,配置时只要将“disable= yes”改为“disable =no",然后启动TFTP服务即可。

[root@node01 ~]# yum -y install tftp-server
[root@node01 ~]# vim /etc/xinetd.d/tftp
[root@node01 ~]# systemctl start tftp
[root@node01 ~]# systemctl enable tftp

3.准备Linux内核、初始化镜像文件

     用于PXE网络安装的Linux内核,初始化镜像文件可以从CentOS7系统光盘获得,分别为vmlinuz 和 initrd,img,位于文件夹images/pxeboot下。找到这两个文件并将其复制到tftp服务的根目录下。

[root@node01 ~]# cd /mnt/images/pxeboot/
[root@node01 pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/

4.准备PXE引导程序、启动菜单文件

用于PXE网络安装的引导程序为pxelinux.0,由软件包syslinux提供。安装好软件包 syslinux,然 后将文件pxelinux.0也复制到tftp服务的根目录下。

[root@node01 ~]# yum -y install syslinux
[root@node01 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

      启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动 菜单文件为default,应放置在tftp根目录的pxelinux.ctg子目录下,典型的启动菜单配置可参考以下 操作手动建立。

[root@node01 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@node01 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

default auto   //指定默认入口名称
prompt 1       //1表示等待用户控制
label auto
   kernel vmlinuz
   append initrd=initrd.img method=ftp://192.168.184.101/centos7
label linux text
   kernel vmlinuz
   append text initrd=initrd.img method=ftp://192.168.184.101/centos7
 
label linux rescue
   kernel vmlinuz
   append rescue initrd=initrd.img method=ftp://192.168.184.101/centos7

     上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。其中, prompt 用来设置是否等待用户选择;label 用来定义并分隔启动项;kernel 和 append 用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人值守安装时只需要一个入口就够了。

5. 安装并启用DHCP服务

      由于PXE客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文 件,需要预先配置好DHCP服务来自动分配地址并告知引导文件位置。如PXE服务器的IP地址为 192.168.184.101,DHCP地址池为192.168.8.150~192.168.8.200.则可以参考以下操作来搭建DHCP 服务器。

[root@node01 ~]# yum -y install dhcp
[root@node01 ~]# vim /etc/dhcp/dhcpd.conf

subnet 192.168.184.0 netmask 255.255.255.0 {
   range 192.168.184.150 192.168.184.200;
   option domain-name-servers 202.96.128.86;
   option domain-name "bdqn.com";
   option routers 192.168.184.2;
   option broadcast-address 192.168.184.255;
   default-lease-time 21600;
   max-lease-time 43200;
   next-server 192.168.184.101;  //指定TFTP服务器的地址
   filename "pxelinux.0";        //指定PXE引导程序的文件名
}


[root@node01 ~]# systemctl start dhcpd
[root@node01 ~]# systemctl enable dhcpd


       从上述过程可以看到,与一般DHCP服务不同的是,配置文件中增加了netx-server和filename 这两行记录,分别用来指定TFTP服务器的地址和PXE引导程序的文件名。

11.3.2 验证PXE网络安装

     搭建好PXE远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC裸机,一般不需要额外设置:若要为已有系统的主机重装系统,则可能需要修改BIOS设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;若使用VMware创建的虚拟机进行测试,虚拟机 内存至少需要2GB,否则在启动安装时会报错。

      如果服务器配置正确,网络连接、PXE支持等都没有问题,则客户机重启后将自动配置IP地 址,然后从TFTP服务器中获取引导程序pxelinux.0,并根据引导菜单配置提示用户指定启动入口,如图中所示。

 

                                                      PXE网络安装的引导菜单 

       在提示字串“boot:”后直接按Enter键(或执行“auto”命令),将会进入默认的图形安装入口; 若执行“linux text”命令,则进入文本安装入口;若执行“linux rescue”命令,则进入救援模式。

      直接按Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如图中所 示。若能够成功到达这一步,说明PXE网络安装基本成功。后续安装步骤与使用光盘的正常安装类 似,这里不再叙述。

                                                     

                                                      进入图形化安装配置程序 

11.4 实现Kickstart无人值守安装

      上一节介绍了通过PXE技术远程安装CentOS7系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性.然而,安装期间仍需要手动选择语言,键盘类型、指定 安装源等一系列交互操作,当需要批量安装时非常不方便。

      本节将进一步学习如何实现无人值守自动安装,通过使用Kickstart 工具配置安装应答文件,自 动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。

11.4.1准备安装应答文件

       在CentOS 7系统中安装system-config-kickstart 工具之后.即可通过图形化向导工具来配置安 装应答文件,如果用户对自动应答文件的配置比较熟悉,也可以直接编辑CentOS 7安装后自动创建 的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。

1.配置安装应答参数

       通过桌面菜单“应用程序”→“系统工具"→“Kickstart"即可打开“Kickstart配置程序”窗口。在“Kickstart配置程序”窗口中,可以针对基本配置、安装方法,引导装载程序选项,分区信息、网 络配置等各种安装设置进行指定,如图中所示。

[root@node01 ~]# yum -y install system-config-kickstart

                                                       “Kickstart 配置程序”窗口 

1)基本配置及安装方法

       “基本配置”可参考图中来指定,例如,将默认语言设为“中文(简体)”,时区设为 “Asia/Shanghai”,根口令设为“abc.123”,高级配置中勾选“安装后重启”。 在“安装方法”界面中,应正确指定CentOS7的安装方法,如下图所示。若有用户验证信 息也需一并指定。在“引导装载程序选项”界面中,选择安装新引导装载程序。

 

                                                      指定CentOS7的安装方法 

2)分区信息

      在“分区信息”界面中,需正确规划硬盘分区方案。例如,可划分一个1024MB的/boot分区、2GB的swap分区,将剩余空间划分给根分区,如图中所示。

                                                           指定硬盘分区方案 

3)网络配置及防火墙配置

在“网络配置”界面中,添加一个网络设备“ens33”,将网络类型设为“DHCP”。

在“防火墙配置”界面中,可以选择禁用SELinux、禁用防火墙。

4)软件包选择

       CentOS7系统开始不再提供软件包的选择,如图中所示,如果需要安装软件包,可以根据需 要将/root/anaconda-ks.cfg的软件包安装脚本复制到ks.cfg文件中,只需要复制%packages到%end 部分即可,在%packages到%end之间,包含以@开头的软件包列表,将不需要的软件名删除,剩下 的就是系统会自动安装的软件包。例如,仅保留以下内容即为采用最小化安装。

 以下操作将在完成脚本保存后再进行

[root@node01 ~]# vim anaconda-ks.cfg  //将以下内容复制到 [root@node01 ~]# vim ks.cfg

%packages
@^gnome-desktop-environment
@base
@compat-libraries
@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

 

5)安装脚本

      在“预安装脚本”界面、“安装后脚本”界面中,可以分别添加在安装前,安装后自动运行的可 执行语句。此项设置使服务器的自动化配置变得更加容易,例如,可以使客户机在完成安装后自动 设置YUM软件仓库,如图中所示,需要注意的是,应确保所编写的代码能够正确执行,以免安装失败。

6)其他信息

若没有特殊需求,在 “验证” 界面、“显示配置” 界面中,保持默认设置就可以了。

rm -f /etc/yum.repos.d/*
echo -e '[base]\nname=CentOS7.3\nbaseurl=ftp://192.168.184.101/centos7\nenabled=1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/etc/yum.repos.d/centos7.repo

2.保存自动应答文件

      选择“Kickstart 配置程序”窗口的“文件“→“保存”命令,指定目标文件夹、文件名,将配置 好的应答参数保存为文本文件,如/root/ks.ctg。以后若要修改此应答配置,可以在“Kickstart配置 程序”窗口中打开进行调整,或者直接用Vl等文本编辑工具进行修改。

点左上角文件 > 保存 

11.4.2 实现批量自动装机

       有了自动安装的应答文件之后,只要将其放置PXE安装服务器的FTP目录下,并适当修改引导 菜单,就可以实现基于网络的批量自动装机了。

1.启用自动应答文件

      在PXE远程安装服务器中,将上一节建立的应答文件复制到/var/ftp/centos7目录下,使客户机 能够通过ftp://192.168.184.101/centos7/ks.cfg 访问:然后编辑引导菜单文件default,添加ks引导 参数以指定ks.cfg应答文件的URL路径。

[root@node01 ~]# cp /root/ks.cfg /var/ftp/ks.cfg
[root@node01 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

default auto
prompt 0      //0表示不等待用户控制
label auto
   kernel vmlinuz
   append initrd=initrd.img method=ftp://192.168.184.101/centos7
ks=ftp://192.168.184.101/ks.cfg  //新加入的内容,指定ks.cfg应答文件的URL路径
label linux text
   kernel vmlinuz
   append text initrd=initrd.img method=ftp://192.168.184.101/centos7

label linux rescue
   kernel vmlinuz
   append rescue initrd=initrd.img method=ftp://192.168.184.101/centos7

2.验证无人值守安装

       启用自动应答安装之后,当客户机每次以PXE方式引导时,将自动下载ks.cfg应答配置文件, 然后根据其中的设置安装CentOS 7系统,而无须手工干预,如图中所示,这样就可以同时为多台客户机安装系统了。

      客户机安装完成以后,检查其YUM软件仓库配置,可以发现已经按照“安装后脚本”的设置自动建立了/etc/yum.repos.d/centos7.repo文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285052.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面向对象项目之图书馆管理系统】

项目需求 不同的用户有不同的菜单,然后进行操作。 设计思路 通过需求我们可以提取图书类,书架类 图书类存放图书的基本信息,书架类存放书本及其它的数量,以及操作图书的方法等等。接口类(用来操作书架里面的图书&…

2023年“中银杯”安徽省网络安全B模块(部分解析)

前言 以下是2023年中银杯安徽省网络安全B模块题目,镜像可以私聊我 B模块安全事件响应/网络安全数据取证/应用安全(400 分) B-1:CMS网站渗透测试 任务环境说明: √服务器场景:Server2206(关…

虚幻UE 材质-PDO像素深度偏移量

2024年的第一天!!!大家新年快乐!!! 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

计算图与动态图机制

一、计算图 计算图是用来描述运算的有向无环图 计算图有两个主要元素:结点(Node)和边(Edge) 结点表示数据,如向量,矩阵,张量边表示运算,如加减乘除卷积等 用计算图表…

nginx源码分析-4

这一章内容讲述nginx的模块化。 ngx_module_t:一个结构体,用于描述nginx中的各个模块,其中包括核心模块、HTTP模块、事件模块等。这个结构体包含了一些模块的关键信息和回调函数,以便nginx在运行时能够正确地加载和管理这些模块。…

【话题】ChatGPT等大语言模型为什么没有智能2

我们接着上一次的讨论,继续探索大模型的存在的问题。正巧CSDN最近在搞文章活动,我们来看看大模型“幻觉”。当然,本文可能有很多我自己的“幻觉”,欢迎批评指正。如果这么说的话,其实很容易得出一个小结论——大模型如…

【Linux】socket基础API

目录 1. 创建socket(TCP/UDP,客户端服务器) 1.1 第一个参数——domain 1.2 第二个参数——type 1.3 第三个参数——protocol 2. 绑定socket地址(TCP/UDP,服务器) 2.1 字节序及转换函数 2.2 IP地址及…

听GPT 讲Rust源代码--library/proc_macro

File: rust/library/proc_macro/src/bridge/rpc.rs 在Rust源代码中,rust/library/proc_macro/src/bridge/rpc.rs文件的作用是实现了Rust编程语言的编译过程中的远程过程调用(RPC)机制。 这个文件定义了与编译器的交互过程中使用的各种数据结构…

bilibili深入理解计算机系统笔记(3):使用C语言实现静态链接器

本文是2022年的项目笔记,2024年1月1日整理文件的时候发现之,还是决定发布出来。 Github链接:https://github.com/shizhengLi/csapp_bilibili 文章目录 可执行链接文件(ELF)ELF headerSection header符号表symtab二进制数如何和symtab结构成员…

OpenCV-Python(29):图像特征

目录 目标 背景介绍 常用特征 应用场景 目标 理解什么是图像特征 为什么图像特征很重要 为什么角点很重要 背景介绍 相信大多数人都玩过拼图游戏吧。首先你们拿到一张图片的一堆碎片,你要做的就是把这些碎片以正确的方式排列起来从而重建这幅图像。问题是&…

【并发设计模式】聊聊Thread-Per-Message与Worker-Thread模式

在并发编程中,核心就是同步、互斥、分工。 同步是多个线程之间按照一定的顺序进行执行,比如A执行完,B在执行。而互斥是多个线程之间对于共享资源的互斥。两个侧重点不一样,同步关注的是执行顺序,互斥关注的是资源的排…

RedisTemplate序列化

SpringBoot整合Redis,配置RedisTemplate序列化。如果使用StringRedisTemplate,那么不需要配置序列化,但是StringRedisTemplate只能存储简单的String类型数据,如图: 如果使用StringRedisTemplate存储一个常规对象&#…

python实现Ethernet/IP协议的客户端(三)

Ethernet/IP是一种工业自动化领域中常用的网络通信协议,它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一,Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端,可…

灸哥问答:软件架构在软件研发中的作用

软件架构在软件开发中扮演着至关重要的角色。我们在软件研发的过程中,类比于建造一座公寓楼,而软件架构就像是盖楼之前的设计图纸,如果没有设计图纸就直接盖楼,可想而知带来的后果是什么。我对软件架构的作用表现总结如下&#xf…

Go语言TCP Socket编程

:::tip 声明 本文源于Go语言TCP Socket编程 | Tony Bai,可能会有稍微的修改。 ::: 文章目录 一、模型二、TCP连接的建立对于客户端而言,连接的建立会遇到如下几种情形:1、网络不可达或对方服务未启动2、对方服务的listen backlog满3、网络延…

【重磅新品】小眼睛科技推出紫光同创盘古系列FPGA开发板套件,盘古200K开发板,紫光同创PG2L200H,Logos2系列

FPGA,即现场可编程门阵列,作为可重构电路芯片,已经成为行业“万能芯片”,在通信系统、数字信息处理、视频图像处理、高速接口设计等方面都有不俗的表现。近几年,随着国家战略支持和产业发展,国产FPGA迎来迅…

PyTorch官网demo解读——第一个神经网络(4)

上一篇:PyTorch官网demo解读——第一个神经网络(3)-CSDN博客 上一篇我们聊了手写数字识别神经网络的损失函数和梯度下降算法,这一篇我们来聊聊激活函数。 大佬说激活函数的作用是让神经网络产生非线性,类似人脑神经元…

Python算法例33 删除数字

1. 问题描述 给出一个字符串A,表示一个n位的正整数,删除其中k位数字,使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数,本例将找到删除k个数字之后的最小正整数,其中n≤240,k≤n。 2. 问题示例 …

HarmonyOS4.0系统性深入开发10卡片事件能力说明

卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 接口定义:postCardAction(component: Object, action: Object): void 接口…

性能优化(CPU优化技术)-ARM Neon详细介绍

本文主要介绍ARM Neon技术,包括SIMD技术、SIMT、ARM Neon的指令、寄存器、意图为读者提供对ARM Neon的一个整体理解。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC&#xff09…