自动化批量部署Linux系统(Kickstart+DHCP+NFS(http)+TFTP+PXE)

自动化批量部署Linux系统

(Kickstart+DHCP+NFS(http)+TFTP+PXE)

楓城浪子原创(除原理流程图外),转载请标明出处!

更多技术博文请见个人博客:https://fengchenglangzi.000webhostapp.com

微信bh19890922

QQ445718526、490425557

序:

本文主要介绍自动化部署操作系统,主要借助的工具包含(Kickstart+DHCP+NFS(http)+TFTP+PXE),至于每种工具用途及作用请自行补脑,本文主要基于实战演练。

本实验所用系统均为Centos 6.8

注:新部署主机必须和dhcp及tftp等服务器相通且必须与企业生产主机隔离,以免造成不必要的麻烦,具体网络配置此文不赘述,有任何网络问题可与我取得联系,后续会撰写网络博文!

一、部署基本环境

1.1 自动化部署流程图

本实验中使用两台操作系统,一台部署所用的所有环境,另一台为无系统虚拟机,用来自动安装。

1.2 部署DHCP、TFTP、PEX/KICKSTART等服务(亦可用Apache,只要能发布目录即可,主要用于预装系统的主机下载ISO文件)


[[email protected] ~]# yum install dhcp* tftp* -y

注:使用yum安装dhcp及tftp服务

1.2.1 配置tftp服务

1.2.1.1 配置tftp主配置文件


[[email protected] ~]# vim /etc/xinetd.d/tftp

注:进入tftp主配置文件


[[email protected] ~]# vim /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files using the trivial file transfer \

# protocol. The tftp protocol is often used to boot diskless \

# workstations, download configuration files to network-aware printers, \

# and to start the installation process for some operating systems.

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot

# disable = no #这里修改为no

per_source = 11

cps = 100 2

flags = IPv4

}

~

注:此文件只需把disable=yes 后面的yes修改为no即可

1.2.1.2 配置TFTP目录

要实现远程系统安装,必须在tftpboot目录中指定相应的pxe内核模块及相关参数,此两者配合才能达到目的。

首先需要挂载本地光盘


[[email protected] ~]# mount /dev/cdrom /mnt #挂载本地光盘到mnt目录

mount: block device /dev/sr0 is write-protected, mounting read-only #此报错无需解决

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

19G 797M 17G 5% /

tmpfs 238M 0 238M 0% /dev/shm

/dev/sda1 477M 33M 419M 8% /boot

/dev/sr0 3.7G 3.7G 0 100% /mnt

[root@localhost ~]#

注:挂载本地光盘到mnt目录

若系统是5.x,默认tftpboot目录会自动创建到/根目录下

若系统是6.x,默认tftpboot目录创建在/var/lib/下,需要做软连接到/跟目录下


[[email protected] /]# ll /var/lib/ -d tftpboot #查看文件

ls: cannot access tftpboot: No such file or directory

drwxr-xr-x. 16 root root 4096 Aug 12 18:23 /var/lib/

[root@localhost /]# ll / -d tftpboot #查看文件

ls: cannot access tftpboot: No such file or directory

dr-xr-xr-x. 22 root root 4096 Aug 12 17:59 /

[root@localhost /]#

[root@localhost /]# ln -s /var/lib/tftpboot/ / #做软连接到根下

注:做软连接到根下

1.2.2 配置PEX

需要安装syslinux来启用PEX

说明:

syslinux是一个功能强大的引导加载程序且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。


[[email protected] doc]# yum install syslinux syslinux-devel -y

注:安装syslinux


[[email protected] syslinux]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/

注:拷贝pxelinux.0文件到tftpboot目录中


[[email protected] syslinux]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/

注:将iso镜像中的initrd.img和vmlinux拷贝到tftpboot中


[[email protected] tftpboot]# cp /mnt/isolinux/*.msg /tftpboot/

注:将boot.msg拷贝到tftpboot中


[[email protected] tftpboot]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

注:拷贝iso镜像中的isolinux.cfg到pexlinux.cfg中并重命名


[[email protected] tftpboot]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/

注:将vesamenu.c32拷贝到tftpboot下


[[email protected] pxelinux.cfg]# vim default #修改default文件

[root@localhost pxelinux.cfg]# chmod 777 default #给default赋权

default vesamenu.c32

#prompt 1

timeout 10

display boot.msg

menu background splash.jpg

menu title Welcome to CentOS 6.8!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000

label linux

menu label ^Install or upgrade an existing system

kernel vmlinuz

append ks=nfs:192.168.8.136:/centosinstall/ks.cfg ksdevice=eth0 initrd=initrd.img

label vesa

menu label Install system with ^basic video driver

kernel vmlinuz

append initrd=initrd.img nomodeset

label rescue

menu label ^Rescue installed system

kernel vmlinuz

append initrd=initrd.img rescue

label local

menu label Boot from ^local drive

localboot 0xffff

label memtest86

menu label ^Memory test

kernel memtest

append -

~

~

注:修改default文件其中192.168.8.136是kickstart服务器,nfs:192.168.8.136:/centosinstall/ks.cfg 是nfs共享Linux镜像的目录,也是Linux存放安装文件的路径,ks.cfg是kickstart的主配置文件

设置timeout 10 超时间为10s

ksdevice=eth0 代表如果服务器有多张网卡,就从eth0安装系统

1.2.3 配置NFS

远程安装系统,客户端需要下载安装所需的软件包,所以需要使用相关软件把镜像给共享出来,可以使用httpd或者nfs,此实验使用nfs,httpd同理。


[[email protected] /]# yum install nfs-utils rpcbind -y

注:安装nfs


[[email protected] /]# mkdir centosinstall

[[email protected] /]# echo "
/centosinstall/ *(rw,no_root_squash,no_all_squash,sync)" >> /etc/exports

[[email protected] /]# cp -rf /mnt/* /centosinstall/ #此步时间稍久,可以后台执行

注:创建centosinstall目录;

配置nfs共享目录;

拷贝镜像到centosinstall目录下

1.2.4 配置kickstart

Kickstart可以有两种方式来获得,第一种是使用system-kickstart软件包来配置,第二种是直接拷贝/root/目录下anaconda-ks.cfg重命名为ks.cfg,并吧ks.cfg拷贝到共享目录且赋权为777


[[email protected] /]# cd /root

[root@localhost ~]# ls

anaconda-ks.cfg install.log install.log.syslog

[root@localhost ~]# cp anaconda-ks.cfg /centosinstall/ks.cfg

[root@localhost ~]# chmod 777 /centosinstall/ks.cfg

注:拷贝文件并赋权


[[email protected] centosinstall]# vim ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL

install

cdrom #此处修改为text

nfs --server=192.168.8.136 --dir=/centosinstall #添加此条

key --skip #添加此条

lang en_US.UTF-8 #此处可修改为 lang zh_CN.UTF-8,也可不修改

keyboard us

network --onboot no --device eth0 --bootproto dhcp --noipv6

rootpw fengchenglangzi #输入root密码,删除一下三行#开头的密码信息

#--iscrypted #123456$6$xt0XKz9HloO1YiVa$p9QeUKOYXBkDsNzu96AKMJOD.ZNbrEXVyFSYWtIYKH/J

#A27xX4kvhpGnRLCK8iGJjH9MHTq/Dz23Ma6mYnOGA1

firewall --service=ssh #此处修改为firewall --disabled

authconfig --enableshadow --passalgo=sha512 #此处最后一句可修改为—enablemd5,也可不用修改

selinux --enforcing #此处修改问色linux --disabled

timezone --utc Asia/Shanghai #此处要删掉--utc,否则时间不生效

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # #auto rhgb quiet参数设置了系统的启动方式,去掉rhgb则在开机的过程中不显示开机动画,而是以文本的形式打印出系统的启动过程,此处可不用修改

zerombr #初始化磁盘,备注在后

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

#clearpart --linux --drives=sda

#volgroup VolGroup --pesize=4096 pv.008002

#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsiz

e=51200

#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=960 --maxsize=960

#part /boot --fstype=ext4 --size=500

#part pv.008002 --grow --size=1

clearpart --all --initlabel #加入此条

# Disk partitioning information #加入此条

part / --fstype="ext4" --size=8192 #加入此条

part swap --fstype="swap" --size=1024 #加入此条

part /home --fstype="ext4" --size=2048 #加入此条

reboot

repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 #注释掉此行

%packages --nobase #删除后面的--nobase,这里的意思是不安装基本包

@base #添加此条

@core

@chinese-support #若之前选的中文,就添加此项

%end

注:以上是配置ks.cfg文件,其中zerombr(可选)如果指定了zerombr且yes是它的唯一参数,任何磁盘上的无效分区表都将被初始化.这会毁坏有无效分区表的磁盘上的所有内容.

1.2.5 配置DHCP

在配置DHCP服务器之前需要先查看本机网卡配置,因为本机网卡ip及信息都要反应到dhcp服务器上,其他设备才能正确获取地址


[[email protected] /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0C:29:7A:25:4F

TYPE=Ethernet

UUID=85917203-4340-4457-8b2e-ae09506ce18c

ONBOOT=yes

IPADDR=192.168.8.136

NETMASK=255.255.255.0

GATEWAY=192.168.8.1

DNS1=61.139.2.69

NM_CONTROLLED=yes

BOOTPROTO=static

[root@localhost /]#

注:如果不是静态地址,请使用静态地址

下面开始修改dhcp主配置文件


[[email protected] dhcp]# vim /etc/dhcp/dhcpd.conf

#

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.sample

# see ‘man 5 dhcpd.conf‘

#

ddns-update-style interim;

ignore client-updates;

filename "pxelinux.0";

next-server 192.168.8.136; #配置tftp主机地址

allow booting;

allow bootp;

subnet 192.168.8.0 netmask 255.255.255.0 {

# --- default gateway

option routers 192.168.8.1;

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.8.100 192.168.8.200;

#host ns { #一下三行是为某个mac分配固定ip,在pxe中可以不用设置

#hardware ethernet xx:xx:xx:xx:xx:xx;

#fixed-address 192.168.8.193;}

}

注:配置dhcp主配置文件

1.2.6 重启服务并测试


[[email protected] ~]# service xinetd restart

[root@localhost ~]# service rpcbind restart

[root@localhost ~]# service nfs restart

[root@localhost ~]# service dhcpd restart

注:启动tftp、nfs、dhcp服务

最后把相应的新主机与dhcp服务器放到一个网络,网络互通即可,然后开机新主机就会自动安装系统,本人已经测试可行!!!

时间: 2024-10-08 17:20:53

自动化批量部署Linux系统(Kickstart+DHCP+NFS(http)+TFTP+PXE)的相关文章

详解使用Cobbler快速批量部署linux系统

前言:这几天闲着没事来系统组玩玩,学点东西总是好的嘛.系统组系统组当然还是从学会装系统开始.花了两个小时折腾了一下用cobbler批量部署linux系统.第一次做当然中间遇到很多问题,不过都顺利解决了.完了总结一下写个帖子和大家分享一下. 系统版本:Centos6.5 32位cobbler服务器IP:192.168.175.130 IP地址段:192.168.175.120-192.168.175.140子网掩码:255.255.255.0网关:192.168.175.2DNS:8.8.8.8

PXE+kickstart实现批量部署linux系统

当企业有大量的新机需要安装系统,如果每台都接上系统光盘并人工选择配置安装,无疑工作量巨大.而 PXE+kickstart 的安装方式能够实现自动化批量部署,特别适用于这种场景. 一.批量部署方式 ①物理机:PXE 负载均衡 ②虚拟机:映像文件模板 分布式文件系统 无论是针对物理机还是虚拟机的批量部署,都会对文件服务器造成巨大的压力,可以分别使用负载均衡和分布式文件系统的方式缓解 二.PXE工作原理 客户机通过支持PXE的网卡请求DHCP服务器 --> DHCP服务器给客户端分配IP地址等,并告诉

PXE实现批量部署linux系统

pxe批量部署linux服务器 1.pxe介绍 PXE是有intel设计的协议,它可以使计算机通过网络启动,协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存中执行,并显示出命令菜单,经用户选择PXE启动后,PXE client获取网络地址信息,然后将放置在远端的服务器上的操作系统文件通过网络下载到本地运行 既然是通过网络传输,就需要IP地址,也就是说在PXE启动过程中,PXE客户端会请求DHCP服务器分配IP地址,

Cobbler实现自动化批量安装Linux系统系列一:安装先决性组件篇

随着经历的企业越来越多,服务器规划.实施及运维工作也越来越多,有时会发现,其实做为一名IT人,我们总是有些局限,尤其是在对企业IT结构规划时,由于只局限于对一种分支产品的特性了解,当所熟悉的产品不能胜任现有平台时,我们总会感觉有一些无奈,比如微软的MDT.WDS及SCCM,实话说挺不错的,但至少也只是在微软平台操作系统的部署上,当我们遇到在业务网运维平台中以Linux为主的环境时,大批量部署Linux,这时对于微软的这些部署产品可能就不能像在微软产品范围中那样如龙得水般了,这时我们也就真正理解了

利用pxe dhcp tfcp http kickstart实现批量部署linux系统

1.为什么要实现批量部署利用一台已经做好配置的主机去批量安装其他主机系统2.了解什么是Pxe1.预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制.这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统 .2.由Intel和Systemsoft公司于1999年9月20日公布的技术3.C/S的工作模式4.PXE客户端会调用网际协议(IP).用户

Linux自动化批量部署安装系统

运维自动化之系统安装 系统启动流程(详情见之前文档): bootloader-->kernel(initramfs)-->rootfs-->/sbin/init anaconda:系统安装工具(安装操作系统向导) gui:图形窗口 tui:curses安装;蓝色背景的文本方式窗口安装 MBR:isolinux/boot.cat 第二阶段:isolinux.bin 配置文件:isolinux/isolinux.cfg(光盘启动的安装菜单,文件当中的^代表了快捷键对应的按键) timeout

【亲测可用】Cobbler自动批量部署Linux系统

Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP.DNS.TFTP.RSYNC以及yum仓库.构造系统ISO镜像. Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用. Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷. 环境准备 VMware 12 虚拟机 Centos 7

PXE批量部署 Linux 系统

实验场景描述:1.准备环境:配置httpd服务,关闭系统策略2.配置应答文件通过system-config-kickstart 配置应答文件3.指定应答文件客户端指定应答文件具体如下所示:若描述有误欢迎拍砖交流:QQ:45223208 一.准备服务器环节1.安装httpd服务yum install httpd -y 如图所示 2.启动httpd服务 systemctl start httpd systemctl enable httpd 3.修改系统相关策略 关闭防火墙和selinux策略 sy

Cobbler实现自动化批量安装Linux系统系列二:修改Cobbler Check时发现的问题

在上一系列介绍中,执行Cobbler检查时,提示共有7项不满足要求,我们在今天的系列介绍中,将逐一介绍如何进行配置调整,以满足Cobbler要求.   [修改rsync配置] [[email protected] yum.repos.d]# vi /etc/xinetd.d/rsync 说明1:修改下图所示配置中disable属性值为no 修改后结果如下:   [安装cman] [[email protected] yum.repos.d]# yum install cman   [安装debm