运维自动化之系统部署

  系统安装过程

    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文件里的安装信息,下载安装源文件进行自动化安装

             

 

 

 

 

 

 

 

        

posted @   家购诗  阅读(56)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示