pxe+kickstart 自動化批量部署ubuntu14.04 操作系統


工作中我們如果安裝一台操作系統,我們可以做一個U啟動來安裝我們所需要的操作系統,但是如果我們如果要給幾十台server 安裝操作系統,我們在用U啟動安裝效率太低,這時候我們可以采用pxe + kickstart 來批量安裝系統大大節省我們的時間。 

 

PXE 交換的原理

Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),如果合法則返回Client的IP地址,同時將啟動文件pxelinux.0的位置信息一並傳送給Client

Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息之后再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的同意大小信息之后,正式向Client發送pxelinux.0 Client執行接收到的pxelinux.0文件

Client向TFTP Server發送針對本機的配置信息文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行后續操作。

Client向TFTP發送Linux內核請求信息,TFTP接收到消息之后將內核文件發送給Client

Client向TFTP發送根文件請求信息,TFTP接收到消息之后返回Linux根文件系統

Client啟動Linux內核

Client下載安裝源文件,讀取自動化安裝腳本

 

 

我以ubuntu 14.04系統為例演示一下怎么實現pxe和kickstart 來實現批量部署系統

 

環境系統: ubuntu14.04 

 

1. 軟件安裝及配置,首先需要安裝 apache tftpserver kickstart  dhcp  配置工具

apt-get install  -y system-config-kickstart tftpd-hpa tftp-hpa apache2  isc-dhcp-server 

 

 

2.將ubuntu-14.04 鏡像上傳,在apache2 網站上創建掛載目錄,將鏡像掛載在目錄上。 

我們安裝完apache2 后在apache2 的網站目錄(/var/www/html/) 上創建掛載的目錄    (在哪里掛載沒有關系只需要將掛載目錄上的數據都放在網站目錄下) 

mkdir -p /var/www/html/ubuntu-1404/  

網站默認目錄是/var/www/html/  如果想要掛載指定位置需要修改 /etc/apache2/sites-available/000-default.conf 文件中默認根目錄,修改完記得要重啟服務 

 

 

 

掛載鏡像到目錄上,掛載后的目錄是由數據。

mount -t iso9660 ubuntu-14.04.6-server-amd64.iso /opt/tftp/ubuntu-1404

 

永久掛載需要寫在開機自動掛載的fstab 里

/root/ubuntu-14.04.6-server-amd64.iso /var/www/html/ubuntu-1404 iso9660 ro,loop,defaults  0 0

 

 

將掛載目錄的啟動文件cp 到我們tftp 共享目錄中(/var/lib/tftpboot/   初始的目錄是為空)與網站目錄中

cp -arf /var/www/html/ubuntu-1404/install/netboot/* /var/lib/tftpboot/

cp /var/www/html/ubuntu-1404/preseed/ubuntu-server.seed  /var/www/html/

 

 

 

 

在網站目錄創建ks 

mkdir -p /var/www/html/ks/

 

生成ks.cfg 文件   (需要支持圖形界面如果不是圖形界面apt-get install ubuntu-desktop  安裝一下)

system-config-kickstart                   (選擇一些關鍵的就可以,其他保持默認根據需求來配置----自己可以百度一下kickstart 詳細配置說明)    配置完后在file 中save  file 

 

 

 

 

 

 

 

 

 

保存文件后會有一個ks.cfg 文件存在

 

 

 

修改/var/www/html/ubuntu-server.seed 文件追加一條 (因為在ubuntu12.10版本以后,安裝一些包會依賴於預配置的文件系統,會導致使用kickstart方式無法成功安裝)

vim /var/www/html/ubuntu-server.seed

d-i live-installer/net-image string http://192.168.1.128/ubuntu-1404/install/filesystem.squashfs

 

 

添加 ks.cfg 文路徑,在install標簽下的append 添加ks

vim /var/lib/tftpboot/ubuntu-installer/amd64/boot-screens/txt.cfg


default install
label install
menu label ^Install
menu default
kernel ubuntu-installer/amd64/linux
append ks=http://192.168.1.128/ks/ks.cfg preseed/url=http://192.168.1.128/ubuntu-server.seed vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet
label cli
menu label ^Command-line install
kernel ubuntu-installer/amd64/linux
append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet
~

 

 

配置dhcp 

/etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.60;      #地址分配范圍
option routers 192.168.1.1;         #網關
option domain-name-servers 192.168.1.1;        #dns  (/etc/resolv.conf 可以查看到)
default-lease-time 6000;          #默認租期
max-lease-time 7200;           #最大租期
filename "pxelinux.0";           #pxe啟動文件名稱,注意文件最后是數字0,不是字母o
next-server 192.168.1.128;         #tftp 地址
}

 

 

3.重啟各個服務

service isc-dhcp-server restart

service tftpd-hpa restart

service apache2 restart

 

4. 驗證

起一個虛機設置網絡啟動 (這個虛機需要和pxe server 在同一個vlan 里)   裝好后的虛機

 

 

 

附ks.cfg   

#Generated by Kickstart Configurator
#platform=x86

#System language
lang en_US
#Language modules to install
langsupport en_US
#System keyboard
keyboard us
#System mouse
mouse
#System timezone
timezone Asia/Shanghai
#Root password
rootpw --iscrypted $1$FMLT9HTQ$A9NJbHTiSiCsPq9Qg3h1m0
#Initial user
user test --fullname "" --iscrypted --password $1$MWbigjvn$C5HPkUqvo9PBnu0YnfaoE/
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://192.168.1.128/ubuntu-1404
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype xfs --size 500
part swap --size 500
part / --fstype ext4 --size 1 --grow
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure the X Window System
skipx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM