批量部署步驟:
1.檢查環境
getenforce #檢查內核防火牆是否關閉
systemctl status firewalld #檢查firewalld是否開啟
2.配置yum源
mkdir /iso
mount /dev/cdrom /iso
ls /iso/
cd /etc/yum.repos.d/
rm -rf ./*.repo
vim suibian.repo
#######################
[suibian]
name=suibianle iso
baseurl=file:///iso
enabled=1
gpgcheck=0
#######################
yum clean all
yum makecache
pxe工作示意圖:
3.安裝dhcp
#給批量裝機的新機器分配IP
yum -y install dhcp
cd /etc/dhcp/
cat dhcpd.conf
cat /usr/share/doc/dhcp*/dhcpd.conf.example |egrep -v '^#' |egrep -v '^$' > dhcpd.conf
vim dhcpd.conf
#############################
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7; #以上為系統默認數值,需保留
subnet 192.168.10.0 netmask 255.255.255.0 { #自己的子網和掩碼
range 192.168.10.180 192.168.10.200; #自動分配的IP范圍
option routers 192.168.10.105; #路由,寫本機IP
filename "pxelinux.0"; #安裝引導文件
next-server 192.168.10.105; #去哪找引導文件,本機IP
}
################################
systemctl start dhcpd #啟動DHCP服務
systemctl enable dhcpd
firewall-cmd --add-port=67/udp #關閉對應端口的防火牆
firewall-cmd --add-port=67/udp --permanent
4.安裝xinetd和TFTP
xinetd:(extended internet daemon)是新一代的網絡守護進程服務程序,又叫超級Internet服務器,常用來管理多種輕量級Internet服務。
使用xinetd啟動守護進程:
原則上任何系統服務都可以使用xinetd,然而最適合的應該是那些常用的網絡服務,同時,這個服務的請求數目和頻繁程度不會太高。像DNS和Apache就不適合采用這種方式,而像FTP、Telnet、SSH等就適合使用xinetd模式,系統默認使用xinetd的服務可以分為如下幾類。
① 標准Internet服務:telnet、ftp。
② 信息服務:finger、netstat、systat。
③ 郵件服務:imap、imaps、pop2、pop3、pops。
④ RPC服務:rquotad、rstatd、rusersd、sprayd、walld。
⑤ BSD服務:comsat、exec、login、ntalk、shell、talk。
⑥ 內部服務:chargen、daytime、echo、servers、services、time。
⑦ 安全服務:irc。
⑧ 其他服務:name、tftp、uucp。
具體可以使用xinetd的服務在/etc/services文件中指出。
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。協議為UDP。TFTP server 是一個多線程TFTP服務器,允許任何數量的客戶端連接同時進行。
yum -y install tftp-server xinetd
vim /etc/xinetd.d/tftp
####################
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot #指定tftp服務的目錄-s指定為可以創建文件
disable = no #啟用tftp服務
per_source = 11
cps = 100 2
flags = IPv4
}
########################
mkdir /tftpboot #創建tftp服務的傳輸目錄
systemctl restart xinetd #啟動xinetd
systemctl enable xinetd
firewall-cmd --add-port=69/udp
firewall-cmd --add-port=69/udp --permanent
5.安裝httpd
httpd是一個wed服務器,用來創建網站
syslinux是一個功能強大的引導加載程序,而且兼容各種介質。它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。它的安裝很簡單,一旦安裝syslinux好之后,sysLinux啟動盤就可以引導各種基於DOS的工具,以及MS-DOS/Windows或者任何其它操作系統。不僅支持采用BIOS結構的主板,而且從6.0版也開始支持采用EFI結構的新型主板。
yum -y install httpd syslinux
cd /var/www/html/
mkdir iso
mount /dev/cdrom /var/www/html/iso/ #將本地系統光盤掛載到Apache網站上
vim /etc/fstab
#####################
/dev/sr0 /var/www/html/iso iso9660 defaults 0 0 #永久掛載
######################
cd iso/isolinux/ #切換到網站文件目錄里的Linux系統目錄下
cp vmlinuz /tftpboot/ #將系統內核拷貝到tftp傳輸目錄下
cp initrd.img /tftpboot/ #將initrd文件拷貝到tftp傳輸目錄下
mkdir /tftpboot/pxelinux.cfg #創建配置文件存放目錄,名稱最好固定寫成pxelinux.cfg
cp isolinux.cfg /tftpboot/pxelinux.cfg/default
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
cd /tftpboot/
ls
cd pxelinux.cfg/
vim default #編輯isolinux.cfg文件
#########################
default ks #更改默認程序段名
label ks #配置默認的引導程序
MENU LABEL Install CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img label ks
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img method=http://192.168.10.105/iso ks=http://192.168.10.105/ks.cfg devfs=nomount
###########################
文件簡介:
(1)isolinux
用SYSLINUX或ISOLINUX制作啟動U盤或光盤 SYSLINUX/ISOLINUX 是專門用來引導可移動介質的輕量級引導程序,因為這樣的介質通常不會固定只針對一種硬件。ISOLINUX其實是一個簡單的Linux系統。
(2)vmlinuz
vmlinuz是可引導的、壓縮的內核。“vm”代表 “Virtual Memory”。Linux 支持虛擬內存,不像老的操作系統比如DOS有640KB內存的限制。Linux能夠使用硬盤空間作為虛擬內存,因此得名“vm”。vmlinuz是可執行的Linux內核,它位於/boot/vmlinuz,它一般是一個軟鏈接。
(3)initrd.img
Linux初始RAM磁盤(initrd)是在系統引導過程中掛載的一個臨時根文件系統,用來支持兩階段的引導過程。initrd文件中包含了各種可執行程序和驅動程序,它們可以用來掛載實際的根文件系統,然后再將這個 initrd RAM磁盤卸載,並釋放內存。在很多嵌入式Linux系統中,initrd 就是最終的根文件系統。
(4)isolinux.cfg
ISOLINUX啟動后,默認會去讀出cd光盤根目錄的一個isolinux.cfg 文件,用來指定的內核鏡像位置等。
(5)pxelinux.0
編輯pxelinux.0的配置文件,以使pxelinux可以正確載入Red Hat Linux安裝程序。對於每一個要被安裝的Red Hat Linux版本,都需要執行一次該操作。 啟動鏡像pxelinux.0文件在執行過程中,會讀取配置文件以確定它應該載入什么Linux內核文件來運行。所有的配置文件都放在啟動服務器的 /tftpboot/pxelinux.cfg/目錄下。pxelinux.0根據一定的規則來搜索合適的配置文件名。
6.編輯ks文件
anaconda-ks.cfg這個文件記錄的是安裝系統時的一些基本信息。
這個配置文件經修改之后可以用於雷同環境下,使用Kickstart來自動安裝大量同樣的操作系統,可以把這個文件經修改之后放入U盤,命名為ks.cfg。
在裝系統時,出現boot界面時就可以輸入:
linux ks=/dev/sdb:/yourpath/ks.cfg #ks的路徑視你的U盤的為哪個盤而定
也可以放入nfs服務器,通過網絡安裝,出現boot界面時就可以輸入:
linux ks=nfs:servername:/yourpath/ks.cfg
cd
cp anaconda-ks.cfg /var/www/html/ks.cfg #將ks文件放入httpd工作目錄下
cd /var/www/html
vim ks.cfg
################################
#version=DEVEL
# System authorization information #系統授權信息
auth --enableshadow --passalgo=sha512
# Use CDROM installation media #使用哪種安裝方式
install
url --url="http://192.168.10.105/iso"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information #網絡配置信息
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
# Root password #root密碼
rootpw --iscrypted $6$9oIvP8ebYe9.bidH$zDjlVMJdPGnWttUXbHTrSUu0upERGQV5OBEgcv9vqh36Dnmw/OJ132AkmiUr9dt/ExfPt3mtlsm1Ej.A8.dF60
# System services
services --enabled="chronyd"
# System timezone #系統時區
timezone Asia/Shanghai --isUtc
# System bootloader configuration #啟動引導分區
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information #磁盤分區信息
clearpart --all --initlabel --drives=sda
%packages #安裝是選擇的軟件包
@^minimal
@core
chrony
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
########################
chmod a+r ks.cfg #給ks文件增加所有人可讀權限
systemctl enable httpd #啟動Apache服務
systemctl restart dhcpd xinetd httpd
netstat -anp|grep httpd
firewall-cmd --add-port=80/tcp #添加防火牆端口
firewall-cmd --add-port=80/tcp --permanent