linux下的批量部署
一.PXE
PXE是Preboot Execution Environment的縮寫,預啟動執行環境
PXE使用需要注意以下幾點:
- 客戶端的網絡卡必須要支援PXE功能,並且開機選擇從網絡卡啟動,進入PXE程式
- PXE伺服器必須要提供至少含有DHCP以及TFTP的服務!
- DHCP服務提供客戶端網路,並且告知TFTP所在的位置;
- TFTP提供客戶端boot loader及kernel file下載路徑
PXE工作流程: Client向PXE Server上的DHCP傳送IP地址請求訊息,返回Client的IP地址,同時將pxe環境下的Boot loader檔案pxelinux.0的位置資訊傳送給Client Client向PXE Server上的TFTP請求pxelinux.0 Client執行接收到的pxelinux.0檔案 Client向TFTP請求pxelinux.cfg檔案(裡面放置的是是啟動選單,即grub的配置檔案) Client向TFTP傳送Linux核心請求資訊 Client向TFTP傳送根檔案請求資訊 Client載入Linux核心 Client通過nfs/ftp/http下載系統安裝檔案進行安裝
二. Kickstart
Kickstart是一種無人值守的安裝方式 在安裝過程中記錄人工干預填寫的各種引數,並生成一個名為ks.cfg的檔案。如果在自動安裝過程中出現要填寫引數的情況,安裝程式首先會去查詢ks.cfg檔案,如果找到合適的引數,就採用所找到的引數;如果沒有找到合適的引數,便會彈出對話方塊手工填寫
Kickstart配置檔案分為3部分
1.命令部分 配置系統 使用者提示省略的指令
2.%packages部分 為安裝選擇軟體包和組 解決相關依賴性問題
3.指令碼部分 定製系統的可選擇部分 再安裝前執行%pre指令碼 安裝後執行%post指令碼
三.測試
1.關閉防火牆和SElinux
systemctl stop firewalld
setenforce 0
2.DHCP DHCP主要是提供客戶端網路引數與TFTP的位置,以及boot loader的檔名
vi /etc/dhcp/dhcpd.conf 1 ddns-update-style interim; 2 ignore client-updates; 3 subnet 192.168.62.0 netmask 255.255.255.0 { #設定網段 4 option routers 192.168.62.2; #設定閘道器 5 option subnet-mask 255.255.255.0; #設定子網掩碼 6 option domain-name-servers 192.168.62.2; #設定dns伺服器地址 7 range dynamic-bootp 192.168.62.200 192.168.62.205; #IP地址租用的範圍 8 default-lease-time 21600; #預設租約時間 9 max-lease-time 43200; #大租約時間 10 next-server 192.168.62.136; #tftp伺服器地址 11 filename "pxelinux.0"; #tftp伺服器根目錄下面的檔案 12 } systemctl start dhcpd #啟動服務 systemctl enable dhcpd #設定開機自啟
3.TFTP boot loader檔案pxelinux.0以及核心相關的配置檔案(目錄pxelinux.cfg下)主要都是由TFTP來提供的!
yum install tftp-server xinetd -y
vim /etc/xinetd.d/tftp
disable = no #此項修改,其它不變;儲存退出
systemctl restart xinetd
systemctl enable xinetd
4.PXE的bootloader和相關配置檔案 syslinux是一個功能強大的引導載入程式,而且相容各種介質。更加確切地說:SYSLINUX是一個小型的Linux作業系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤
yum install syslinux -y
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/isolinux/{vesamenu.c32,boot.msg} .
mkdir pxelinux.cfg
cp /media/isolinux/isolinux.cfg pxelinux.cfg/default
vi pxelinux.cfg/default #刪除60行之後的,在檔案末尾新增以下內容
60 label linux
61 menu label ^Install CentOS 74
62 kernel vmlinuz
63 append initrd=initrd.img ks=http://192.168.62.136/config/ks.cfg biosdevname=0 net.ifnames=0
5.HTTP 通過HTTP協議把光碟映象內容傳給客戶端
yum install httpd -y
cp -rf /mnt/* /var/www/html/
mkdir -p /var/www/html/config #新建目錄,把自定義的檔案、指令碼等放置於此
6.Kickstart配置檔案
vi /var/www/html/config/ks.cfg
1 #platform=x86, AMD64 或 Intel EM64T
2 #version=
3 # Firewall configuration
4 firewall --disabled
5 # Install OS instead of upgrade
6 install
7 # Use network installation
8 url --url="http://192.168.62.136/"
9 #!!!
10 # Use CDROM installation media
11 repo --name="yum" --baseurl=http://192.168.62.136/
12 #!!!
13 # Root password (設定初始密碼)
14 rootpw --iscrypted $1$mi4lP.ZY$j5UDGX34knfGuSYPwd82u/ #redhat
15 # openssl passwd -1 (密碼用openssl加密)
16 # Use graphical install graphical or text(使用圖形化介面或者文字)
17 text
18 # Run the Setup Agent on first boot
19 firstboot --disable
20 # System keyboard
21 keyboard us
22 # System language
23 lang en_US.UTF-8
24 # SELinux configuration
25 selinux --disabled
26 # Reboot after installation
27 reboot
28 # System timezone
29 timezone --isUtc Asia/Shanghai
30 # Network information
31 network --bootproto=dhcp --device=eth0 --noipv6 --activate
32 network --hostname=web
33 #!!!
34 # System bootloader configuration
35 bootloader --location=mbr
36 # Clear the Master Boot Record
37 zerombr
38 # Partition clearing information
39 clearpart --all --initlabel
40 #!!!
41 # Disk partitioning information (分割槽資訊)
42 part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200
43 part swap --fstype="swap" --ondisk=sda --size=4096
44 part / --fstype="ext4" --ondisk=sda --size=20480
45 #!!!
46 %packages
47 @core
48 wget
49 %end
50 %post
51 #yum_client
52 cd /etc/yum.repos.d/
53 rm -rf *
54 wget http://192.168.62.136/config/client.repo
55 %end
56 %addon com_redhat_kdump --disable --reserve-mb='auto'
57 %end
四.總結
- 在寫檔案目錄的路徑時一定要細心,否則很容易報錯
- 程式碼中的ip地址,要能前後對應上
- 客戶端的yum源是從服務端通過http服務下載的,所以要提前開啟http服務
systemctl start httpd
,除此之外,要記得先在服務端把yum的配置檔案client.repo配置好並放在/var/www/html/config/目錄下,這樣才可以使新裝好的機子直接可以使用yum