PXE+Kickstart實現自動裝機
一、搭建PXE伺服器
PXE伺服器——預啟動執行環境——指示客戶端計算機直接從網路介面啟動、執行或安裝作業系統,而不需要燒錄CD/DVD或使用某個物理介質,它可以減輕你網路中多臺機器同時安裝Linux發行版的工作。
1.安裝並配置DNSMASQ伺服器(給客戶機分配靜態IP)
#yum install dnsmasq
DNSMASQ的預設的主配置檔案dnsmasq.conf位於/etc目錄中,參考配置如下:
interface=eth0,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range=eth0,192.168.0.50,192.168.0.150,255.255.255.0,48h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.0.1
# Gateway
dhcp-option=3,192.168.0.101
# DNS
dhcp-option=6,192.168.0.101,8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="press f8 for menu.",5
pxe-service=x86PC,"install from 192.168.0.1",pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
2.安裝TFTP-Server並加入SYSLINUX載入啟動器
#yum install tftp-server
#yum install syslinux
PXE啟動載入器檔案位於/usr/share/syslinux,須要拷貝該路徑下的所有內容到TFTP伺服器路徑下。
#cp-r /usr/share/syslinux/* /var/lib/tftpboot
3.設定PXE伺服器配置檔案
PXE伺服器從位於pxelinux.cfg資料夾中一組指定的檔案中讀取配置,該資料夾必須位於DNSMASQ主配置檔案中tftp-root宣告指定的目錄中(參考配置中為tftp-root=/var/lib/tftpboot)。下面建立需要的目錄pxelinux.cfg,然後新增default檔案。
#mkdir/var/lib/tftpboot/pxelinux.cfg
#vi/var/lib/tftpboot/pxelinux.cfg/default
default的參考配置如下:
default menu.c32(預設載入選單 改為1可以預設進入選項1)
prompt 0
timeout300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1)InstallCentOS7 x64 withLocalRepo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.0.1/pub devfs=nomount
label 2
menu label ^4)Bootfromlocal drive
CentOS 7啟動映象(kernel和initrd)位於名為centos7的目錄,該目錄是/var/lib/tftpboot目錄的相對路徑(其絕對路徑為/var/lib/tftpboot/centos7),而安裝器倉庫位於可通過FTP協議訪問的192.168.0.1/pub網路位置中——在本例中,這些倉庫位於本地,因此IP地址和PXE伺服器地址相同。
4.新增CentOS 7啟動映象到PXE伺服器
掛載預先下載好的映象檔案。建立centos7目錄並將CentOS 7 的可啟動的 kernel和initrd映像檔案從掛載位置拷貝到centos7資料夾。
#mkdir/var/lib/tftpboot/centos7
#cp/mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
#cp/mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
5.建立CentOS 7本地映象安裝源
可以通過多種協議設定安裝源映象,如HTTP、HTTPS或NFS。這裡使用FTP協議。
#yum install vsftpd
#cp-r /mnt/* /var/ftp/pub/
# chmod -R 755 /var/ftp/pub
6.啟動程序並關閉防火牆
# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd
# systemctl disable firewalld
# systemctl stop firewalld
最好測試一下FTP安裝源網路路徑,在瀏覽器輸入ftp://192.168.1.20/pub。
至此PXE伺服器搭建完畢。可以開一臺虛機測試。
qemu-img create -f qcow2 /home/test.qcow2 10G
virt-install --name test --vcpus 1 --memory 2000 --cpu --disk path=/home/test.qcow2,format=qcow2, --network bridge=br0,model=virtio --pxe --autostart
PS:PXE和客戶機之間要有網橋連線
臨時建立:
ip link add br0 type bridge
ip a add 192.168.0.101/24 dev br0
ip link set br0 up
永久建立:
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.101
PREFIX=24
ONBOOT=yes
DELAY=0
二、PXE的基礎上用kickstart實現自動安裝
Kickstart 檔案本身是一個純文字檔案,包含了可作為安裝指令的關鍵字。通過Kickstart工具配置安裝應答檔案,自動完成安裝過程的各種設定,從而無需手動干預,提高網路裝機效率。
1.安裝kickstart
yum install system-config-kickstart
2.配置ks.cfg
推薦用來生成 Kickstart 檔案的方法是在系統中首先執行一次手動安裝。安裝完成後,安裝程式中的所有選擇都會儲存到名為 anaconda-ks. cfg 的檔案中,該檔案位於所安裝系統的 /root/ 目錄下。然後可以複製這個檔案,根據需要進行修改,並在以後的安裝中使用得到的配置檔案。
其中,必須要改的是安裝方式,參考如下
加入reboot,可以在安裝完畢後自動重啟
可以在安裝完成後、第一次重啟前立即新增要在該系統中執行的命令。這部分內容必須在 Kickstart 的最後,同時必須用 %post 命令開頭,以%end 結尾。
安裝centos6.5時出現了unsupported hardware detect的警告,需要手動選擇安裝才能繼續,加入一行unsupported _hard ware可以解決此問題
3.將kickstart和PXE結合
#cp ks.cfg /var/ftp/pub/
#vi /var/lib/tftpboot/pxelinux.cfg/default
append initrd=centos7/initrd.img method=ftp://192.168.0.1/pub devfs=nomount
修改為
完