PXE引導結合kickstart自動配置系統實現自動化部署系統

       部署一臺服務器需要很長時間,安裝人工來安裝的話,需要安裝源,需要配置很多配置,這樣的話是非常耗費時間的並且容易出錯,因此需要比較智能化的解決方案:而這樣方式已經非常成熟了,本文主要介紹PXE(引導)+kickstart(自動配置系統)+DHCP(客戶端獲取IP)+TFTP(傳輸Linux啓動所需要的文件)+HTTP(提供安裝源)這樣方案來完成系統的部署。

一:相關概念

二:實例

*****************************************************************************************


一:相關概念和安裝過程

   PXE是一種引導方式 preboot excution environment client網卡要支持網絡引導

   DHCP是一種動態地址獲取協議

   TFTP適合於傳輸小文件,簡單文件傳輸協議,高效傳輸小文件

   HTTP文件傳輸,本例中用於完成提供安裝源

   xinted超級守護進程


安裝過程,主要有以下幾步;

1、pxe啓動,會去尋找dhcp服務器獲取ip地址pxelinux.0文件

2、client通過tftp連接到服務器,下載pxelinux.0文件。

3、client下載成功pxelinux.0文件後,系統還會下載控制pxelinux.0的配置文件,叫default。然後client就會按照default的配置來執行pxelinux.0文件。

4、現在client端會在獲取一次IP地址。並且根據DHCP服務器配置文件找到kickstart配置

文件並下載。

5、pxelinux.0文件定義的想服務器請求linux內核,根文件系統之類的參數。運行這個文件,client就會向服務器請求相關的文件並下載。

6、文件下載成功後,client就會啓動linux內核,這就進入了我們安裝時候看見的第一個圖形界面,這個界面和自己安裝看見的第一個畫面一樣,回車就是圖形安裝,輸入text就是文本安裝那裏。如果使用了kickstart,這個界面消失很快,可能看不見。到這裏PXE啓動就完成了。

7、當按照default要求運行pxelinux.0文件,系統讀取內核,掛在根文件系統以後的任務就都交給了kickstart了。包括安裝介質來源、語言、時區、分區、安裝哪些包等,都是在kickstart文件中定義。只要進入這一步,kickstart配置文件正確,我們的無人值守安裝已經成功了




二:實例

配置步驟: 前提:

mkdir /mnt/cdrom

mount -r /dev/cdrom /mnt/cdrom


1、配置DHCP服務器

yum -y install dhcp

vim /etc/dhcp/dhcpd.conf

 service dhcpd restart

tail -f /var/log/boot.log

subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.20 192.168.2.30;
  default-lease-time 6000;
  max-lease-time 72000;
  next-server 192.168.2.21;
  filename "/pxelinux.0";
}


2、配置tftp-server

yum -y install xinetd tftp-server tftp

chkconfig xinetd on                        

chkconfig tftp on # service xinetd start                                              

ss -unl | grep ":69"      

[root@station133 ~]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                         *:69                       *:*
UNCONN     0      0                        :::695                     :::*



3、準備安裝樹

mkdir /var/www/html/centos6                                                

mount --bind /mnt/cdrom /var/www/html/centos6

service httpd start  


[root@station133 ~]# ll /var/www/html/
total 12
-rw------- 1 root root 2851 Mar  9 14:18 anaconda-ks.cfg
dr-xr-xr-x 7 root root 4096 Nov 29 20:09 centos6
-rw-r--r-- 1 root root 2822 Mar  9 14:19 ks.cfg


 4、準備tftpboot下的文件      

 yum -y install syslinux

 cp /mnt/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/

 cp /mnt/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}  /var/lib/tftpboot/

 cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

 mkdir /var/lib/tftpboot/pxelinux.cfg

 cp /mnt/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default


[root@station133 ~]# ll /var/lib/tftpboot/
total 348
-r--r--r-- 1 root root     84 Mar  9 14:16 boot.msg
dr-xr-xr-x 2 root root   4096 Mar  9 14:15 pxeboot
-rw-r--r-- 1 root root  26828 Mar  9 14:17 pxelinux.0
drwxr-xr-x 2 root root   4096 Mar  9 14:21 pxelinux.cfg
-r--r--r-- 1 root root 151230 Mar  9 14:16 splash.jpg
-r--r--r-- 1 root root 162860 Mar  9 14:16 vesamenu.c32




5、提供kickstart文件

注意:url及repo後的路徑要修改爲可用安裝樹的路徑; 編輯好kickstart文件後保存至/var/www/html目錄下;這裏假設爲ks.cfg


[root@station133 ~]# ll /var/www/html/
total 12
-rw------- 1 root root 2851 Mar  9 14:18 anaconda-ks.cfg
dr-xr-xr-x 7 root root 4096 Nov 29 20:09 centos6
-rw-r--r-- 1 root root 2822 Mar  9 14:19 ks.cfg

6、配置引導程序能自動加載此kickstart文件

編輯/var/lib/tftpboot/pxelinux.cfg/default 在label爲linux項的append一行後附加:

ks=http://192.168.2.21/ks.cfg

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.2.21/ks.cfg
label vesa
  menu label Install system with ^basic video driver


[root@station133 ~]# cd /mnt/cdrom/
[root@station133 cdrom]# ls
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
p_w_picpaths           RPM-GPG-KEY-CentOS-6
[root@station133 cdrom]# service httpd start
Starting httpd:                                            [  OK  ]
[root@station133 cdrom]# yum install -y syslinux
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
Setting up Install Process
Package syslinux-4.02-8.el6.x86_64 already installed and latest version
Nothing to do
[root@station133 cdrom]# ls /mnt/cdrom/p_w_picpaths/pxeboot/
initrd.img  TRANS.TBL  vmlinuz
[root@station133 cdrom]# cp /mnt/cdrom/p_w_picpaths/pxeboot/ /var/lib/tftpboot/
cp: omitting directory `/mnt/cdrom/p_w_picpaths/pxeboot/'
[root@station133 cdrom]# cp -r /mnt/cdrom/p_w_picpaths/pxeboot/ /var/lib/tftpboot/
[root@station133 cdrom]# ls /mnt/cdrom/isolinux/
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c32
[root@station133 cdrom]# ls /mnt/cdrom/isolinux/
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c32
[root@station133 cdrom]# cp /mnt/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
[root@station133 cdrom]#
[root@station133 cdrom]#
[root@station133 cdrom]# cp /usr/share/syslinux/pxe
pxechain.com  pxelinux.0
[root@station133 cdrom]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@station133 cdrom]# mkdir /var/lib/tftpboot/pxelinux.0
CentOS_BuildTag                RELEASE-NOTES-en-US.html
.discinfo                      repodata/
EFI/                           RPM-GPG-KEY-CentOS-6
EULA                           RPM-GPG-KEY-CentOS-Debug-6
GPL                            RPM-GPG-KEY-CentOS-Security-6
p_w_picpaths/                        RPM-GPG-KEY-CentOS-Testing-6
isolinux/                      TRANS.TBL
Packages/                      .treeinfo
[root@station133 cdrom]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@station133 cdrom]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/
[root@station133 cdrom]# vi /var/www/html/ks.cfg
[root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/
cp: overwrite `/var/www/html/anaconda-ks.cfg'? ^C
[root@station133 cdrom]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
[root@station133 cdrom]# vi /var/www/html/ks.cfg
[root@station133 cdrom]# vi /var/lib/tftpboot/pxelinux.cfg/default
[root@station133 cdrom]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                        :::695                     :::*
[root@station133 cdrom]# service xinetd on
Usage: /etc/init.d/xinetd {start|stop|status|restart|condrestart|reload}
[root@station133 cdrom]# service tftp on
tftp: unrecognized service
[root@station133 cdrom]# yum install splash.jpg^C
[root@station133 cdrom]# yum -y install xinetd tftp-server tftp
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
Setting up Install Process
Package 2:xinetd-2.3.14-39.el6_4.x86_64 already installed and latest version
Package tftp-server-0.49-7.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package tftp.x86_64 0:0.49-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================
 Package            Arch                 Version                  Repository          Size
===========================================================================================
Installing:
 tftp               x86_64               0.49-7.el6               base                32 k
Transaction Summary
===========================================================================================
Install       1 Package(s)
Total download size: 32 k
Installed size: 45 k
Downloading Packages:
tftp-0.49-7.el6.x86_64.rpm                                          |  32 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : tftp-0.49-7.el6.x86_64                                                  1/1
  Verifying  : tftp-0.49-7.el6.x86_64                                                  1/1
Installed:
  tftp.x86_64 0:0.49-7.el6                                                         
Complete!
[root@station133 cdrom]# service tftp on
tftp: unrecognized service
[root@station133 cdrom]# service tftpd on
tftpd: unrecognized service
[root@station133 cdrom]# service tftpd on^C
[root@station133 cdrom]# service tftp on
tftp: unrecognized service
[root@station133 cdrom]# service xinetd on
Usage: /etc/init.d/xinetd {start|stop|status|restart|condrestart|reload}
[root@station133 cdrom]# service xinetd start
Starting xinetd:
[root@station133 cdrom]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                        :::695                     :::*
[root@station133 cdrom]# service dhcpd start
[root@station133 cdrom]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                        :::695                     :::*
[root@station133 cdrom]# service dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
[root@station133 cdrom]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                        :::695                     :::*
[root@station133 cdrom]# service tftpd start
tftpd: unrecognized service
[root@station133 cdrom]# yum -y install xinetd tftp-server tftp
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
Setting up Install Process
Package 2:xinetd-2.3.14-39.el6_4.x86_64 already installed and latest version
Package tftp-server-0.49-7.el6.x86_64 already installed and latest version
Package tftp-0.49-7.el6.x86_64 already installed and latest version
Nothing to do
[root@station133 cdrom]# chkconfig xinetd on
[root@station133 cdrom]# chkconfig tftp on
[root@station133 cdrom]# service xinetd start
Starting xinetd:
[root@station133 cdrom]# ss -unl |grep ":69"
UNCONN     0      0                         *:695                      *:*
UNCONN     0      0                         *:69                       *:*
UNCONN     0      0                        :::695                     :::*

wKioL1McSHOSmtJqAANf6VtkYjA273.jpg


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