利用DHCP,http,tftp,pxe實現批量自動化部署系統

1、實現原理
所須要的服務簡單介紹
1.DHCP:動態主機配置協議,用於內部網絡自動分配IP地址
2.tfpt:簡單的網絡共享服務,相似於ftp
3.pxe:支持遠程主機經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統
4.http:超文本傳輸協議,經過網絡共享文本(這裏也能夠使用ftp服務)
實現過程
1.客戶端(沒有裝系統的計算機)經過在局域網內尋找DHCP服務器
2.DHCP服務器迴應,發送IP地址給該客戶端而且告訴該客戶端下一步尋找哪個服務器,也就是TFTP
3.客戶端向TFTP要BootLoader
4.TFTP服務器將pxelinux.0相關文件交給客戶端
5.客戶端向TFTP服務器要內核文件和initrd.img
6.TFTP將這兩個文件路徑告訴客戶端
7.客戶端經過pxe提供的路徑向http服務要ks.cfg(自應答文件)
8.客戶端根據ks.cfg文件中指定的安裝路徑尋找安裝所須要的文件
2、實現所須要的步驟
1.將虛擬機自己自帶的dhcp關閉,而且將充當DHCP服務器主機IP改成靜態地址,而且將防火牆和selinux關閉html

[root@centos7 tftpboot]# nmcli connection modify ens34 ipv4.method manual ipv4.addresses 192.168.0.254/24  #配置網卡信息
[root@centos7 tftpboot]# nmcli connection down ens34  #禁用
[root@centos7 tftpboot]# nmcli connection up ens34  #啓用
[root@centos7 tftpboot]# sed -ri 's/(SELINUX=).*/\1disabled/' /etc/selinux/config   #將selinux設置成關閉
[root@centos7 tftpboot]# systemctl stop firewalld.service    #禁用防火牆
[root@centos7 tftpboot]# systemctl disable firewalld.service

2.將虛擬添加3個光驅設備,分別掛載5,6,7三個系統的鏡像,爲了安裝後期所須要的http服務,這裏須要臨時掛載CentOS 7的光盤鏡像linux

[root@centos7 ~]# mount /dev/cdrom /mnt/   #臨時掛載
[root@centos7 yum.repos.d]# cat /etc/yum.repos.d/base.repo 
[base]
name=base
baseurl=file:///mnt
gpgcheck=0

3.安裝自動安裝系統所須要的服務vim

[root@centos7 yum.repos.d]# yum install -y httpd dhcp tftp-service syslinux     #安裝服務

4.在/var/www/html目錄下建立各個版本的掛載路徑和自應答文件目錄,而且將光盤所對應的目錄寫入/etc.fstab文件中,使其永久生效centos

[root@centos7 yum.repos.d]# mkdir /var/www/html/centos/{5,6,7,ksdir} #建立對用的文件,對應關係須要根據實際狀況
[root@centos7 6]# vim /etc/fstab  
/dev/sr0                                /var/www/html/centos/5    iso9660 defaults        0 0
/dev/sr1                                /var/www/html/centos/6    iso9660 defaults        0 0
/dev/sr2                                /var/www/html/centos/7    iso9660 defaults        0 0

5.建立自應答文件,該文件也可在系統安裝完成後,會在/root目錄下生成一個anaconda-ks.cfg的文件服務器

[root@centos7 tftpboot]# yum install -y system-config-kickstart.noarch   #安裝生成自應答文件的工具
[root@centos7 tftpboot]system-config-kickstart
[root@centos7 ~]# ksvalidator anaconda-ks.cfg #檢查該文件語法6 7 通用

注意,在該界面中,若在centos5上建立,倉庫的 " [ ] "內須要填寫base,centos7中則須要填寫development,不然,在Package Selection 界面不會顯示選擇在安裝系統是所須要的軟件包 centos6則隨意填寫網絡

利用DHCP,http,tftp,pxe實現批量自動化部署系統

利用DHCP,http,tftp,pxe實現批量自動化部署系統

利用DHCP,http,tftp,pxe實現批量自動化部署系統

利用DHCP,http,tftp,pxe實現批量自動化部署系統

利用DHCP,http,tftp,pxe實現批量自動化部署系統

軟件包根據須要的進行選擇,而後保存
6.將三個系統的自應答文件存放到/var/www/html/centos/ksdir/目錄下
7.配置DHCP服務器app

[root@centos7 tftpboot]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
#配置文件
option domain-name "lin.com";     #域名
option domain-name-servers 192.168.0.254;  #
default-lease-time 600;   #租期
max-lease-time 7200;    #用戶可調最大
log-facility local7;  #日誌文件
subnet 192.168.0.0 netmask 255.255.255.0 {   #自動過去的網段
  range 192.168.0.2 192.168.0.253;    #分發的地址範圍
  option routers 192.168.0.254;   #網關 
  next-server 192.168.0.254;   #tftp服務ip
  filename "pxelinux.0";     #找的文件名
}

8.將系統的內核文件和initrd.img文件複製到各個版本的目錄下dom

[root@centos7 tftpboot]# mkdir /var/lib/tftpboot/centos{5,6,7}
[root@centos7 tftpboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@centos7 tftpboot]# cp /var/www/html/centos/5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos5/
[root@centos7 tftpboot]# cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6/
[root@centos7 tftpboot]# cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/

9.拷貝pxe須要的配置文件ide

[root@centos7 tftpboot]# cp /usr/share/syslinux/{menu.c32,pxelinux.0} .  #當前目錄/var/lib/tftpboot/
[root@centos7 tftpboot]# cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

10.配置/var/lib/tftpboot/pxelinux.cfg/default文件,做用是讓用戶選擇安裝的系統版本工具

[root@lin pxelinux.cfg]# cat default
default menu.c32
timeout 600  #不選擇默認多少秒進入默認選項
display boot.msg
menu title AutoInstall CentOS 5,6,7
label centos 5 mini
  menu label ^Install CentOS 5
  kernel centos5/vmlinuz
  append initrd=centos5/initrd.img ks=http://192.168.0.254/centos/ksdir/ks5.cfg   #centos5的ks.cfg文件
label centos 6 mini
  menu label I^nstall CentOS 6
  kernel centos6/vmlinuz  #這裏的路徑是填的以/var/lib/tftpboot爲路徑的相對路徑
  append initrd=centos6/initrd.img ks=http://192.168.0.254/centos/ksdir/ks6.cfg #centos6的ks.cfg文件
label centos 7 mini
  menu label In^stall CentOS 7
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.0.254/centos/ksdir/ks7.cfg #centos7的ks.cfg文件
label local   #若不選在則默認從硬盤啓動
  menu label Boot from ^local drive
  localboot 0xffff
  menu default
menu end

自此實現自動化安裝系統

相關文章
相關標籤/搜索