PXE+kickstart一鍵部署操作系統


簡介:

作爲中小公司的運維,經常會遇到一些機械式的重複工作,例如:有時公司同時上線幾十甚至上百臺服務器,而且需要我們在短時間內完成系統安裝。

常規的辦法有什麼?     光盤安裝系統===>一個服務器DVD內置光驅百千塊,百臺服務器都配光驅就浪費了,因爲一臺服務器也就開始裝系統能用的上,以後用的機會屈指可數。用USB外置光驅,插來插去也醉了。

   U盤安裝系統===>還是同樣的問題,要一臺一臺服務器插U盤。

     網絡安裝系統(ftp,http,nfs) ===>這個方法不錯,只要服務器能聯網就可以裝系統了,但還是需要一臺臺服務器去敲鍵盤點鼠標。時刻想偷懶的我們,有沒有更好的方法!

高逼格的方法:

      Kickstart

     Cobbler

在進入主題前,首先會向大家介紹一下什麼是pxe,pxe能幹什麼,Kickstart是什麼,Cobbler又有什麼特別。

 什麼是PXE:

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

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

      由Intel和Systemsoft公司於1999年9月20日公佈的技術;

     Client/Server的工作模式;

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

   PXE客戶端(client)這個術語是指機器在PXE啓動過程中的角色。一個PXE客戶端可以是一臺服務器、筆記本電腦或者其他裝有PXE啓動代碼的機器(我們電腦的網卡)。

拓撲圖:

  wKioL1jYuSfgvGr0AASbNbAAdtg294.png


系統環境:

dhcp-4.1.1-51.P1.el6.centos.x86_64.rpm 

tftp-server-0.49-8.el6.x86_64.rpm                                                                                       

xinetd-2.3.14-40.el6.x86_64.rpm

httpd-2.2.15-56.el6.centos.3.x86_64.rpm                                                                                

httpd-tools-2.2.15-56.el6.centos.3.x86_64.rpm  

syslinux-4.04-3.el6.x86_64.rpm                                                                                    

syslinux-nonlinux-4.04-3.el6.noarch.rpm


安裝前準備:

[root@localhost ~]# hostname m01

[root@localhost ~]# vim /etc/hosts

[root@m01 ~]# setenforce 0      ##臨時關閉,但重啓之後還是會變成原來的狀態

[root@m01 ~]# getenforce

Permissive

[root@m01 ~]#  sed -i  '7s#enforcing#disabled#'   /etc/sysconfig/selinux     ##selinux永久關閉

[root@m01 ~]# /etc/init.d/iptables stop

[root@m01 ~]# yum -y install dhcp


安裝配置DHCP服務: 

wKiom1jYuVuCp0aPAASYJarL50A840.png  

#配置DHCP服務
[root@m01 ~]# yum -y install dhcp
[root@m01 ~]vim /etc/dhcp/dhcpd.conf
   # DHCP Server Configuration file.
   #   see /usr/share/doc/dhcp*/dhcpd.conf.sample
   #   see 'man 5 dhcpd.conf'
   #
   subnet 172.16.1.0 netmask 255.255.255.0 {  #設置子網聲明  
        range 172.16.1.100 172.16.1.200;      # 可分配的起始IP 結束IP
        option subnet-mask 255.255.255.0;     #設置掩碼
        default-lease-time 21600; #設置默認IP的租期時間
        max-lease-time 43200;     #設置默認IP最長租期時間
        next-server 172.16.1.61;  #指定tftp服務器地址
        filename "/pxelinux.0";   # tftp服務器根目錄下面的PXE專用的一個boot loader 文件
        }
#啓動DHCP服務
[root@m01 ~]# /etc/init.d/dhcpd start
Starting dhcpd:            [  OK  ]
[root@m01 ~]# chkconfig dhcpd on

安裝配置TFTP服務:

#安裝TFTP服務
[root@m01 ~]# yum -y install tftp-server
[root@m01 ~]# sed -i '14s#yes#no#'   /etc/xinetd.d/tftp  ##用於開啓tftp服務
 ###server_args  用於修改tftp根目錄,這裏不需要更改。
#啓動tftp服務
[root@m01 ~]# /etc/init.d/xinetd start 
Starting xinetd:           [  OK  ]
[root@m01 ~]# chkconfig xinetd on
安裝http服務
[root@m01 ~]#  yum -y install httpd
sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf  ##監控本地的80端口
[root@m01 ~]# /etc/init.d/httpd start
Starting httpd:            [  OK  ]
[root@m01 ~]# chkconfig httpd on
最後檢測三個服務是否都處於開啓狀態
[root@m01 ~]# netstat -tunlp|egrep 'httpd|dhcpd|xinetd'

 注:生產環境需要把鏡像文件上傳到服務器上面

這邊我用的是虛擬機,需要把光盤鏡像掛在起來
[root@m01 ~]# mkdir -p /var/www/html/CentOS-6.8
[root@m01 ~]#  mount /dev/cdrom1 /var/www/html/CentOS-6.8
mount: block device /dev/sr0 is write-protected, mounting read-only

PXE系統文件配置:

複製PXE啓動時需要的文件
[root@m01 ~]# yum -y install syslinux    ##安裝引導程序(提pxelinux.0文件)
[root@m01 ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/   ##複製引導文件到TFTP的根目錄
[root@m01 ~]# cp -a /var/www/html/CentOS-6.8/isolinux/* /var/lib/tftpboot/
[root@m01 ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg   #創建系統的.cfg啓動菜單文件夾,並將鏡像的.cfg啓動菜單拷貝              
[root@m01 ~]# cp /var/www/html/CentOS-6.8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

個人定製系統:

創建個人定製系統
[root@m01 ~]# tar xfP ks_config20170319.tar.gz
###http://pan.baidu.com/s/1slwG665#####下載地址
[root@m01 html]# ls ks_config/
CentOS-6.8-ks.cfg  CentOS-Base.repo  epel.repo  hosts  optimization.sh  sshd_config  sysctl.conf
##修改系統啓動引導菜單
[root@m01 html]# cat>/var/lib/tftpboot/pxelinux.cfg/default<<EOF
> default ks
> prompt 0
> label ks_config/
>   kernel vmlinuz
>   append initrd=initrd.img ks=http://172.16.1.5/ks_config/CentOS-6.8-ks.cfg ksdevice=eth1
> EOF

配置ks.cfg文件:

  wKioL1jYuc2w10vFAAbSgvYcXcw422.png


wKioL1jYug-DesTRAAgcViiqwkE496.png

[root@m01 ks_config]# vim CentOS-6.8-ks.cfg 
# Kickstart Configurator for CentOS 6.7 by yao zhang
install  ##明確指定系統次次進行的是全新安裝系統;
url --url="http://172.16.1.61/CentOS-6.8/" #指定通過HTTP從網絡獲取安裝樹;
text #以文本方式進行kickstart安裝
lang en_US.UTF-8
keyboard us ## 設置鍵盤類型;
zerombr ## 清除mbr信息,會同時清空系統用原有分區表
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"    
##設定boot loader安裝選項 #-append=指定內核參數 #--driveorder=設定設備BIOS中的開機設備啓動順序#--location=設定引導記錄的位置#
network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6 #配置網絡信息
timezone --utc Asia/Shanghai #  設置系統的時區;
authconfig --enableshadow --passalgo=sha512 #設置系統的認證方式;默認爲加密但不隱藏(shadow);# —enableshadow使用隱藏密碼;
rootpw  --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024 
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled   #關閉seLinux
firewall --disabled  #關閉防火牆
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post
wget -O /tmp/optimization.sh http://172.16.1.61/ks_config/optimization.sh &>/dev/null
/bin/sh /tmp/optimization.sh
%end
注意:如果自己製作ks.cfg  root的密碼生成
grub-crypt                            #密方式爲sha512生成的密碼
Password: rhce
Retype password: rhce
$6$QHOksakPohOoVUL9$CNCHfAMYDZZZzZixAGGKCWdPkK8qVvpRk9DkaDOJtrRXlJkzk5GHMZ9zqCTdr8Qiozl9qHOVT5XnbGaZKt06d0




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