自动化批量部署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文件)
[root@localhost ~]# yum install dhcp* tftp* -y
注:使用yum安装dhcp及tftp服务
1.2.1 配置tftp服务
1.2.1.1 配置tftp主配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp
注:进入tftp主配置文件
[root@localhost ~]# 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 = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /var/lib/tftpboot# disable = no #这里修改为noper_source = 11cps = 100 2flags = IPv4}~
注:此文件只需把disable=yes 后面的yes修改为no即可
1.2.1.2 配置TFTP目录
要实现远程系统安装,必须在tftpboot目录中指定相应的pxe内核模块及相关参数,此两者配合才能达到目的。
首先需要挂载本地光盘
[root@localhost ~]# mount /dev/cdrom /mnt #挂载本地光盘到mnt目录mount: block device /dev/sr0 is write-protected, mounting read-only #此报错无需解决[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root19G 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/下,需要做软连接到/跟目录下
[root@localhost /]# ll /var/lib/ -d tftpboot #查看文件ls: cannot access tftpboot: No such file or directorydrwxr-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 directorydr-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的时间,并建立修护或其它特殊用途的启动盘。
[root@localhost doc]# yum install syslinux syslinux-devel -y
注:安装syslinux
[root@localhost syslinux]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
注:拷贝pxelinux.0文件到tftpboot目录中
[root@localhost syslinux]# cp /mnt/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /tftpboot/
注:将iso镜像中的initrd.img和vmlinux拷贝到tftpboot中
[root@localhost tftpboot]# cp /mnt/isolinux/*.msg /tftpboot/
注:将boot.msg拷贝到tftpboot中
[root@localhost tftpboot]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
注:拷贝iso镜像中的isolinux.cfg到pexlinux.cfg中并重命名
[root@localhost tftpboot]# cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
注:将vesamenu.c32拷贝到tftpboot下
[root@localhost pxelinux.cfg]# vim default #修改default文件[root@localhost pxelinux.cfg]# chmod 777 default #给default赋权default vesamenu.c32#prompt 1timeout 10display boot.msgmenu background splash.jpgmenu title Welcome to CentOS 6.8!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linuxmenu label ^Install or upgrade an existing systemkernel vmlinuzappend ks=nfs:192.168.8.136:/centosinstall/ks.cfg ksdevice=eth0 initrd=initrd.imglabel vesamenu label Install system with ^basic video driverkernel vmlinuzappend initrd=initrd.img nomodesetlabel rescuemenu label ^Rescue installed systemkernel vmlinuzappend initrd=initrd.img rescuelabel localmenu label Boot from ^local drivelocalboot 0xfffflabel memtest86menu label ^Memory testkernel memtestappend -~~
注:修改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同理。
[root@localhost /]# yum install nfs-utils rpcbind -y
注:安装nfs
[root@localhost /]# mkdir centosinstall[root@localhost /]# echo "/centosinstall/ *(rw,no_root_squash,no_all_squash,sync)" >> /etc/exports[root@localhost /]# cp -rf /mnt/* /centosinstall/ #此步时间稍久,可以后台执行
注:创建centosinstall目录;
配置nfs共享目录;
拷贝镜像到centosinstall目录下
1.2.4 配置kickstart
Kickstart可以有两种方式来获得,第一种是使用system-kickstart软件包来配置,第二种是直接拷贝/root/目录下anaconda-ks.cfg重命名为ks.cfg,并吧ks.cfg拷贝到共享目录且赋权为777
[root@localhost /]# cd /root[root@localhost ~]# lsanaconda-ks.cfg install.log install.log.syslog[root@localhost ~]# cp anaconda-ks.cfg /centosinstall/ks.cfg[root@localhost ~]# chmod 777 /centosinstall/ks.cfg
注:拷贝文件并赋权
[root@localhost centosinstall]# vim ks.cfg# Kickstart file automatically generated by anaconda.#version=DEVELinstallcdrom #此处修改为textnfs --server=192.168.8.136 --dir=/centosinstall #添加此条key --skip #添加此条lang en_US.UTF-8 #此处可修改为 lang zh_CN.UTF-8,也可不修改keyboard usnetwork --onboot no --device eth0 --bootproto dhcp --noipv6rootpw fengchenglangzi #输入root密码,删除一下三行#开头的密码信息#--iscrypted #123456$6$xt0XKz9HloO1YiVa$p9QeUKOYXBkDsNzu96AKMJOD.ZNbrEXVyFSYWtIYKH/J#A27xX4kvhpGnRLCK8iGJjH9MHTq/Dz23Ma6mYnOGA1firewall --service=ssh #此处修改为firewall --disabledauthconfig --enableshadow --passalgo=sha512 #此处最后一句可修改为—enablemd5,也可不用修改selinux --enforcing #此处修改问色linux --disabledtimezone --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 --maxsize=51200#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=960 --maxsize=960#part /boot --fstype=ext4 --size=500#part pv.008002 --grow --size=1clearpart --all --initlabel #加入此条# Disk partitioning information #加入此条part / --fstype="ext4" --size=8192 #加入此条part swap --fstype="swap" --size=1024 #加入此条part /home --fstype="ext4" --size=2048 #加入此条rebootrepo --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服务器上,其他设备才能正确获取地址
[root@localhost /]# cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0HWADDR=00:0C:29:7A:25:4FTYPE=EthernetUUID=85917203-4340-4457-8b2e-ae09506ce18cONBOOT=yesIPADDR=192.168.8.136NETMASK=255.255.255.0GATEWAY=192.168.8.1DNS1=61.139.2.69NM_CONTROLLED=yesBOOTPROTO=static[root@localhost /]#
注:如果不是静态地址,请使用静态地址
下面开始修改dhcp主配置文件
[root@localhost 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 gatewayoption 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 重启服务并测试
[root@localhost ~]# service xinetd restart[root@localhost ~]# service rpcbind restart[root@localhost ~]# service nfs restart[root@localhost ~]# service dhcpd restart
注:启动tftp、nfs、dhcp服务
最后把相应的新主机与dhcp服务器放到一个网络,网络互通即可,然后开机新主机就会自动安装系统,本人已经测试可行!!!