Linux基于PXE实现系统自动化部署

一、前言:

通常为计算机安装操作系统的方式主要是,光盘安装和U盘安装;在企业生产环境中,会需要对多台客户机或服务器安装Linux操作系统,如果还用常规的方法去安装,费时又费力;PXE批量部署系统即可高效完成此类工作。

二、原理:

使用光盘(镜像)安装Linux操作系统过程:POST(加电自检)-->引导序列(通过BISO发现引导CD-ROM或U盘)--Bootloader(kernel+ramdisk)-->anaconda(安装程序)

1、自动化部署服务器所需环境:

PXE:Preboot eXecute Environment,预启动执行环境;网卡支持PXE Bootrom;

DHCP:Dynamic HostConfiguration Protocol,动态主机设置协议;为客户端提供IP地址;

TFTP:Trivial File Transfer Protocol,简单文件传输协议;为客户端提供启动引导文件和内核引导文件;

xinetd:超级守护进程,用来唤醒tftp服务;

HTTP:HyperText Transfer Protocol,超文本传输协议;为客户端提供Kickstart文件及安装源;

kickstart:系统自动化安装脚本;

syslinux:提供pxelinux.0文件,用于启动引导,相当于bootloader;

安装引导文件:在系统安装光盘中;

操作系统光盘或镜像:安装源;

2、实现过程:

PXE采用C/S服务架构:

1)、Client:客户端加电自检通过BIOS发现支持PXE的网卡,然后PXE Bootrom会向网络中发送广播请求,向网络中的DHCP服务器请求IP地址;

2)、Server:服务器收到广播,会为客户端提供IP地址和TFTP服务器的IP地址,TFTP中包含PXE Bootrom引导程序所需的文件;

3)、Client:客户端会向TFTP服务器发送下载请求,下载引导程序文件;

4)、Server:TFTP服务器接收到请求,传输引导程序文件;

三、实验过程:

1、实验前提:

1)、客户端:

网卡支持PXE;

2)、服务器:

配置静态IP地址;

# vim/etc/sysconfig/network-scripts/ifcfg-eth    :修改网络配置文件;
# service networkrestart    :重新启动网络服务;

关闭防火墙和SELinux;

# chkconfig iptables off    :防火墙设置开机关闭;
# service iptables stop    :光比防火墙服务;
# setenforce 0    :关闭SELinux;
# vim /etc/selinux/conf    :修改SELinux配置文件;

配置好YUM源,并安装所需软件包:dhcp,tftp-server,xinted,httpd,system-config-kickstart,syslinux;

# mount -o loop /mnt/hgfs/lin/CentOS-6.6-x86_64-bin-DVD1.iso/media/cdrom/    :挂载光盘镜像;
# vim /etc/yum.repos.d/centos.repo    :配置YUM仓库位置;
# yum install dhcp tftp-server xinted httpd system-config-kickstartsyslinux –y    :安装相关服务软件包;

2、DHCP服务配置:

# /etc/dhcp/dhcpd.conf    :主配置文件;
# /usr/share/doc/dhcp-**/dhcpd.conf.sample    :可参照次主配置文件模板进行修改配置;
# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup    :备份原配置文件;
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample/etc/dhcp/dhcpd.conf    :模板覆盖原配置文件;
# vim /etc/dhcp/dhcpd.conf    :修改配置文件;

全局配置:

>option domain-name "chencer.org";    :配置域名
>option domain-name-servers 192.168.1.2;    :配置DNS服务器地址
 
>default-lease-time 3600;    :默认租约时间,单位为秒;
>max-lease-time 86400;    :最大租约时间,单位为秒;

地址池配置:

>subnet 192.168.1.0 netmask255.255.255.0 {
>    range 192.168.1.1 192.168.1.100;    :配置地址池范围;
>    option routers 192.168.1.1;    :网关配置;
>    next-server 192.168.1.2;    :配置tftp服务器地址;
>    filename "pxelinux.0";    :配置PXE引导文件
>}

# servicedhcpd configtest    :编辑完成,保存退出,检查配置文件语法;
# chkconfig dhcpd on    :设置开机启动;
# service dhcpd {start|restart}    :启动或重启服务;
# ss –unl    :查看监听端口;dhcpd监听在UDP 67号端口;

3、TFTP服务配置:

1)、xinetd配置:

# vim /etc/xinetd.d/tftp    :xinetd是tftp服务的超级守护进程,修改配置文件;

2)、为tftp服务提供引导文件:

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/    :为TFTP服务器提供启动PXE的工作环境;
# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img}/var/lib/tftpboot/    :提供kernel和ramdisk;
# cp /media/cdrom/isolinux/{boot.msg,splash.jpg,vesamenu.c32}/var/lib/tftpboot    :提供安装菜单框架;
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# vim /var/lib/tftpboot/pxelinux.cfg/default

# tree /var/lib/tftpboot/    :检查文件完整性;

3)、启动服务:

# chkconfig xinetd on    :设置开机启动;
# service xinetd {start|restart}    :启动或重启xinetd服务;
# ss –unl    :查看监听端口;tftp监听在UDP 69号端口;

4、http服务配置:

1)、提供安装源:

# mkdir /var/www/html/centos6.6    :创建安装源目录;
# mount --bind /media/cdrom/ /var/www/html/centos6.6/    :挂载镜像到安装源目录;

2)、提供kickstart文件:

# system-config-kickstart    :通过图形界面工具创建kickstart文件保存于/var/www/html/ks.cfg;
# vim -O /root/anaconda-ks.cfg /var/www/html/ks.cfg    :可参照/root/ anaconda-ks.cfg进行修改;

添加或修改以下两行,指定安装源位置:

>url --url=http://192.168.1.2/centos6.6
>repo --name="CentOS"--baseurl=http://192.168.1.2/centos6.6 --cost=100

3)、启动服务:

# chkconfig httpd on    :设置服务开机启动
# service httpd {start|restart}    :启动或重启服务;
# ss –tnl    :httpd监听在tcp 80号端口;

四、客户端测试:

BIOS设置为网卡优先:

安装菜单界面:

正在安装:

时间: 2024-10-12 22:51:03

Linux基于PXE实现系统自动化部署的相关文章

Linux基于PXE实现系统全自动无人值守安装

前言 在生产环境中,我们时常会需要在多台客户端主机或服务器安装操作系统,如果每一台都去手动安装,费时费力,显然是不现实的.那么,如何高效的完成此类工作呢?文将讲解如何实现Linux系统的全自动无人值守安装. 提供PXE服务所需安装包 dhcp:动态主机配置协议,给客户端提供ip地址 tftp-server:tftp服务器端,提供系统安装所需文件 xinetd:tftp服务超级守护进程,用于唤醒tftp服务 httpd:基于http服务提供安装源 syslinux:提供pxelinux.0文件,此

实现基于PXE的系统自动化安装

初始化:iptables|firewalld,selinux,ntp|chrony环境:两台主机一台主机A:DHCP,TFTP,HTTP,ks,yum 源 vmnet15,10.10.10.10一台主机B:客户端pxe vmnet15 在A上实现.一.http服务上需要实现的功能. 1.实现http服务,下载http服务,并且开启服务,设置成开机自动启动.(centos7) yum install httpd systemctl start httpd systemctl enable http

基于PXE实现操作系统的自动化安装

在安装Linux系统时,常见的场景有使用光盘的方式来安装,在需要安装的计算机数量不多,且个性化定制安装的情况下,使用光盘来交互式的选择配置方式安装,是我们最常见的情况,当然使用光盘的方式也可以实现免交互的方式来实现自动安装,其方式是在安装开始前提供一份kickstart文件. 基于光盘实现系统的自动化安装,我们需要向光盘的镜像文件中添加kickstart配置文件,而系统安装过程中需要用到的其他重要的文件有:在isolinux 目录下有isolinux.bin,isolinux.cfg,boot.

Linux 中PXE远程安装服务器部署

Linux 中PXE远程安装服务器部署将光盘挂在mnt 目录下1 yum –y install vsftpd dhcp tftp-server syslinux2 centos7安装源准备mkdir /var/ftp/centos7cp –rf /mnt/ /var/ftp/centos7systemctl start vsftpd3启用tftp服务vim /etc/xinetd.d/tftp将disable=yes 改为disable=nosystemctl start tftpsystemc

cobbler+pxe实现系统自动化安装

cobbler简介 Cobbler是一个自动化和简化系统安装的工具,通过使用网络引导来实现系统自动化安装.Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理. cobbler构成组件 Distros(发行版):表示一个操作系统,它承载了内核和initrd的信息,以及内核参数等其他数据 Profile(配置文件):包含一个发行版.一个kickstart文件以及可能的存储库,还包含更多特定的内核参数等其他数据 Systems(系统):表示要配给的额机

基于Jenkins+Gitlab的自动化部署实战

故事背景 一个中小型企业,是典型的互联网公司,当初期的时候可能运维只能标配到2~3人,此时随着公司的发展,项目会逐渐增多.前期部署项目可能都是手动的, 俗称"人肉部署",这简直是无比的痛苦,不能忍受的.这样开发的时间也会耽误,运维的时间也会耽误,全都浪费在这些重复性的工作上面,毫无价值可言, 这时候运维终于忍受不了,上了脚本.但是慢慢的发现项目依旧在增长,脚本每次还要更改给开发,效率低下,后来测试环境以及开发环境直接上了jeknins, 每台开发机器是jeknins agent端,自此

Web系统自动化部署脚本

Web开发的项目,除了在本地直接运行外,还可能经常需要在服务器上部署. 写了个自动化部署的脚本,仅供参考. 不少地方需要配置路径,个人建议使用绝对路径,不用依赖执行脚本时所在的路径. #!/bin/sh #删除源代码目录,重新更新最新代码 echo 'delete git project dir'rm -rf projectecho 'delete project done'echo 'start clone git project'git clone http://git.company.co

centos7 基于pxe安装系统

一.概念与原理 什么是PXE 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client.PXE (Pre-boot Execution Environment,直译为启动前的执行环境)协议使计算机可以通过网络启动.协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由

Moving to Docker(三)基于Docker的Rails自动化部署

这是本系列的第三篇,整个系列介绍了我们公司如何把基础框架从PaaS移植到Docker上. 第一篇:介绍了我们在接触Docker之前的探索过程. 第二篇:介绍了如何搭建一个内网安全的私有registry. 在这最后一篇,我们用一个真实的例子来介绍如何自动化整个部署过程. 基本的Rails应用 我们来进入主题并启动一个基本的Rails应用.在这个Demo中,我将使用Ruby 2.20 和Rails 4.11. 在终端中运行: $ rvm use 2.2.0 $ rails new  && cd