Linux配置批量装机详解

项目名称:机房PXE全自动批量装配

任务目标:机房里有一批(200多台)计算机,需要为其安装CentOS 7.5操作系统,并且部署好Web服务 …… 。
完成时间:24小时内需要交付

    应用场景:

1)XX学校机房
2)红帽认证考试环境
3)企业集群节点部署
4)数据中心服务器批量配置
Shell脚本

项目需求:
  1. 为一批机器(比如裸机)快速安装CentOS7操作系统
  2. 通过独立网络(不要有其他的DHCP服务器,必要时应关闭VMware的DHCP)来实现
  3. 自己整理一份Word版的实验报告,以备不时之需

    任务分析
    任务一:准备一台CentOS7服务器
    任务二:提供DHCP服务
    任务三:为客户机提供软件包资源(Web方式)
    任务四:提供网络启动相关的文件(构建TFTP启动服务器)
    任务五:测试PXE网络启动及安装
    任务六:提供自动应答文件(回答安装过程中的各种问题)
    任务七:客户机无人值守安装测试

TFTP,简单FTP协议(UDP 161)
FTP,TCP 21/20 。。。

相关知识:快速获取XX命令或者配置文件的使用说明/手册
man 命令名
或者
man 配置文件名

在英文环境下运行XX命令行
LANG= XX命令行

Shell脚本,长脚(自己跑)的包含了很多可执行命令行的文本文件
vim 脚本文件
。。。。。
chmod +x 脚本文件

相关知识:

PXE,预启动环境(Pre-boot eXcute Environment)
—— 默认集成在网卡BOOTROM芯片内(pxeclient)

额外准备:PXE服务器(为客户机装系统、为客户机提供系统)

如何提供一个PXE批量装机的服务器端:
1)DHCP服务,提供IP地址、告知引导服务器在哪、告知获取一个启动文件
2)TFTP服务,提供启动内核、启动配置文件等等
3)HTTP或FTP服务,提供CentOS7软件包资源
4)配置自动安装

实现过程

任务一: 准备一台CentOS7服务器

1)配置好固定主机名pxesvr、IP地址 192.168.10.7/24
#hostnamectl set-hostname pxesvr
#nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.10.7/24 connection.autoconnect yes
#nmcli connection up ens33
2)关闭防火墙、禁用SELinux保护机制
#systemctl disable firewalld --now //禁止开机自启,并立即停止
vim /etc/selinux/config
SELINUX=disabled
setenforce 0
3)把CentOS7的光盘(如果是虚拟机,要连接好ISO文件)挂载到 /mnt/dvd
mkdir /mnt/dvd
#mount /dev/cdrom /mnt/dvd
4)使用 /mnt/dvd 目录作为临时的软件源
rm -rf /etc/yum.repos.d/*.repo
yum-config-manager --add file:///mnt/dvd
vim /etc/yum.conf
gpgcheck=0
yum repolist

!!!! 如果当前主机中没有网络连接,需要先添加连接,再配置地址
1)找到网卡设备的名字(比如ens33)
nmcli device status
.. ..
2)为网卡ens33添加连接(比如也叫ens33)
格式:nmcli con add con-name 连接名 ifname 网卡名 type ethernet
nmcli connection add con-name ens33 ifname ens33 type ethernet

Linux配置文件内,# 开始的部分表示注释

任务二:提供DHCP服务

1)为客户机分配IP地址相关参数
2)告诉客户机下一步去找哪一台服务器、去索取一个网卡启动文件
!!!! Linux系统配置文件中的注释标记 #
!!!! 停用工作网络(比如NAT)中其他DHCP服务(比如VMware自带),避免冲突

yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
next-server 192.168.10.7; //告知下一个服务器(TFTP)的地址
filename "pxelinux.0"; //告知需要下载的网卡启动文件名
}
systemctl enable dhcpd --now //设置开机自启,并立即启动

其他配置参考:
#option routers 默认网关地址;
#option domain-name-servers DNS服务器1地址,DNS服务器2地址;
#default-lease-time 3600; //默认租约时间
#max-lease-time 7200; //最大租约时间

!!!! DHCP服务排错 ——
1)检查服务状态
systemctl status dhcpd
状态正常应该是 绿色的 active (running)
systemctl restart dhcpd
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details. ==》说明配置文件有错误,或者本机的IP地址网段不符。

2)获知配置文件哪里有错、有什么样的错误
vim /var/log/messages //Linux服务器的日记
.. .. 从最后一行往前找
/etc/dhcp/dhcpd.conf line 10: 。。。。。 //第10行有XX错误

!!!! 本机测试以DHCP方式获取地址:
dhclient -d ens33 //-d表示调试模式,不真正修改地址
.. ..
bound to 192.168.10.X
.. ..
按Ctrl + C 终止测试

任务三:为客户机提供软件包资源(Web方式)

1)装httpd包
yum -y install httpd
2)部署软件包资源
mkdir /var/www/html/cos7dvd
cp -r /mnt/dvd/* /var/www/html/cos7dvd
.. .. 请耐心等待,不要中断
3)起httpd服务
systemctl enable httpd --now

从本机浏览器访问 http://192.168.10.7/cos7dvd,能看到软件资源页

!!!! Web配置(如果原来配置过虚拟Web主机,需要注意)
1)一旦启用虚拟主机以后,默认ServerName、DocumentRoot失效
2)如果浏览器提交过来的HTTP请求不属于任何已经定义的某一个虚拟主机,那么以第一个虚拟主机的网页目录做反馈
vim /etc/httpd/conf.d/vhosts.conf //在第1行插入以下内容
<VirtualHost *:80>
DocumentRoot /var/www/html
</VirtualHost>
systemctl enable httpd --now

任务四:提供网络启动相关的文件(构建TFTP启动服务器)

1)网卡启动文件 pxelinux.0
由软件包 syslinux 提供(/usr/share/syslinux/pxelinux.0)
2)启动菜单配置 pxelinux.cfg/default (配置模块文件、背景图片……)、加载CentOS7系统安装程序(vmlinuz、initrd.img)
从CentOS7光盘目录isolinux/下获得
yum -y install tftp-server //安装TFTP服务软件
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ //部署启动文件
cp /mnt/dvd/isolinux/* /var/lib/tftpboot/ //部署配套文件
cd /var/lib/tftpboot/
mkdir pxelinux.cfg //创建配置目录
cp isolinux.cfg pxelinux.cfg/default //建立默认菜单配置
vim pxelinux.cfg/default
查找 label linux,修改下方的 append 行,inst.stage2=后指定软件包来源地址
append initrd=initrd.img inst.stage2=http://192.168.10.7/cos7dvd
systemctl enable tftp --now //启动TFTP服务端

测试TFTP资源是否可以下载:
cd /root
yum -y install tftp
tftp 192.168.10.7 -c get pxelinux.0
ls -lh pxelinux.0

任务五:测试PXE网络启动及安装

1)新建一台虚拟机(CentOS64位、内存>2G)
2)把虚拟机开机客户机从网卡启动
---- DHCP自动获取到地址
---- 连接TFTP服务器
---- 下载pxelinux.0启动文件
---- 获取菜单配置文件 pxelinux.cfg/default
3)看到安装菜单 ==》选择安装Install CentOS7
---- 下载 vmlinuz、initrd.img
---- 运行内核文件、加载安装程序、确保能看到图形选语言界面、……
---- 手动指定安装来源 http://192.168.10.7/cos7dvd
---- 后续过程与光盘安装类似,可以不用完成安装,关闭虚拟机即可

!!!! 若客户机的内存太小,开机PXE引导时容易出现内核崩溃现象
kernel panic 内核崩溃(恐慌)

kickstart无人值守/自动应答技术

kick,踢
start,开始

Shell脚本(自己会跑/运行的文本)

kickstart无人值守技术
kick,start

Shell脚本,长脚(+x)的文本

rm -rf /etc/yum.repos.d/*.repo
echo ‘[development]
name=CentOS7
baseurl=http://192.168.10.7/cos7dvd/
enabled=1
gpgcheck=0‘ > /etc/yum.repos.d/centos7.repo

任务六:提供自动应答文件(回答安装过程中的各种问题)

1)如何获取应答文件
vim /etc/yum.repos.d/.repo
[development] //源的ID要求 改成 development
yum -y install system-config-kickstart
system-config-kickstart
基本配置:语言、时区、管理密码
安装方法:全新安装、HTTP安装源的设置
安装引导装载程序:安装新引导装载程序
分区:三个单选都选第一项、添加 swap 2000M、/ 剩余所有空间
网络配置:添加一个连接(DHCP)
软件包选择:勾选“桌面”下除了KDE以外的所有软件类
安装后脚本,参考以下内容:
rm -rf /etc/yum.repos.d/
.repo
echo ‘[cos7dvd]
name=added from: file:///mnt/dvd
baseurl=http://192.168.10.7/cos7dvd
enabled=1
gpgcheck=0
‘ > /etc/yum.repos.d/cos7dvd.repo
yum -y install httpd
echo ‘NTD1906‘ > /var/www/html/index.html
wget http://192.168.10.7/Discuz_X3.4_SC_UTF8.zip
unzip Discuz_X3.4_SC_UTF8.zip
cp -rf upload/* /var/www/html/
systemctl enable httpd
.. ..

—— 保存到 /root/ks.cfg

2)如何让客户机用上这个应答文件
cp /root/ks.cfg /var/www/html/ks-cos7.cfg
浏览器访问 http://192.168.10.7/ks-cos7.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
查找 linux,修改下方的 append 行,
删除 inst.stage2= 部分,换成 ks=应答文件的下载地址
append initrd=initrd.img ks=http://192.168.10.7/ks-cos7.cfg

任务七:客户机无人值守安装测试

1)新建一台虚拟机(CentOS64位、内存>2G)
2)把虚拟机开机客户机从网卡启动
---- DHCP自动获取到地址
---- 连接TFTP服务器
---- 下载pxelinux.0启动文件
---- 获取菜单配置文件 pxelinux.cfg/default
3)看到安装菜单 ==》选择安装CentOS7
---- 下载 vmlinuz、initrd.img
---- 运行内核文件、加载安装程序、确保能看到图形选语言界面、……
---- 自动完成安装过程

Shell脚本程序 ——
Shell(/bin/bash)
长脚的文本文件(包含了一批Linux命令行)

原文地址:https://blog.51cto.com/11806823/2447982

时间: 2024-10-12 16:10:42

Linux配置批量装机详解的相关文章

PXE 装机详解

PXE 装机详解 =========================================================================== 概述: 在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机没有光驱,或者是有大批量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护.这是时候你就需要PXE的强大功能了.本文就将讲解利用PXE自动化安装CentOS6和CentOS7的安装过程. ===============

Linux 性能测试工具Lmbench详解

Linux 性能测试工具Lmbench详解 2010-06-04 16:07 佚名 评测中心 字号:T | T Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench 旨在使系统开发者深入了解关键操作的基础成本. AD:2014WOT全球软件技术峰会北京站 课程视频发布 Linux 性能测试工具Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型

linux wget 命令用法详解(附实例说明)

Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器.这样既浪费时间又浪费精力,那不没办法的事.而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步.wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来

&lt;linux下sysctl指令详解&gt;

Sysctl指令是对系统核心参数的设置: 用法: -a 参数列出系统中所有核心设置 当然了这些核心的设置都是文件,存放于/proc/sys/net目录下. 举个有代表性的例子: net.ipv4.icmp_echo_ignore_all = 0      把所有的点改为 / 就可以了.   [[email protected] net]# net.ipv4.icmp_echo_ignore_all = 0 [[email protected] net]# cd ipv4/ [[email pro

linux nc命令使用详解(转)

linux nc命令使用详解 功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...] 参 数: -g<网关> 设置路由器跃程通信网关,最丢哦可设置8个. -G<指向器数目> 设置来源路由指向器,其数值为4的

Linux开机启动程序详解

我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核.请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存.因此,内核就必须完整地加载到可用RAM的第一个兆字节之内.为了实现这个目的,内核是被压缩了的.这个文件的头部包含着

linux 下跟文件系统详解

什么是根文件系统 根文件系统首先是一种文件系统,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所mount的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行. 我们首先从主机上所安装的Linux操作系统中了解一些根文件系统的信息.比如在笔者工作的Linux桌面系统中可以得到下面的结果: # mount /dev/hda2 on / type ext3 (rw) none on /proc

Linux之htop命令详解

Linux之htop命令详解 一.htop简介 htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses. 与Linux传统的top相比,htop更加人性化.它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作. 与top相比,htop有以下优点: 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行. 在启动上,比top 更快. 杀进程时不需要输入进程号. htop 支持鼠标操作. htop

Linux系统进程管理命令详解

Linux管理进程的最好方法就是使用命令行下的系统命令.Linux下面的进程涉及的命令有at, bg, fg, kill, crontab, jobs, ps, pstree, top, nice, renice, sleep, nohup. 1.at命令:定时运行命令 作用:at命令在指定时刻执行指定的命令序列. 格式: at [-V] [-q x] [-f file] [-m] time atq [-V] [-q x] atrm [-V] [-q x] job- batch [-V] [-f