运维自动化之系统部署
系统安装过程
linux的安装过程如下:
1.加载boot loader
2.加载启动安装菜单
3.加载内核和initrd文件
4.加载根系统
5.运行anaconda的安装向导
linux安装光盘的安装相关文件:
在系统光盘的isolinux目录下有和安装相关的文件
1.boot.cat:相当于grub的第一阶段
2.isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
3.isolinux.c32:时光盘启动菜单图形化界面,也属于SYSLINUX项目,会自动去找isolinux.cfg文件
4.vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
5.memtest:内存检测程序
6.splash.png:光盘启动菜单界面的背景图
7.vmlinuz:内核映像
8.initrd.img:ramfs文件
安装菜单的内核参数
安装光盘的启动菜单配置文件:isolinux/isolinux.cfg中设置相关的内核加载参数,实现不同的安装过程
isolinux.cfg文件中每个安装对应菜单选项:
加载内核:isolinux/vmlinuz
向内核传递参数:append initrd=initrd.img
指定内核参数方法:
在启动菜单界面,选中一项安装方法,按TAB键,在后面增加参数
在启动次啊但界面,任意选中一项安装方法,按ESC键:boot:linux参数设置
常见的内核参数:
text:默认启动GUI安装窗口,可以指定文本方式的安装界面
rescue:进入救援模式
inst.repo=path:指定安装源文件的路径,可以是以下格式
centos7以上版本
Any cd/DVD drive inst.repo=cdrom
Hard Drive inst.repo=ha:device:/path
HTTP server inst:repo=http://host/path
HTTPS server inst.repo=https://host/path
FTP server inst.repo=frp://username:password@host/path
NFS server inst.repo=nfs:[options:]server:/path
askmethod:选择安装源文件的获取方法,提供了光盘,本地硬盘,NFS,FSTP,HTTP多种安装源,此项centos7以后废弃
ks=path:指定自动化安装应答文件路径
initrd=initrd.img inst.ks=地址路径
ip=:指定IP地址
ip=method,method#可以为dhcp
ip=interface:method #指定特定接口
ip=ip::gateway:netmask:hostname:interface:none #静态IP
anaconda是linux系统安装程序,可以提供两种风格的安装界面
gui:图形界面
tui:基于图形库curses的文本窗口
anaconda工作过程
安装过程使用的语言
键盘类型
时区和时间
安装源文件路径
选定要安装的程序包
安装目标存储设备及分区设置
basic storage:本地磁盘
特殊设备:iscsi
KDUMP功能
设定主机名和配置网络接口
安全策略
管理员密码
创建一个普通用户
anaconda的配置方式
交互式配置方式
通过读取事先给定的配置文件自动完成配置,加内核参数:ks=/path实现指明kickstart文件的位置,各种路径格式如下:
DVD drive:ks=cdrom:/path/to/kickstart_file
Hard drive:ks=hd:device:/diretory/kickstart_file
HTTP server:ks=http://host:port/path/to/kickstart_file
FTP server:ks=ftp://host:port/path/to/kickstart_file
NFS server:ks=nfs:host://host:port/path/to/kickstart_file
HTTPS server:ks=https://host:port/path/to/kickstart_file
自动安装的应答文件
实现自动安装前,需要制作对应的安装应答文件,成为kickstart文件,用于保存安装过程需要指定的选项
kickstart文件使用过程
create a kickstart file
让kickstart文件可以在移动媒体,硬盘或网络位置上使用
创建引导媒体,用于开始安装
使安装源可用
启动kickstart安装
kickstart文件格式说明:
kickstart文件主要包括三个部分:命令段,程序包段,脚本段
命令段:指明各种安装前配置,如键盘类型
命令段中的常见命令
keyboard:设定键盘类型
lang:语言类型
zerombr:清除mbr
clearpart:清除分区
rootpw:指明root的密码
time'zone:时区
text:文本安装界面
firewall:设置防火墙
network:指定网络设置
selinux:设置selinux设置
reboot:安装完自动重启
user:安装完成后为系统创建新用户
url:指明安装源
程序包段:指明要安装的程序包组或程序包,不安装的程序包等
%packages
@^environment group:指定环境包租,如:@^minimal-environment
@group_name
package
-package
%end
脚本段:
%pre:安装前脚本
%post:安装后脚本
注意:
centos8,7,6不同版本的kickstart文件格式不尽相同,不可混用
%addon,%packages,%onerror,%pre,%post必须以%end结束,否则安装失败
kickstart文件创建
创建kickstart文件的方式:
可使用创建工具:system-config-kickstart,注意:此方法centos8不再支持
依据某模板修改并生成新配置,centos安装完成后,会自动参考当前系统的安装过程,生成一个kickstart文件/root/anaconda-ks.cfg
检查ks文件的语法错误:
使用ksvalidator工具可以检查kickstart的文件格式是否有语法错误,来自于pykickstart包
ksvalidator /path/kickstart_file
实现DHCP服务
主机获取网络配置可以通过两种方式:
静态指定
动态指定
bootp:boot protocol,MAC与IP——静态对应
dhcp:增强的bootp,支持静态和动态
DHCP工作原理
Dynamic host configuration protocol,动态主机配置协议
UDP协议,C/S模式,dhcp server:67/udp,dhcpv4client:68/udp,dhcpv6client:546/udp
主要用途:
用于内部网络和网络服务供应商自动分配IP地址给用户
用于内部网络管理员作为对所有电脑作集中管理的手段
自动化安装系统
解决IPV4资源不足问题
DHCP共有八种报文
dhcp dicover:客户端到服务器
dhcp ofeer:服务器到客户端
dhcp request:客户端到服务器
dhcp ACK:服务器到客户端
dhcp NAK:服务器到客户端,通知用户无法分配合适的IP地址
dhcp decline:客户端到服务器,提示地址已被使用
dhcp release:客户端到服务器,放弃网络地址和取消省区的租约空间
dhcp INFORM:客户端到服务器,客户端如果需要从dhcp服务器端获取更多详细的配置信息,则发送inform报文向服务器进行请求
DHCP服务续租
50%租聘时间达到50%时来续租,刚向DHCP服务器发向新的DHCPrequest请求,如果dhcp服务没有拒绝的理由,则回应dhcpACK信息,当dhcp客户端收到应答信息后,就重新开始新的租用周期
87.5%:如果之前DHCP server没有回应续租请求,等到租约期的7/8时,主机会在发送一次广播请求
同网段多DHCP服务
dhcp服务必须基于本地
先到先得得原则
跨网段
RFC 1452 compliant routers
dhcp relay agent:中继代理
相关协议
arp
rarp
租期:
长租期:IP相对稳定,网络资源消耗较少,但是浪费IP资源
短租期:IP相对不稳定,网络资源消耗较多,但是IP资源可以充分利用,可以实现较少IP为较多主机服务
dhcp服务的实现软件
dhcp或dhcp-server
dnsmasq:小型服务软件,可以提供dhcp和dns的功能
注意:实现dhcp服务前,先将网络已有的dhcp服务关掉,防止冲突
dhcp相关文件组成
/usr/sbin/dhcpd 服务主程序
/etc/dhcp/dhcpd.conf 服务配置文件
/usr/share/doc/dhcp-server/dhcpd.conf/example 服务配置范列文件
/usr/lib/systemd/system/dhcpd.service dhcp服务service文件
/var/lib/dhcpd/dhcpd.leases 地址分配记录
dhcp-client客户端包
/usr/sbin/dhclient 客户端程序
/var/lib/dhclient 自动获取的IP信息
windows工具
ipconfig /release 释放dhcp获取的IP,重新申请IP
ipconfig/renew 刷新租约,续约
dhcp服务器配置文件
帮助参考:man 5 dhcpd.conf
注意:dhcp服务器本身采用静态IP地址
必须配置和dhcp网卡的静态IP所在网段的subnet段,否则dhcp无法启动
实现TFTP服务
tftp介绍
TFTP:trivial file transfer protocol,是一种用于传输文件的简单高级协议,是文件传输协议(FTP)的简化版本,用来传输比文件传输协议(FTP)更易于使用但功能较少的文件
TFTP和FTP的区别
1.安全性区别
FTP支持登录安全,具有适当的身份验证和加密协议,在建立连接期间需要与身份验证通信
TFTP是一种开放协议,缺乏安全性,没有加密机制,与TFTP通信时不需要认证
2.传输层协议的区别
FTP使用TCP作为传输层协议,TFTP使用udp作为传输层协议
3.使用端口的区别
FTP使用两个端口:TCP端口是21,是个侦听端口,TCP端口20或更高TCP端口1024以上用于源连接
TFTP仅使用一个具有停止和等待模式的端口:端口:69/udp
4.RFC的区别
FTP是基于RFC 959文档,带有其他RFC涵盖安全措施,TFTP基于RFC 1350文档
5.执行命令的区别
FTP有许多可以执行的命令(get,put,ls,dir,lcd)并且可以列出目录等
TFTP只有5个指令可以执行(rrq,wrq,data,ack,error)
利用PXE实现自动化系统部署
PXE:preboot excution environment,预启动执行环境,是由intel公司研发,基于client/server的网咯模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,可以引导和安装windows,linux等多种操作系统
1.client向PXE server上的DHCP发送IP地址请求消息,DHCP检测client是否合法(主要是检测client的网卡MAC地址),如果合法则返回client的IP地址,同时启动文件pxelinux.0的所在TFTP服务器地址信息一并传送给client
2.client向TFTP服务器发送获取pxelinux.0请求信息,TFTP服务器接收到消息之后,向client发送pxelinux.0大小信息,试探client是否满意,当TFTP收到client发回的同意大小信息之后,正式向client发送pxelinux.0
3.client执行接受到的pxelinux.0文件,并利用此文件来启动
4.client向TFTP服务器发送请求针对本机的配置信息文件(在TFTP服务器的pxelinux.cfg目录下),TFTP服务器将启动菜单配置文件发回client,继而client根据启动菜单配置文件执行后续操作
5.client根据启动菜单配置文件里的信息,向TFTP发送linux内核和initrd文件请求信息,TFTP接收到消息之后将你和和initrd文件发送给client
6.client向TFTP发送根文件请求信息,TFTP接受到消息之后返回linux根文件系统
7.client启动linux内核,加载相关的内核参数
8.client通过内核参数下载kickstart文件,并根据kickstart文件里的安装信息,下载安装源文件进行自动化安装
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)