当前位置: 首页 > news >正文

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/defaultdefault auto   //指定默认入口名称
prompt 1       //1表示等待用户控制
label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.184.101/centos7
label linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.184.101/centos7label linux rescuekernel vmlinuzappend 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.confsubnet 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/defaultdefault auto
prompt 0      //0表示不等待用户控制
label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.184.101/centos7
ks=ftp://192.168.184.101/ks.cfg  //新加入的内容,指定ks.cfg应答文件的URL路径
label linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.184.101/centos7label linux rescuekernel vmlinuzappend rescue initrd=initrd.img method=ftp://192.168.184.101/centos7

2.验证无人值守安装

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

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

相关文章:

Linux--批量自动装机

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

病理HE学习贴(自备)

目录 正常结构 癌症HE 在线学习 以胃癌的学习为例 正常结构 1:胃粘膜正常结构和细胞分化 ●表面覆盖小凹上皮细胞(主要标志物:MUC5AC)以保护黏膜。 ●胃底腺固有腺体由黏液颈细胞(MUC6)、主细胞(Pepsinogen l)和壁细胞(Proton pump α-subunit)组…...

关于协同过滤算法在物联网的应用-基于用户行为数据和物联网设备数据,以此提供个性化的智能家居控制推荐服务

关于协同过滤算法在物联网领域的应用的一个案例是基于用户行为数据和物联网设备数据,为用户提供个性化的智能家居控制推荐服务。 具体实现如下: 数据收集:收集用户对智能家居设备的使用行为数据,包括设备的打开、关闭、调节等操…...

计算机网络(6):应用层

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。即使是对等通信方式&#x…...

ESP32:整合存储配网信息和MQTT笔记

文章目录 1.给LED和KEY的所用IO增加配置项1.1 增加配置文件1.2 修改相应的c源码 2. 把mqtt\tcp的工程整合到一起2.1 在何处调用 mqtt_app_start() 3. 测试MQTT4. 完整的工程源码 有一段时间没有玩ESP32,很多知识点都忘记了。今天测试一下MQTT,做个笔记。…...

nginx源码分析-4

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

【Unity美术】Unity工程师对3D模型需要达到的了解【二】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…...

《微信小程序开发从入门到实战》学习六十九

6.6 网络API 6.6.3 下载文件API 使用 wx.downloadFile 接口是可使小程序发起HTTPS GET请求,下载文件到手机端。 单次下载的最大文件为50MB。接受Obkect参,参支持属性如下: url(必填):下载文件的URL he…...

2022年全球软件质量效能大会(QECon北京站2022)-核心PPT资料下载

一、峰会简介 当前,新一轮科技革命和产业变革正在重塑全球经济格局,以云计算为代表的新一代信息技术创新活跃,与实体经济深度融合,推动泛在连接、数据驱动、智能引领的数字经济新形式孕育而生。 新兴技术的出现给测试乃至整个软…...

ILI9481 TFT3.5寸屏STM32F446ZEXX FMC驱动方式详解

图片来源于网络,如若侵权请联系博主删除 文章目录 1. 背景2. 基础知识2.1 TFT-LCD2.2 硬件接线2.3 FMC2.4 ILI9481 3. 软件抽象 1. 背景 最近做项目需要,博主在某宝上买了一块3.5寸的TFT屏,店家虽然发了资料,但是往产品上移植驱动…...

010、切片

除了引用,Rust还有另外一种不持有所有权的数据类型:切片(slice)。切片允许我们引用集合中某一段连续的元素序列,而不是整个集合。 考虑这样一个小问题:编写一个搜索函数,它接收字符串作为参数&a…...

【华为数据之道学习笔记】8-6 质量改进

数据质量改进致力于增强满足数据质量要求的能力。数据质量改进消除系统性的问题,对现有的质量水平在控制的基础上加以提高,使质量达到一个新水平、新高度。 质量改进的步骤本身就是一个PDCA循环。质量改进包括涉及企业跨组织的变革性改进(BTM…...

python多环境管理工具——pyenv-win安装与使用教程

目录 pyenv-win简介 pyenv-win安装 配置环境变量 pyenv的基本命令 pyenv安装py环境 pyenv安装遇到问题 pycharm测试 pyenv-win简介 什么是pyenv-win: 是一个在windows系统上管理python版本的工具。它是pyenv的windows版本,旨在提供类似于unix/li…...

Excel报表框架(ExcelReport)极简化解决复杂报表导出问题

Excel Report 耗费了半个月的时间,终于在元旦这三天把报表框架开发完成了,使用该框架你可以非常方便的导出复杂的Excel报表。 项目开源地址: GiteeGithub 前言 不知道各位在使用POI开发报表导出过程中遇到过以下的情况: 频繁…...

常用设计模式全面总结版(JavaKotlin)

这篇文章主要是针对之前博客的下列文章的总结版本: 《设计模式系列学习笔记》《Kotlin核心编程》笔记:设计模式【Android知识笔记】FrameWork中的设计模式主要为了在学习了 Kotlin 之后,将 Java 的设计模式实现与 Kotin 的实现放在一起做一个对比。 一、创建型模式 单例模…...

Docker自建私人云盘系统

Docker自建私人云盘系统。 有个人云盘需求的人,主要需求有这几类: 文件同步、分享需要。 照片、视频同步需要,尤其是全家人都是用的同步。 影视观看需要(分为家庭内部、家庭外部) 搭建个人网站/博客 云端OFFICE需…...

python replace()方法 指定替换指定字段

replace()方法 使用方法 str.replace(old, new[, max]) Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 示例 #!/usr/bin/pythonstr "this is s…...

【仅供测试】

https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd 测试网站: https://www.alipan.com/s/tJ5uzFvp2aF // UserScript // name 阿里云盘助手 // namespace http://tampermonkey.net/ // …...

C#/WPF JSON序列化和反序列化

什么是json json是存储和交换文本信息的方法,类似xml。但是json比xml更小,更快,更易于解析。并且json采用完全独立于语言的文本格式(即不依赖于各种编程语言),这些特性使json成为理想的数据交换语言。json序列化是指将对象转换成j…...

Java——ArraryList线程不安全

目录 前言一、为什么ArraryList线程不安全?二、具体可以看debug源码后续敬请期待 前言 Java——ArraryList线程不安全 一、为什么ArraryList线程不安全? 因为没有synchronized,这个关键字做线程互斥,没有这个关键字,…...

基于Java SSM框架实现健康管理系统项目【项目源码】

基于java的SSM框架实现健康管理系统演示 JSP技术 JSP是一种跨平台的网页技术,最终实现网页的动态效果,与ASP技术类似,都是在HTML中混合一些程序的相关代码,运用语言引擎来执行代码,JSP能够实现与管理员的交互&#xf…...

PostgreSQL16.1(Windows版本)

1、卸载原有的PostgreSQL   点击Next即可。  点击OK即可。 卸载完成。 2、安装 (1) 前两部直接Next,第二部可以换成自己想要安装的路径。 (2) 直接点击Next。…...

使用nodejs对接arXiv文献API

GPT4.0国内站点: 海鲸AI-支持GPT(3.5/4.0),文件分析,AI绘图 要使用 Node.js 对接 arXiv 的 API,你可以使用 axios 库或者 Node.js 的内置 http 模块来发送 HTTP 请求。以下是一个简单的例子,展示了如何使用 axios 来获取 arXiv 上…...

mac 安装pyaudio

直接安装pyaudio时报错 ERROR: Could not build wheels for PyAudio, which is required to install pyproject.toml-based projects需要先安装portaudio,打开终端执行: brew install portaudio再安装pyaudio成功 pip3 install pyaudioportaudio是一个…...

k8s学习 — 各章节重要知识点

k8s学习 — 各章节重要知识点 学习资料k8s版本0 相关命令0.1 yaml配置文件中粘贴内容格式混乱的解决办法0.2 通用命令0.3 Node 相关命令0.4 Pod 相关命令0.5 Deployment 相关命令0.6 Service 相关命令0.7 Namespace 相关命令 1 k8s学习 — 第一章 核心概念1.1 Pod、Node、Servi…...

go slice源码探索(切片、copy、扩容)和go编译源码分析

文章目录 概要一、数据结构二、初始化2.1、字面量2.2、下标截取2.2.1、截取原理 2.3、make关键字2.3.1、编译时 三、复制3.1、copy源码 四、扩容4.1、append源码 五:切片的GC六:切片使用注意事项七:参考 概要 Go语言的切片(slice…...

电影“AI化”已成定局,华为、小米转战入局又将带来什么?

从华为、Pika、小米等联合打造电影工业化实验室、到Pika爆火,再到国内首部AI全流程制作《愚公移山》开机……业内频繁的新动态似乎都在预示着2023年国内电影开始加速进入新的制片阶段,国内AI电影热潮即将来袭。 此时以华为为首的底层技术科技企业加入赛…...

小程序for循环中key值的作用?

在小程序的 for 循环中,key 值有两个主要作用: 识别列表项的唯一性:当在列表渲染时使用 for 循环,每个列表项都应该具有一个唯一的 key 值。这个 key 值用于帮助小程序识别每个列表项的唯一性,以便在列表发生变化时进行…...

深入理解Dockerfile —— 筑梦之路

FROM 基础镜像 可以选择现有的镜像,比如centos、debian、apline等,特殊镜像scratch,它是一个空镜像。 如果你以 scratch 为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。 不…...

Vue3 魔法:轻松删除响应式对象的属性

🧙‍♂️ 诸位好,吾乃诸葛妙计,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之笔记,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &…...