1. 程式人生 > >KICKSTART無人值守安裝服務-學藝不精-請各位大神多多指正

KICKSTART無人值守安裝服務-學藝不精-請各位大神多多指正

watermark bsp ron yum 自動安裝系統 isa sta 9.png first

Linux系統批量自動安裝

實現原理

將手動安裝的所有詳細步驟記錄到一個文件中,然後有一種軟件通過讀取這個文件就可以實現自動化安裝系統;

工具

這個工具叫做kickstartkickstartRedHat公司開源的工具,所以對Centos兼容性最好,註意kickstart是一個項目的名稱,沒有這個軟件;

cobbler

cobbler是對kickstart的所有組件的封裝,本質上就是個網頁版本的kickstart

kickstart的原理及組件

什麽是PXE

PXE,全名Pre-boot Execution Environment,預啟動執行環境;

通過網絡接口啟動計算機,不依賴本地存儲設備(如硬盤)或本地已安裝的操作系統;

PXE客戶端會調用網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協議(DHCP)、小型文件傳輸協議(TFTP)等網絡協議;

原理圖:

技術分享圖片技術分享圖片

環境準備:

[root@kickstart ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@kickstart ~]# uname -r 3.10.0-693.el7.x86_64
[root@kickstart ~]# getenforce Disabled
[root@kickstart ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@kickstart ~]# hostname -I
10.0.0.201 172.16.1.201

安裝DHCP服務

安裝DHCP

yum -y install dhcp

配置DHCP

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.201;
filename "/pxelinux.0";
}
EOF

啟動dhcp查看日誌

[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# systemctl status dhcpd
tailf /var/log/messages

那些年我們踩過的坑(1

新建空白虛擬機,建完後做快照

技術分享圖片技術分享圖片


安裝TFTP服務

1 安裝

yum -y install tftp—server

2 啟動

systemctl start tftp.socket

那些年我們踩過的坑(2

技術分享圖片

上面報錯是在TFTP服務的根目錄找不到啟動文件pxelinux.0

[root@kickstart ~]# cd /var/lib/tftpboot/ # TFTP服務的根目錄
[root@kickstart tftpboot]# ls
[root@kickstart tftpboot]#
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

那些年我們踩過的坑(3

技術分享圖片

首先排除最簡單故障原因:selinux是否關閉,防火墻是否關閉

上面的錯誤是因為pxelinux.0這個小系統的配置文件(default)不存在,或者文件名不對;

那些年我們踩過的坑(4

技術分享圖片

如何找到這個配置文件

第一步:掛載鏡像

第二步:

mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS

第三步:從鏡像中找到相關的配置文件

cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default

安裝HTTP服務

作用1:提供自動應答文件下載

作用2:提供安裝系統所需的所有rpm包下載

yum -y install httpd
systemctl start httpd.service

檢查步驟


http://10.0.0.201/CentOS7/
curl http://172.16.1.201/CentOS7/



編輯default文件


append initrd=initrd.img method=http://172.16.1.201/CentOS7/    ----第一種方法
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/ ----第二種方法


編寫KS文件(包含安裝的所有步驟)

方法1:新裝CentOS系統/root/anaconda-ks.cfg

方法2:圖形CentOS系統提供的圖形工具

方法3:了解ks文件語法,編寫ks文件。(推薦)

KS文件語法

ks文件組成

命令段

包組段 %packages開頭,以%end結束

腳本段 %post開頭,以%end結束,在安裝完系統之後執行的相關Linux命令、腳本

%pre開頭,以%end結束,在安裝完系統之前執行的相關Linux命令、腳本

kickstart文件語法檢查

yum install pykickstart
ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg


請記住這個驗證工具有其局限性。Kickstart 文件可能會很復雜;ksvalidator 可保證其語法正確,且該文件不包含 淘汰的選項,但它無法保證安裝會成功。它也不會嘗試驗證 Kickstart 文件的 %pre%post %packages 部分。

root加密密碼生成

python -c 'import crypt; print(crypt.crypt("密碼"))'


開始自動安裝系統,enjoy!

附:KS配置文件

default配置

default ks
prompt 0
 
label ks
  kernel vmlinuz
  append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1

Centos7-ks.cfg

# Kickstart Configurator for CentOS 7 by MsyLinux
install
url --url="http://172.16.1.201/CentOS7/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network  --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate
network  --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate
network  --hostname=Cobbler
#network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
 
%packages
@^minimal
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
%end
 
%post
systemctl disable postfix.service
%end

技術分享圖片

下方博客是老男孩老師的博客,裏邊詳細的講解了kickstart在Centos6上的安裝過程及實踐過程,如有需要基於Centos6環境配置kickstart的小夥伴可以按照老師的博客進行安裝;

老男孩-Centos6環境kickstart配置


KICKSTART無人值守安裝服務-學藝不精-請各位大神多多指正