最近公司線上採購一批服務器(100臺),上架後須要本身安裝操做系統,部署相關軟件環境,安裝常規思路直接一臺一臺部署,可是100臺一臺一臺的安裝耗時不說,並且安裝過程當中有可能出現環境安裝不一致,因此思來想去,決定採用網絡批量部署,可是常規的網絡批量部署須要咱們用鼠標和鍵盤一臺一臺去點鼠標和選擇對應的選項,那麼有沒有方便實用並且又簡單的方法呢?答案是確定的: Kickstart 和Cobblerhtml
在介紹具體安裝方法以前,咱們先來了解一下什麼是pxe,pxe能幹什麼,Kickstart是什麼,Cobbler又有什麼特別。linux
1、什麼是PEX?redis
2、PXE工做過程大概以下bootstrap
這裏借用老男孩教育流程圖:vim
具體分解爲:centos
a、 PXE Client向DHCP發送請求
PXE Client從本身的PXE網卡啓動,經過PXE BootROM(自啓動芯片)會以UDP(簡單用戶數據報協議)發送一個廣播請求,向本網絡中的DHCP服務器索取IP。
b、DHCP服務器提供信息
DHCP服務器收到客戶端的請求,驗證是否來至合法的PXE Client的請求,驗證經過它將給客戶端一個「提供」響應,這個「提供」響應中包含了爲客戶端分配的IP地址、pxelinux啓動程序(TFTP)位置,以及配置文件所在位置。
c、PXE客戶端請求下載啓動文件
客戶端收到服務器的「迴應」後,會迴應一個幀,以請求傳送啓動所需文件。這些啓動文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
d、Boot Server響應客戶端請求並傳送文件
當服務器收到客戶端的請求後,他們之間以後將有更多的信息在客戶端與服務器之間做應答, 用以決定啓動參數。BootROM由TFTP通信協議從Boot Server下載啓動安裝程序所必須的文件(pxelinux.0、pxelinux.cfg/default)。default文件下載完成後,會根據該文件中定義的引導順序,啓動Linux安裝程序的引導內核。
e、請求下載自動應答文件
客戶端經過pxelinux.cfg/default文件成功的引導Linux安裝內核後,安裝程序首先必須肯定你經過什麼安裝介質來安裝linux,若是是經過網絡安裝(NFS, FTP, HTTP),則會在這個時候初始化網絡,並定位安裝源位置。接着會讀取default文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。瀏覽器
這裏有個問題:
在第2步和第5步初始化2次網絡了,這是因爲PXE獲取的是安裝用的內核以及安裝程序等,而安裝程序要獲取的是安裝系統所需的二進制包以及配置文件。所以PXE模塊和安裝程序是相對獨立的,PXE的網絡配置並不能傳遞給安裝程序,從而進行兩次獲取IP地址過程,但IP地址在DHCP的租期內是同樣的。bash
f、客戶端安裝操做系統
將ks.cfg文件下載回來後,經過該文件找到OS Server,並按照該文件的配置請求下載安裝過程須要的軟件包。
OS Server和客戶端創建鏈接後,將開始傳輸軟件包,客戶端將開始安裝操做系統。安裝完成後,將提示從新引導計算機。服務器
3、批量裝機軟件介紹網絡
Kickstart和Cobbler都屬於紅帽(redhat)下的開源工具
Kickstart是一種無人值守的安裝方式。它的工做原理是在安裝過程當中記錄人工干預填寫的各類參數,並生成一個名爲ks.cfg的文件。若是在自動安裝過程當中出現要填寫參數的狀況,安裝程序首先會去查找ks.cfg文件,若是找到合適的參數,就採用所找到的參數;若是沒有找到合適的參數,便會彈出對話框讓安裝者手工填寫。因此,若是ks.cfg文件涵蓋了安裝過程當中全部須要填寫的參數,那麼安裝者徹底能夠只告訴安裝程序從何處下載ks.cfg文件,而後就去忙本身的事情。等安裝完畢,安裝程序會根據ks.cfg中的設置重啓/關閉系統,並結束安裝。
Cobbler集中和簡化了經過網絡安裝操做系統須要使用到的DHCP、TFTP和DNS服務的配置。Cobbler不只有一個命令行界面,還提供了一個Web界面,大大下降了使用者的入門水平。Cobbler內置了一個輕量級配置管理系統,但它也支持和其它配置管理系統集成,如Puppet,暫時不支持SaltStack。
** 簡單的說,Cobbler是對kickstart的封裝,簡化安裝步驟、使用流程,下降使用者的門檻。**
4、安裝準備環境:
1 [root@localhost ~]# cat /etc/redhat-release 2 CentOS Linux release 7.2.1511 (Core) 3 [root@localhost ~]# systemctl status firewalld 4 ● firewalld.service - firewalld - dynamic firewall daemon 5 Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) 6 Active: inactive (dead) 7 [root@localhost ~]# 8 [root@localhost ~]# getenforce 9 Disabled 10 [root@localhost ~]#
1 [root@localhost ~]# ifconfig enp2s0|grep inet 2 inet 10.0.10.11 netmask 255.255.255.0 broadcast 10.0.10.255 3 inet6 fe80::62a4:4cff:fe7b:7d5f prefixlen 64 scopeid 0x20<link> 4 [root@localhost ~]#
注意:
我這裏的網絡環境爲一臺兩臺PC直接和交換機鏈接,若是用虛擬機,網卡採用NAT模式,不能使用橋接模式,由於後面咱們要搭建一個DHCP服務器,若是一個網段裏有兩個DHCP服務會有衝突。
VMware的NAT模式的DHCP服務也要關閉,避免干擾。
5、部署DHCP、TFTP、HTTP服務
①DHCP部署
1 [root@localhost ~]# yum install httpd -y 2 [root@localhost ~]# cat /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ori 3 [root@localhost ~]# cat /etc/dhcp/dhcpd.conf 4 # 5 # DHCP Server Configuration file. 6 # see /usr/share/doc/dhcp*/dhcpd.conf.example 7 # see dhcpd.conf(5) man page 8 # 9 authoritative; 10 subnet 10.0.10.0 netmask 255.255.255.0 { 11 range 10.0.10.100 10.0.10.200; 12 option subnet-mask 255.255.255.0; 13 default-lease-time 21600; 14 max-lease-time 43200; 15 next-server 10.0.10.101; 16 filename "/pxelinux.0"; 17 } 18 [root@localhost ~]# 19 20 說明: 21 subnet 10.0.10.0 netmask 255.255.255.0 #子網地址劃分 22 range 10.0.10.100 10.0.10.200 #可分配的IP地址範圍 23 option subnet-mask 255.255.255.0 #設定子網掩碼 24 default-lease-time 21600 #默認IP地址租用時間段 25 max-lease-time 43200 #最大的IP地址租用時間段 26 next-server 10.0.10.101 #告訴pxe客戶端TFTP服務器的IP 27 filename "/pxelinux.0"; #告訴pxe客戶端從TFTP跟目錄下載pxelinux.0文件 28 29 [root@localhost ~]# netstat -lnupt|grep dhcp 30 udp 0 0 0.0.0.0:67 0.0.0.0:* 3667/dhcpd 31 [root@localhost ~]# 32 33 DHCP指定監控網卡: 34 [root@localhost ~]# vim /etc/sysconfig/dhcpd 35 # Command line options here 36 DHCPDARGS=eth1 #指定監聽網卡 37 38 [root@localhost ~]# systemctl restart dhcpd 39 [root@localhost ~]# ps xua|grep dhcpd 40 dhcpd 3950 0.1 0.2 103012 7620 ? Ss 16:51 0:00 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid 41 root 3952 0.0 0.0 112644 948 pts/1 S+ 16:51 0:00 grep --color=auto dhcpd 42 [root@localhost ~]#
②TFTP服務部署
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號爲69。
1 [root@localhost ~]# yum install tftp-server 2 [root@localhost ~]# cat /etc/xinetd.d/tftp 3 # default: off 4 # description: The tftp server serves files using the trivial file transfer \ 5 # protocol. The tftp protocol is often used to boot diskless \ 6 # workstations, download configuration files to network-aware printers, \ 7 # and to start the installation process for some operating systems. 8 service tftp 9 { 10 socket_type = dgram 11 protocol = udp 12 wait = yes 13 user = root 14 server = /usr/sbin/in.tftpd 15 server_args = -s /var/lib/tftpboot #tftp資源文件目錄了,能夠根據實際狀況修改,通常不修改 16 disable = yes #no改成yes 17 per_source = 11 18 cps = 100 2 19 flags = IPv4 20 } 21 [root@localhost ~]# 22 [root@localhost ~]# netstat -lnupt|grep 69 23 udp6 0 0 :::69 :::* 1/systemd 24 [root@localhost ~]#
③配置HTTP服務
http服務提供OS鏡像下載地址
1 [root@localhost ~]# yum install httpd -y 2 [root@localhost ~]# mkdir -p /data/os/image/ 3 [root@localhost ~]# mkdir -p /var/www/html/CentOS7 4 [root@localhost ~]# mount /dev/cdrom /var/www/html/CentOS7 5 [root@localhost ~]# rsync -pavz /var/www/html/CentOS7 /data/os/image/CentOS7 #這裏便於下載直接把操做系統文件拷貝到建立的/data/os/image/CentOS7目錄下 6 修改httpd配置文件 7 DocumentRoot指定目錄有"/var/www/html"修改成"/data/os/image" 8 [root@localhost ~]# grep "/data/os/image" /etc/httpd/conf/httpd.conf 9 DocumentRoot "/data/os/image" 10 <Directory "/data/os/image"> 11 <Directory "/data/os/image"> 12 [root@localhost ~]# 13 [root@localhost ~]# systemctl restart httpd 14 [root@localhost ~]#
保證能夠經過瀏覽器訪問到OS鏡像內容
④配置支持PXE啓動程序
pxe引導配置(bootstrap)
syslinux是一個功能強大的引導加載程序,而且兼容各類介質。syslinux是一個小型的LInux操做系統。它的目的是高度簡化收菜安裝Linux的時間,並創建修護或其餘特殊用戶的啓動盤。通常系統沒有pxelinux.0這個文件。
1 [root@localhost ~]# yum install syslinux -y 2 [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 3 #複製啓動菜單程序文件 4 [root@localhost ~]# cp -a /data/os/image/CentOS7/isolinux/* /var/lib/tftpboot/ 5 [root@localhost ~]# ls /var/lib/tftpboot/ 6 boot.cat grub.conf isolinux.bin memtest pxelinux.0 splash.png upgrade.img vmlinuz 7 boot.msg initrd.img isolinux.cfg menu.c32 TRANS.TBL vesamenu.c32 8 [root@localhost ~]# 9 #建立pxelinux.cfg目錄,存放個pxe客戶端的配置文件 10 [root@localhost ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg/ 11 [root@localhost ~]# cp -a /data/os/image/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
⑤配置網絡安裝文件default
1 [root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 2 label manual7 3 menu label Manual Install CentOS Linux 7 4 kernel vmlinuz 5 append initrd=initrd.img method=http://10.0.10.111/CentOS7/
啓動客戶端,出現以下界面:
接下來就是手動安裝了,若是要自動安裝呢?
那麼就要修改default文件並指定安裝配置文件CentOS-7.2.1511.cfg
1 label centos7 #auto install centos7 2 menu label Auto Install CentOS Linux 7 3 kernel vmlinuz 4 append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS-7.2.1511.cfg
CentOS7-7.2.1511.cfg內容以下
1 #version=DEVEL 2 # System authorization information 3 auth --enableshadow --passalgo=sha512 4 # Use CDROM installation media 5 #cdrom 6 url --url=http://10.0.10.11/CentOS7 7 # Use graphical install 8 #graphical 9 text 10 # Run the Setup Agent on first boot 11 firstboot --enable 12 ignoredisk --only-use=sda 13 # Keyboard layouts 14 keyboard --vckeymap=us --xlayouts='us' 15 # System language 16 lang en_US.UTF-8 17 18 # Network information 19 network --bootproto=dhcp --device=ens32 --onboot=on --ipv6=auto --activate 20 network --hostname=localhost.localdomain 21 22 # Root password 23 rootpw --iscrypted $6$KvKpJji3uieQkGBS$5s1fuvxc0WcOW77438w.bLZJwTxV8afFC.NL6X0zCfRj8pfrldm37lKgR5iSsY.z9pNd7Q9rxvqfIU0O1CUnX. 24 # System services 25 services --enabled="chronyd" 26 # System timezone 27 timezone Asia/Shanghai --isUtc --ntpservers=0.centos.pool.ntp.org,1.centos.pool.ntp.org,2.centos.pool.ntp.org,3.centos.pool.ntp.org 28 # System bootloader configuration 29 bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda 30 # Partition clearing information 31 #clearpart --none --initlabel 32 zerombr 33 clearpart --all 34 reboot 35 # Disk partitioning information 36 part swap --fstype="swap" --ondisk=sda --size=131072 37 part /boot --fstype="xfs" --ondisk=sda --size=2048 38 part /opt --fstype="xfs" --ondisk=sda --size=122880 39 part /data --fstype="xfs" --ondisk=sda --size=204800 40 part /log --fstype="xfs" --ondisk=sda --size=122880 41 part / --fstype="xfs" --ondisk=sda --size=102400 42 firstboot --disabled 43 selinux --disabled 44 firewall --disabled 45 logging --level=info 46 reboot 47 %packages 48 @base 49 @compat-libraries 50 kexec-tools 51 autofs 52 @compat-libraries 53 @debugging 54 @development 55 tree 56 nmap 57 sysstat 58 rsyslog 59 lrzsz 60 dos2unix 61 telnet 62 wget 63 vim 64 wget 65 net-tools 66 sysstat 67 bash-completion 68 %end
CentOS-7.2.1511.cfg文件解釋:
具體參考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-simple-install-kickstart
1 關鍵字 含義 2 install 告知安裝程序,這是一次全新安裝,而不是升級upgrade。 3 url --url=" " 經過FTP或HTTP從遠程服務器上的安裝樹中安裝。 4 url --url="http://10.0.10.11/CentOS7/" 5 url --url ftp://<username>:<password>@<server>/<dir> 6 nfs 從指定的NFS服務器安裝。 7 nfs --server=nfsserver.example.com --dir=/tmp/install-tree 8 text 使用文本模式安裝。 9 lang 設置在安裝過程當中使用的語言以及系統的缺省語言。lang en_US.UTF-8 10 keyboard 設置系統鍵盤類型。keyboard us 11 zerombr 清除mbr引導信息。 12 bootloader 系統引導相關配置。 13 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" 14 --location=,指定引導記錄被寫入的位置.有效的值以下:mbr(缺省),partition(在包含內核的分區的第一個扇區安裝引導裝載程序)或none(不安裝引導裝載程序)。 15 --driveorder,指定在BIOS引導順序中居首的驅動器。 16 --append=,指定內核參數.要指定多個參數,使用空格分隔它們。 17 network 爲經過網絡的kickstart安裝以及所安裝的系統配置聯網信息。 18 network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 19 --bootproto=[dhcp/bootp/static]中的一種,缺省值是dhcp。bootp和dhcp被認爲是相同的。 20 static方法要求在kickstart文件裏輸入全部的網絡信息。 21 network --bootproto=static --ip=10.0.10.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 22 請注意全部配置信息都必須在一行上指定,不能使用反斜線來換行。 23 --ip=,要安裝的機器的IP地址. 24 --gateway=,IP地址格式的默認網關. 25 --netmask=,安裝的系統的子網掩碼. 26 --hostname=,安裝的系統的主機名. 27 --onboot=,是否在引導時啓用該設備. 28 --noipv6=,禁用此設備的IPv6. 29 --nameserver=,配置dns解析. 30 timezone 設置系統時區。timezone --utc Asia/Shanghai 31 authconfig 系統認證信息。authconfig --enableshadow --passalgo=sha512 32 設置密碼加密方式爲sha512 啓用shadow文件。 33 rootpw root密碼 34 clearpart 清空分區。clearpart --all --initlabel 35 --all 從系統中清除全部分區,--initlable 初始化磁盤標籤 36 part 磁盤分區。 37 part /boot --fstype=ext4 --asprimary --size=200 38 part swap --size=1024 39 part / --fstype=ext4 --grow --asprimary --size=200 40 --fstype=,爲分區設置文件系統類型.有效的類型爲ext2,ext3,swap和vfat。 41 --asprimary,強迫把分區分配爲主分區,不然提示分區失敗。 42 --size=,以MB爲單位的分區最小值.在此處指定一個整數值,如500.不要在數字後面加MB。 43 --grow,告訴分區使用全部可用空間(如有),或使用設置的最大值。 44 firstboot 負責協助配置redhat一些重要的信息。 45 firstboot --disable 46 selinux 關閉selinux。selinux --disabled 47 firewall 關閉防火牆。firewall --disabled 48 logging 設置日誌級別。logging --level=info 49 reboot 設定安裝完成後重啓,此選項必須存在,否則kickstart顯示一條消息,並等待用戶按任意鍵後才從新引導,也能夠選擇halt關機。
爲了實現全自動化安裝並優化系統,咱們能夠在cfg文件中加入優化腳本;
調整後的cfg文件以下:
1 #version=DEVEL 2 # System authorization information 3 auth --enableshadow --passalgo=sha512 4 # Use CDROM installation media 5 #cdrom 6 url --url=http://10.0.10.11/CentOS7 7 # Use graphical install 8 #graphical 9 text 10 # Run the Setup Agent on first boot 11 firstboot --enable 12 ignoredisk --only-use=sda 13 # Keyboard layouts 14 keyboard --vckeymap=us --xlayouts='us' 15 # System language 16 lang en_US.UTF-8 17 18 # Network information 19 network --bootproto=dhcp --device=ens32 --onboot=on --ipv6=auto --activate 20 network --hostname=localhost.localdomain 21 22 # Root password 23 rootpw --iscrypted $6$KvKpJji3uieQkGBS$5s1fuvxc0WcOW77438w.bLZJwTxV8afFC.NL6X0zCfRj8pfrldm37lKgR5iSsY.z9pNd7Q9rxvqfIU0O1CUnX. 24 # System services 25 services --enabled="chronyd" 26 # System timezone 27 timezone Asia/Shanghai --isUtc --ntpservers=0.centos.pool.ntp.org,1.centos.pool.ntp.org,2.centos.pool.ntp.org,3.centos.pool.ntp.org 28 # System bootloader configuration 29 bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda 30 # Partition clearing information 31 #clearpart --none --initlabel 32 zerombr 33 clearpart --all 34 reboot 35 # Disk partitioning information 36 part swap --fstype="swap" --ondisk=sda --size=131072 37 part /boot --fstype="xfs" --ondisk=sda --size=2048 38 part /opt --fstype="xfs" --ondisk=sda --size=122880 39 part /data --fstype="xfs" --ondisk=sda --size=204800 40 part /log --fstype="xfs" --ondisk=sda --size=122880 41 part / --fstype="xfs" --ondisk=sda --size=102400 42 firstboot --disabled 43 selinux --disabled 44 firewall --disabled 45 logging --level=info 46 reboot 47 %packages 48 @base 49 @compat-libraries 50 kexec-tools 51 autofs 52 @compat-libraries 53 @debugging 54 @development 55 tree 56 nmap 57 sysstat 58 rsyslog 59 lrzsz 60 dos2unix 61 telnet 62 wget 63 vim 64 wget 65 net-tools 66 sysstat 67 bash-completion 68 %end 69 %post 70 wget -O /tmp/optimization.sh http://10.0.10.11/ks_config/initialization.sh &>/dev/null 71 /bin/sh /tmp/initialization.sh 72 systemctl disable postfix.service 73 %end
initialization.sh內容以下:
1 . /etc/init.d/functions 2 3 Ip=10.0.10.11 4 Port=80 5 ConfigDir=ks_config 6 7 # Defined result function 8 function Msg(){ 9 if [ $? -eq 0 ];then 10 action "$1" /bin/true 11 else 12 action "$1" /bin/false 13 fi 14 } 15 16 # Defined IP function 17 function ConfigIP(){ 18 Suffix=`ifconfig em1|awk -F "[ .]+" 'NR==2 {print $6}'` 19 /bin/cat >/etc/sysconfig/network-scripts/ifcfg-em1 <<-END 20 DEVICE=em1 21 TYPE=Ethernet 22 ONBOOT=yes 23 NM_CONTROLLED=yes 24 BOOTPROTO=none 25 IPADDR=10.0.10.$Suffix 26 PREFIX=24 27 DEFROUTE=yes 28 IPV4_FAILURE_FATAL=yes 29 IPV6INIT=no 30 NAME="System em1" 31 END 32 Msg "config em1" 33 } 34 35 # Defined Yum source Functions 36 function yum(){ 37 YumDir=/etc/yum.repos.d 38 [ -f "$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo{,.ori} 39 wget -O $YumDir/CentOS-Base.repo http://$Ip:$Port/$ConfigDir/CentOS-Base.repo &>/dev/null &&\ 40 wget -O $YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null &&\ 41 Msg "YUM source" 42 } 43 44 # Defined Hide the system version number Functions 45 function HideVersion(){ 46 [ -f "/etc/issue" ] && >/etc/issue 47 Msg "Hide issue" 48 [ -f "/etc/issue.net" ] && > /etc/issue.net 49 Msg "Hide issue.net" 50 } 51 52 # Defined OPEN FILES Functions 53 function openfiles(){ 54 [ -f "/etc/security/limits.conf" ] && { 55 echo '* - nofile 65535' >> /etc/security/limits.conf 56 Msg "open files" 57 } 58 } 59 60 # Defined Kernel parameters Functions 61 function kernel(){ 62 KernelDir=/etc 63 [ -f "$KernelDir/sysctl.conf" ] && /bin/mv $KernelDir/sysctl.conf{,.ori} 64 wget -O $KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf &>/dev/null 65 Msg "Kernel config" 66 } 67 68 # Defined SSH Login Config 69 function sshd(){ 70 [ -f "/etc/ssh/sshd_config" ] && /bin/mv /etc/ssh/sshd_config{,.ori} 71 wget -O /etc/ssh/sshd_config http://$Ip:$Port/$ConfigDir/sshd_config &>/dev/null 72 Msg "ssh config" 73 74 } 75 # Defined Log parameters Functions 76 function logs(){ 77 [ -f "/etc/rsyslog.conf" ] && /bin/mv /etc/rsyslog.conf{,.ori} 78 wget -O /etc/rsyslog.conf http://$Ip:$Port/$ConfigDir/rsyslog.conf &>/dev/null 79 Msg "Log config" 80 } 81 82 # Defined Time Synchronization Functions 83 function Time(){ 84 echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov &>/dev/null' >>/var/spool/cron/root 85 Msg "Time Synchronization" 86 } 87 88 89 # Defined main Functions 90 function main(){ 91 ConfigIP 92 yum 93 HideVersion 94 openfiles 95 kernel 96 sshd 97 logs 98 Time 99 } 100 101 main
我這裏把須要下載的文件都拷貝到/data/os/image/ks_config目錄下:
至此基於PXE和Kicstart部署自動化部署操做系統安裝完成
參考文章:
http://blog.oldboyedu.com/autoinstall-kickstart/
https://www.cnblogs.com/clsn/p/7833333.html
https://www.cnblogs.com/clsn/p/7833333.html