PEX自動化安裝CentOS7之Kickstart

最近公司線上採購一批服務器(100臺),上架後須要本身安裝操做系統,部署相關軟件環境,安裝常規思路直接一臺一臺部署,可是100臺一臺一臺的安裝耗時不說,並且安裝過程當中有可能出現環境安裝不一致,因此思來想去,決定採用網絡批量部署,可是常規的網絡批量部署須要咱們用鼠標和鍵盤一臺一臺去點鼠標和選擇對應的選項,那麼有沒有方便實用並且又簡單的方法呢?答案是確定的:  Kickstart 和Cobblerhtml

在介紹具體安裝方法以前,咱們先來了解一下什麼是pxe,pxe能幹什麼,Kickstart是什麼,Cobbler又有什麼特別。linux

1、什麼是PEX?redis

  1. PXE,全名Pre-boot Execution Environment,預啓動執行環境;
  2. 經過網絡接口啓動計算機,不依賴本地存儲設備(如硬盤)或本地已安裝的操做系統;
  3. 由Intel和Systemsoft公司於1999年9月20日公佈的技術;
  4. Client/Server的工做模式;
  5. PXE客戶端會調用網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協議(DHCP)、小型文件傳輸協議(TFTP)等網絡協議;
  6.  PXE客戶端(client)這個術語是指機器在PXE啓動過程當中的角色。一個PXE客戶端能夠是一臺服務器、筆記本電腦或者其餘裝有PXE啓動代碼的機器(咱們電腦的網卡)。

2、PXE工做過程大概以下bootstrap

  1.        pxe客戶端向DHCP服務器發送廣播請求,該廣播包爲UDP,請求IPD地址信息
  2.        DHCP服務器向pxe客戶端返回請求的IP地址信息和PXE文件位置存放位置信息(通常位於tftp服務器上)
  3.       pxe客戶端向TFTP服務器發送pxelinux.0文件的請求信息
  4.       TFTP服務器發回給PXE客戶端pxelinux.0文件相關信息
  5.       pxe客戶端執行pxelinux.0文件內容
  6.       pxe客戶端再次向TFTP請求配置文件pxelinux.cfg的相關信息
  7.       TFTP服務器發送pxelinux.cfg配置文件到pxe客戶端
  8.      pxe客戶接收到pxelinux.cfg配置文件後讀取之
  9.      pxe客戶端再次向TFTP請求vmlinuz
  10.      TFTP響應請求返回pxe客戶端vmlimuz文件
  11.      pxe客戶端最後向TFTP服務器請求initrd.img文件
  12.      TFTP響應pxe請求並返回initrd.img文件給pxe客戶端
  13.      pxe客戶端讀取Linux內核,而後啓動安裝程序

這裏借用老男孩教育流程圖: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

相關文章
相關標籤/搜索