Centos7.2 kickstart批量裝機

   本次試用Centos7.2作爲PXE服務端批量安裝操作系統。之前嘗試過使用centos6.x做爲服務端批量安裝操作系統。本人表示Centos7.2批量裝機“坑”不少最終百度無果無奈去google最終完成此實驗。故此做此博客來Mark下本次實驗過程。

查看操作系統版本並且確定selinux和iptables已經關閉

[root@controller01 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@controller01 ~]# getenforce 
Disabled
[root@controller01 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain nova-api-FORWARD (0 references)
target     prot opt source               destination         

Chain nova-api-INPUT (0 references)
target     prot opt source               destination         

Chain nova-api-OUTPUT (0 references)
target     prot opt source               destination         

Chain nova-api-local (0 references)
target     prot opt source               destination         

Chain nova-filter-top (0 references)
target     prot opt source               destination         
[root@controller01 ~]#

安裝相關法服務

[root@controller01 ~]# yum install dhcp tftp tftp-server syslinux httpd xinetd -y


1、首先配置dhcpd服務器
[root@controller01 ~]# egrep -v "^$|^#" /etc/dhcp/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 10.1.1.0  netmask 255.255.255.0 {
}
subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.26 10.1.1.200;
  option domain-name-servers ns1.internal.example.org;
  option domain-name "internal.example.org";
  option routers 10.1.1.100;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 10.1.1.100;   ##tftp的ip地址
  filename "/pxelinux.0";   ##tftp的應答文件
}
指定dhcp服務監聽到哪塊網卡
[root@controller01 ~]# grep ^[^#] /etc/sysconfig/dhcpd 
DHCPDARGS=eth1  # 指定監聽網卡
啓動dhcpd服務
[root@controller01 ~]# systemctl start dhcpd
[root@controller01 ~]# 

2、配置tftpfp服務
 [root@controller01 ~]# cat /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		= dgram
	protocol		= udp
	wait			= yes
	user			= root
	server			= /usr/sbin/in.tftpd
	server_args		= -s /var/lib/tftpboot   ##默認的放置配置文件的位置
	disable			= no   ##把yes改爲no
	per_source		= 11
	cps			= 100 2
	flags			= IPv4
}
[root@controller01 ~]#

拷貝必須的網絡引導文件到tftp的目錄

[root@controller01 ~]# cp -v /usr/share/syslinux/controller01linux.0 /var/lib/tftpboot
[root@controller01 ~]# cp -v /usr/share/syslinux/menu.c32 /var/lib/tftpboot
[root@controller01 ~]# cp -v /usr/share/syslinux/memdisk /var/lib/tftpboot
[root@controller01 ~]# cp -v /usr/share/syslinux/mboot.c32 /var/lib/tftpboot
[root@controller01 ~]# cp -v /usr/share/syslinux/chain.c32 /var/lib/tftpboot
[root@controller01 ~]#
[root@controller01 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@controller01 ~]# mkdir /var/lib/tftpboot/networkboot
root@controller01 ~]#

3、掛載光盤到httpd的默認路徑下

[root@controller01 ~]# mount /dev/cdrom  /var/www/html/Centos7.2

4、配置tftp的配置

[root@controller01 pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg
[root@controller01 pxelinux.cfg]# cat   default 
default menu.c32    ##展示風格
prompt 0
timeout 150   ##扽等該用戶選擇的超時時間
MENU TITLE LinuxTechi.com PXE Menu
#LABEL lcoal
MENU LABEL lolcal    ##設置第一項爲本地引導防止被勿安裝了操作系統當然這是個可選項
LABEL local
    MENU LABEL  ^1) Boot Local Hard Drive
    LOCALBOOT 0
#
LABEL centos7_x64             ###安裝Centos7.2 的操作系統
MENU LABEL CentOS 7_X65
menu label ^2) Install CentOS7x64
KERNEL /networkboot/vmlinuz
append initrd=/networkboot/initrd.img ks=http://10.1.1.100/centos7-ks.cfg quiet  ###安裝操作系統的應答文件位置
#
LABEL centos6_x64
MENU LABEL CentOS 6_X65
menu label ^3) Install CentOS6x64
kernel centos6/vmlinuz   ###這的相對位置爲/var/lib/tftpboot/即 kernal的位置爲/var/lib/tftpboot/centos6
append initrd=initrd.img ks=http://10.1.1.100/centos6-ks.cfg

4、拷貝vmlimz和initrd.img到/var/lib/tftpboot/networkboot/下

[root@controller01 tftpboot]# cp /var/www/html/Centos7.2/isolinux/vmlinuz networkboot/
cp /var/www/html/Centos7.2/isolinux/initrd.img networkboot/

5、生成pxe的應答文件可以安裝[root@controller01 ~]# yum -y install system-config-kickstart.noarch此過程省略下面直接看我們已經做好的應答文件

[root@controller01 ~]# cat /var/www/html/centos7-ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use FTP installation media
url --url=" ##文件下載的位置 
# Root password
rootpw --iscrypted $1$lgzpzCCE$Y6xpvPBLom/J4zAipUjfr.  ##此密碼爲123.com
# System authorization information
auth useshadow passalgo=sha512
# Use graphical install
graphical
firstboot disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux disabled
# Installation logging level
logging level=info
# System timezone
timezone Europe/Amsterdam
# System bootloader configuration
# Reboot afer installing
reboot  ##一定要有此 選項否則操作系統安裝完後不會自動重啓。
######
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=300
part pv.01 --size=1 --grow
volgroup root_vg01 pv.01
logvol / --fstype xfs --name=lv_01 --vgname=root_vg01 --size=1 --grow
%packages    ###要安裝的包
@^minimal
@core
acpid
iputils
man
net-tools
ntp
ntpdate
parted
vim-enhanced
wget
%end   ###以%end結尾
#%addon com_redhat_kdump --disable --reserve-mb='auto' 
#%end
%post #--nochroot --log=/mnt/sysp_w_picpath/var/log/ks.post01.log
mkdir /root/test
%end
[root@controller01 ~]#

下面說下pxe應答文件沒一項的意義

##軟件包段###
%packages
@groupname指定安裝的包組
package_name指定安裝的包
-package_name指定不安裝的包
###腳本段(可選)#####

%pre:安裝系統前執行的命令或腳本(由於只依賴於啓動鏡像支持的命令很少)
%post:安裝系統後執行的命令或腳本(基本支持所有命令)

##
關鍵字含義
install    告知安裝程序這是一次全新安裝而不是升級upgrade。    
url --url=" "    通過FTP或HTTP從遠程服務器上的安裝樹中安裝。
url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>    
nfs    從指定的NFS服務器安裝。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree    
text    使用文本模式安裝。    
lang    設置在安裝過程中使用的語言以及系統的缺省語言。lang en_US.UTF-8    
keyboard    設置系統鍵盤類型。keyboard us    
zerombr    清除mbr引導信息。    
bootloader    系統引導相關配置。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=,指定引導記錄被寫入的位置.有效的值如下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)或none(不安裝引導裝載程序)。
--driveorder,指定在BIOS引導順序中居首的驅動器。
--append=,指定內核參數.要指定多個參數,使用空格分隔它們。    
network    爲通過網絡的kickstart安裝以及所安裝的系統配置聯網信息。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]中的一種缺省值是dhcp。bootp和dhcp被認爲是相同的。
static方法要求在kickstart文件裏輸入所有的網絡信息。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
請注意所有配置信息都必須在一行上指定,不能使用反斜線來換行。
--ip=,要安裝的機器的IP地址.
--gateway=,IP地址格式的默認網關.
--netmask=,安裝的系統的子網掩碼.
--hostname=,安裝的系統的主機名.
--onboot=,是否在引導時啓用該設備.
--noipv6=,禁用此設備的IPv6.
--nameserver=,配置dns解析.    
timezone    設置系統時區。timezone --utc Asia/Shanghai    
authconfig    系統認證信息。authconfig --enableshadow --passalgo=sha512
設置密碼加密方式爲sha512 啓用shadow文件。    
rootpw    root密碼    
clearpart    清空分區。clearpart --all --initlabel
--all 從系統中清除所有分區--initlable 初始化磁盤標籤    
part    磁盤分區。
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
--fstype=,爲分區設置文件系統類型.有效的類型爲ext2,ext3,swap和vfat。
--asprimary,強迫把分區分配爲主分區,否則提示分區失敗。
--size=,以MB爲單位的分區最小值.在此處指定一個整數值,如500.不要在數字後面加MB。
--grow,告訴分區使用所有可用空間(若有),或使用設置的最大值。    
firstboot    負責協助配置redhat一些重要的信息。
firstboot --disable    
selinux    關閉selinux。selinux --disabled    
firewall    關閉防火牆。firewall --disabled    
logging    設置日誌級別。logging --level=info    
reboot    設定安裝完成後重啓,此選項必須存在不然kickstart顯示一條消息並等待用戶按任意鍵後才重新引導也可以選擇halt關機。

5、重啓xinetd、httpd服務

[root@controller01 ~]# systemctl restart xinetd
[root@controller01 ~]# systemctl restart httpd

6、下面用客戶端PXE啓動

wKioL1lQZR3yKezwAAAchOgc_9E041.png-wh_50

wKiom1lQZoeh8o15AAK95XJwhIM170.png-wh_50

當安裝完後會自動重啓並且默認啓動項是從本地內核引導

wKiom1lQa1-SNS5AAAAfbRCIwuA537.png-wh_50

進入系統後查看是否創建了/root/test

wKioL1lQbBjQ2wS5AAAYPVmy0sg048.png-wh_50

至此完成本次實驗。

注 若在安裝過程中報

wKioL1mVFerSI_y9AACTmExQWbk344.png

此時把 內存調成2G 方可解決

參考文檔

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html#sect-kickstart-postinstall

https://www.linuxtechi.com/configure-pxe-installation-server-centos-7/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章