如何进行一次大批量部署服务器安装?_机房批量安装软件-程序员宅基地

技术标签: linux  

前言

  • 楼主所在实验室的机房近期进来大批量的新服务器,装机成了最大烦恼,因为总是遇到一些机械式的重复工作。如何进行一次大批量部署服务器安装成了楼主现在必须要解决的问题!于是询问老师和查阅资料,成功学会了这门批量装机的手艺。让开,我要开始装B喽哈哈~

准备知识

批量装机软件介绍

  • Redhat主要有两种方式:kickstart和Cobbler。

  • kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。(楼主使用这种方法)

  • Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成。(这里不做介绍)

什么是PXE?

  • 百度百科:PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
  • PXE最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该技术的PC在网络方式下的运行速度要比有盘PC快3倍以上。当然使用PXE的PC也不是传统意义上的TERMINAL终端,因为使用了PXE的PC并不消耗服务器的CPU,RAM等资源,故服务器的硬件要求极低。
  • PXE启动原理
    当计算机引导时,BIOS把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。
  • kickstart实现方式依赖于PXE环境。通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)

PXE的工作流程

  • PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server及HTTPD Server部署在在PXE Server端。Bootstrap文件、配置文件以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录/var/lib/tftpboot/下,而ks.cfg 及 系统内核部署在HTTPD server目录/var/www/html/。
    在这里插入图片描述

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

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

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

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

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

  • (6)客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。

PXE必要条件

  • pxe client必须支持pxe用户端功能,并且开机时选择网络启动,这样系统才能以网络的方式进入pxe启动程序

  • pxe服务器必须至少提供DHCP、TFTP、HTTPD的服务才行,且其中

    (1)DHCP服务器必须能够除为pxe client分配ip地址外,还需告知tftp所在的位置(即告诉pxelinux.0的文件位置)

    (2)TFTP服务器则为pxe client 提供bootloader 及 kernel 等重要文件下载服务

    (3)使用HTTPD服务器提供pxe client所需程序及软件来源(共享源)

什么是TFTP?

  • 百度百科:TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,提供不复杂、开销不大的文件传输服务。端口号为69

什么是syslinux?

  • 百度百科:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。

批量部署服务器安装步骤:

自动应答脚本制作工具kickstart

  • 使用yum安装kickstart
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 注意:我们之所以使用图形化安装,是因为,图形化界面相比于直接写配置文件更方便一些,而且kickstart可以根据你的配置自动生成配置文件,省去了一些繁琐的书写,方便我们修改。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
vim ks.cfg			##查看配置文件,可以进行修改

在这里插入图片描述
在这里插入图片描述

ksvalidator  ks.cfg			##进行语法错误检测

在这里插入图片描述

systemctl  start  httpd					##注意:之前需要开启httpd服务,/var/www/html/目录是在开启httpd服务的情况下自动生成
vim  /etc/httpd/conf/httpd.conf			##查看httpd的配置文件

在这里插入图片描述

  • 检测ks.cfg是否通过httpd共享成功:在网址输入httpd服务器的ip及ks.cfg
    在这里插入图片描述

利用kickstart优化自动安装虚拟机脚本

  • 我们之前的内容写过自动安装虚拟机的脚本,但是我们进入虚拟机后还需要一些设置,例如时区,硬盘分区,root密码等,所以,我们可以利用ks来进行自动化的参数设置,实现批量设置虚拟机参数。
vim vm_create.sh
#!/bin/bash
 virt-install \
 --name $1 \
 --ram 1024 \
 --vcpus 1 \
 --disk /var/lib/libvirt/images/$1.qcow2,bus=virtio,size=8 \
 --network bridge=br0,model=virtio \
 --location http://172.25.254.100/westos/ \				#指定网络系统镜像源,使用http协议
 --extra-args "ks=http://172.25.254.100/ks.cfg"  &			##执行自动应答脚本,指定参数设置,读取ks.cfg
  • 利用这个我们就可以更彻底的自动安装虚拟机了。

配置DHCP服务器

  • (1)使用yum安装DHCP服务
yum install dhcpd
  • (2)修改DHCP的配置文件
vim  /etc/dhcp/dhcpd.conf

在这里插入图片描述

  • (3)启动DHCP服务,关闭火墙
systemctl  start  dchpd
systemctl  stop  firewalld

配置HTTPD

  • (1)使用yum安装HTTPD服务
yum  install  httpd
  • (2)启动HTTPD服务
systemctl  start  httpd
  • (3)在共享目录/var/www/html/中创建一个目录/westos并挂载系统源
mkdir  /var/www/html/westos
mount  /dev/sr0  /var/www/html/westos   

配置TFTP服务器

  • (1)使用yum安装TFTP服务
yum  install  tftp
  • (2)启动TFTP服务
systemctl  start  tftp
  • (3)注意:7.0版本及以前的需要开启xinetd服务,才可以开启TFTP服务,7.0版本以后不需要
vim  /etc/xinetd.d/tftp

修改文配置文件:disable改为no,其他不变

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
}

在这里插入图片描述
修改完重启xinetd:systemctl restart xinetd

TFTP目录文件准备

  • (1)使用 syslinux 提供的bootstart
yum  install  syslinux				#获得pxelinux.0安装包
rpm  -ql  syslinux					#查看syslinux安装路径:/usr/share/syslinux——pxelinux.0的存储目录
cp  /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/  			# 复制pxelinux.0到 /var/lib/tftpboot 目录 

  • (2)配置pxelinux.cfg文件
1.	mkdir  /var/lib/tftpboot/pxelinux.cfg    		##创建pxelinux.cfg目录
2.	cp  /var/www/html/westos/isolinux/*  /var/lib/tftpboot/			
3.	cp  /var/lib/tftpboot/isolinux.cfg   /var/lib/tftpboot/pxelinux.cfg/default			##把isolinux.cfg引导文件拷贝到tftpd存储目录下的pxelinux.cfg文件中,并命名为default
4.	vim  /var/lib/tftpboot/pxelinux.cfg/default   				# 修改linux内核引导文件

在这里插入图片描述
内核引导文件default内容修改:添加http的系统源和ks.cfg系统安装配置文件脚本

在这里插入图片描述
在这里插入图片描述

测试实验

  • 首先在PXE server端需要检查:httpd、dhcpd、tftp和firewalld的状态,前三个全部开启,火墙关闭。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 使用VMManager开启一个虚拟机,设定默认启动方式为通过网络启动:
    图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 这样,我们就利用PXE server成功实现了批量部署服务器安装了!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38044888/article/details/89457564

智能推荐

《第一行代码》(第二版)广播的问题及其解决_代码里的广播错误-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏13次。1)5.2.1弹出两次已连接或者未连接这是因为你同时打开了流量和WiFi,他就会发出两次广播。2)5.3.1中发送自定义广播问题标准广播未能弹出消息:Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");sendBroadcast(intent);上述已经失效了。修改:Intent intent=new Intent("com.example.broadcasttest...._代码里的广播错误

K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)-程序员宅基地

文章浏览阅读249次。作者 |平名 阿里服务端开发技术专家导读:Kubernetes 作为云原生时代的“操作系统”,熟悉和使用它是每名用户的必备技能。本篇文章概述了容器服务 Kubernet..._k8知识库

TencentOS3.1安装PHP+Nginx+redis测试系统_tencentos-3.1-程序员宅基地

文章浏览阅读923次。分别是etc/pear.conf,etc/php-fpm.conf, etc/php-fpm.d/www.conf,lib/php.ini。php8安装基本一致,因为一个服务期内有2个版本,所以注意修改不同的安装目录和端口号。可以直接使用sbin下的nginx命令启动服务。完成编译安装需要gcc支持,如果没有,使用如下命令安装。安装过程基本一致,下面是安装7.1.33的步骤。执行如下命令,检查已经安装的包和可安装的包。执行如下命令,检查已经安装的包和可安装的包。执行如下命令,检查已经安装的包和可安装的包。_tencentos-3.1

urllib.request.urlopen()基本使用_urllib.request.urlopen(url)-程序员宅基地

文章浏览阅读3.1w次,点赞21次,收藏75次。import urllib.requesturl = 'https://www.python.org'# 方式一response = urllib.request.urlopen(url)print(type(response)) # <class 'http.client.HTTPResponse'># 方式二request = urllib.request.Req..._urllib.request.urlopen(url)

如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?-程序员宅基地

文章浏览阅读1.5k次,点赞12次,收藏15次。如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?

RS485总线常识_rs485 差分走綫間距-程序员宅基地

文章浏览阅读1.2k次。RS485总线常识 2010-10-12 15:56:36| 分类: 知识储备 | 标签:rs485 总线 传输 差分 |字号大中小 订阅RS485总线RS485采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A,B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所_rs485 差分走綫間距

随便推点

移植、制作uboot、Linux(一)_uboot制作-程序员宅基地

文章浏览阅读621次。u-boot、linux烧录_uboot制作

windows下安装git和gitbash安装教程_64-bit git for windows setup.-程序员宅基地

文章浏览阅读1.2w次,点赞10次,收藏44次。windos上git安装,git bash安装_64-bit git for windows setup.

环形链表(算法java)_java 实现环形链表-程序员宅基地

文章浏览阅读196次。环形链表(算法java)的两种解决方法_java 实现环形链表

docker部署Airflow(修改URL-path、更换postgres -->myslq数据库、LDAP登录)_airflow docker-程序员宅基地

文章浏览阅读5.7k次。Airflow什么是 Airflow?Airflow 的架构Airflow 解决哪些问题一、docker-compose 安装airflow(postgres)1、创建启动文件airflow-docker-compose.yml.1.1、添加挂载卷,需要修改airflow-docker-compose.yml的位置2、创建本地配置文件airflow.cfg2.1、如果想修改WEB URL地址,需要修改airflow.cfg中以下两个地方3、之后up -d直接启动即可web访问地址:二、存储数据库更换post_airflow docker

计算机毕业设计springboot高校教务管理系统532k79【附源码+数据库+部署+LW】-程序员宅基地

文章浏览阅读28次。选题背景:随着社会的发展和教育的普及,高校教务管理系统在现代高等教育中扮演着至关重要的角色。传统的手工管理方式已经无法满足高校日益增长的规模和复杂的管理需求。因此,开发一套高效、智能的教务管理系统成为了当今高校管理的迫切需求。选题意义:高校教务管理系统的开发具有重要的意义和价值。首先,它可以提高高校教务管理的效率和准确性。通过自动化处理学生选课、排课、考试安排等繁琐的事务,大大减轻了教务人员的工作负担,提高了工作效率。同时,系统可以实时更新学生信息和课程信息,减少了数据错误和冗余,保证了管理的准确性

javaint接收float_Java Integer转换double,float,int,long,string-程序员宅基地

文章浏览阅读132次。首页>基础教程>常用类>常用 Integer类Java Integer转换double,float,int,long,stringjava中Integer类可以很方便的转换成double,float,int,long,string等类型,都有固定的方法进行转换。方法double doubleValue() //以 double 类型返回该 Integer 的值。flo..._java integet接收float类型的参数

推荐文章

热门文章

相关标签