CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解
生活随笔
收集整理的這篇文章主要介紹了
CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
? ?如果要給很多臺客戶端主機安裝操作系統,要是每一臺都拿張安裝光盤一臺一臺主機的去裝系統那就太浪費時間和精力了。在生產環境中也不實際,要實現為多臺主機自動安裝操作系統,那我們怎么實現自動化安裝呢,這就要來講講PXE了,PXE就是為這種給多臺主機自動化安裝操作系統而生的,那接下來我們就來基于DHCP完成自動化為多臺主機安裝操作系統。
正文
? ?要實現自動安裝之前先確保幾個包已經安裝好了:
? ?1、DHCP:動態主機配置協議、他是使用UDP協議工作的
? ?2、tfpt-server:這個是服務器端提供需要的安裝的包
? ?3、xinetd:這個是喚醒tftp這個服務的服務
? ?4、syslinux:這個程序包是提供pxelinux.0
? ?5、準備安裝樹、就是要安裝的各種rpm包、centos6.5安裝光盤
基本原理及工作流程:
? ?首先,在客戶端主機的網卡要支持網絡引導,當開機時網卡就會激活當中的程序,自行通過網絡向DHCP請求IP地址,并配置在自己的網卡上。
? ?其次,DHCP服務器回應給我們的主機,分配了IP地址,掩碼,網管等網絡相關參數,再讓DHCP服務器告訴我們的客戶端主機tftp服務器在什么位置。
? ?接著,客戶端主機就去請求tftp服務器,當然,這里的DHCP服務器和tftp服務器可以是同一臺,也可以不是同一臺,看情況而定。
? ?而后,tftp服務器就會給客戶端主機提供一個pxe的文件、這個文件就是pxelinux.0,他相當于我們的bootloader、而這個文件是由syslinux這個程序包提供的。
? ?再則,客戶端主機利用tftp服務器提供的pxelinux.0這個文件,再次嘗試到tftp服務器上獲取內核,因為要啟動安裝就要啟用引導內核。
? ?之后,當引導內核啟動后,客戶端主機通過改名后的default(由pxelinux.0改名而來)文件成功的引導Linux安裝內核后,通過httpd服務獲取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
? ?最后,將ks.cfg文件下載回來后,通過該文件找到ks.cfg文件的配置請求下載安裝過程所需要的軟件包,這樣就可以實現生動化安裝了。
自動化安裝過程實現:
# vim media.repo
[base1] name=media baseurl=file:///mnt enabled=1 gpgcheck=0 cost=100
# yum clean all
? ?安裝好dhcp之后、就去配置dhcp服務里的一些參數了、能讓dhcp服務告訴客戶端主機tftp服務器在什么位置,用net-server IP設定、還要設定文件名為pxelinux.0、這些設定可以放在全局、也可以放在某個子網中,復制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件替換原配置文件/etc/dhcp/dhcpd.conf、然后編輯/etc/dhcp/dhcpd.conf
? ?# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
? ?# vim /etc/dhcp/dhcpd.conf
將subnet 10.152.187.0 netmask 255.255.255.0 {
}
段以后不是以#開頭的內容注釋掉
:,.$s/^[^#]/#&/g?
:set nohlsearch ?#去掉編輯器顏色
subnet 192.168.8.0 netmask 255.255.255.0 { # 定義網段、掩碼range 192.168.8.210 192.168.8.215; # 地址池option routers 192.168.8.254; # 網關next-server 192.168.8.42; # tftp服務器filename "pxelinux.0"; }
配置完成后,啟動DHCP服務,并將它設為開機自啟動、也重啟一下dhcp服務
# service dhcpd restart
# chkconfig dhcpd on
# chkconfig --list dhcpd
dhcpd ? ? ? ? ?0:off1:off2:on3:on4:on5:on6:off
? ?# yum -y install xinetd
看一下安裝完后生成的文件、有幾個我們需要關注一下的:
然后啟動這兩個服務:
? ?# chkconfig tftp on
? ?# service xinetd restart
在這里我們應該掛載我們的安裝光盤、我這里的安裝光盤已經掛載好了:
# mount /dev/cdrom /mnt
還要復制一個叫pxelinux.0這個文件、這個文件是由syslinux提供的、要安裝這個程序包才會有這個文件,那我們就裝吧!
# yum -y install syslinux
安裝好了之后就復制這個文件吧:
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
在這里pxelinux.0取代了isolinux、他工作時要依賴的配置文件叫isolinux.cfg,雖然pxelinux.0取代了isolinux、但是依然需要一個配置文件、這樣我們就復制isolinux.cfg到/var/lib/tftpboot/pxelinux.cfg/目錄下、這里pxelinux.cfg目錄要我們事先創建好、同時復制過來的配置文件要改名為default:
# cd /var/lib/tftpboot/ # mkdir pxelinux.cfg # cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
? ?# mkdir /var/www/html/centos6.5
? ?# mount --bind /mnt/ /var/www/html/centos6.5/
啟動httpd服務,并檢查80端口是否正常啟用:
# service httpd start
# ss -tnl
這樣子文件共享服務就設定OK了,可以用:http://本機服務器IP地址/centos6.5
這樣就可以訪問得到了,安裝樹安裝完成
接下來我們需要使用system-config-kickstart來定制我們的kickstart.cfg文件,建議也使用/root/anaconda-ks.cfg作為模板來進行
# cp anaconda-ks.cfg ks.cfg
安裝kickstart工具
# yum install -y system-config-kickstart
啟動配置工具進行配置
# system-config-kickstart &
驗證文件是否OK
# ksvalidator ks.cfg
提供ks.cfg文件供參考(這個安裝模板是基本服務軟件包安裝)
# cat ks.cfg
# Kickstart file automatically generated by anaconda.#version=DEVEL install url --url=http://192.168.8.42/centos6.5 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 rootpw --iscrypted $6$Zo9OJ.qLqnykyR3A$oMfNInpeoBafrlems1hl/yb4Qast3q4AXTloF7ZdqbszFmYlG9cLYgobocFBsc11wGGy/nleM8liSRU.kqvsy0 reboot firewall --disabled authconfig --enableshadow --passalgo=sha512 selinux --disabled timezone --utc Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all zerombr textpart /boot --fstype=ext4 --size=300 part pv.008002 --grow --size=61440volgroup vg_node4 --pesize=8192 pv.008002 logvol /data --fstype=ext4 --name=data --vgname=vg_node4 --size=20000 logvol / --fstype=ext4 --name=root --vgname=vg_node4 --size=20000 logvol swap --name=swap --vgname=vg_node4 --size=4000 logvol /usr/local --fstype=ext4 --name=usr --vgname=vg_node4 --size=10000 logvol /web --fstype=ext4 --name=web --vgname=vg_node4 --size=20000repo --name="CentOS" --baseurl=http://192.168.8.42/centos6.5 --cost=100%packages @base @console-internet @core @debugging @directory-client @hardware-monitoring @java-platform @large-systems @network-file-system-client @performance @perl-runtime @server-platform @server-policy @workstation-policy pax oddjob sgpio device-mapper-persistent-data samba-winbind certmonger pam_krb5 krb5-workstation perl-DBD-SQLite %end
而后我們就開始復制Kickstart文件了,這個文件在/root/目錄下,叫anaconda-ks.cfg、我們把他復制到/var/www/html/下,改名為ks.cfg
# cp /root/ks.cfg /var/www/html/ks.cfg
由于這個文件只有管理員可以訪問、復制過來之后要給個可讀的權限他:
# chmod +r /var/www/html/ks.cfg
再編輯一個這個ks.cfg里面的配置跟我們設定好的一致、要不然找不到文件路徑:
# vim /var/www/html/ks.cfg
怎么讓啟動時加載kickstart.cfg文件呢,那就要在/var/lib/tftpboot/pxelinux.cfg/default文件的label為linux下的append后面補上 ks=http://192.168.8.42/ks.cfg
? ?編輯/var/lib/tftpboot/pxelinux.cfg/default
? ?# vim /var/lib/tftpboot/pxelinux.cfg/default
? ?改好后:wq!強行寫入、退出即可
到這里我們已經配置好了我們的自動化安裝環境接下來創建一個虛擬機來測試一下,看一下我們的自動化安裝界面是否可以啟動
? ?1、配置DHCP服務器
? ? ? ? # yum -y install dhcp
? ? ? ? # vim /etc/dhcp/dhcpd.conf
? ? ? ? 自定義subnet、同時配置tftp服務的信息:
? ? ? ? subnet {
? ? ? ? ? ? ...
? ? ? ? ? ? next-server TFTP-SERVER-IP;
? ? ? ? ? ? filename "pxelinux.0";
? ? ? ? }
? ? ? ? # service dhcpd restart
? ? 2、配置tftp-server
? ? ? ? # yum -y install xinetd tftp-server tftp
? ? ? ? # chkconfig xinetd on
? ? ? ? # chkconfig tftp on
? ? ? ? # service xinetd start
? ? ? ? # ss -unl | grep ":69"
? ? 3、準備安裝樹、也就是我們的安裝包
? ? ? ? # mkdir /var/www/html/centos6.5
? ? ? ? # mount --bind /media/cdrom /var/www/html/centos6.5
? ? ? ? # service httpd start
? ? 4、復制文件到tftpboot下的文件
? ? ? ? # yum -y install syslinux
? ? ? ? # cp /mnt/images/pxeboot/{vmlinuz,initrd.img} ?/var/lib/tftpboot/
? ? ? ? # cp /mnt/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/isolinux/isolinux.cfg ?/var/lib/tftpboot/pxelinux.cfg/default
? ? 5、提供kickstart文件
? ? ? ?直接從/root/anaconda-ks.cfg復制到/var/www/html目錄下,注意:url及repo后的路徑要修改為可用安裝樹的路徑; ? ? ? ??
? ? 6、配置引導程序能自動加載此kickstart文件
? ? ? ? 編輯/var/lib/tftpboot/pxelinux.cfg/default
? ? ? ? 在label為linux項的append一行后附加:
? ? ? ? ? ? ks=http://HTTP_SERVER_IP/ks.cfg
? ? 最后,祝你測試成功!
? ?如果要給很多臺客戶端主機安裝操作系統,要是每一臺都拿張安裝光盤一臺一臺主機的去裝系統那就太浪費時間和精力了。在生產環境中也不實際,要實現為多臺主機自動安裝操作系統,那我們怎么實現自動化安裝呢,這就要來講講PXE了,PXE就是為這種給多臺主機自動化安裝操作系統而生的,那接下來我們就來基于DHCP完成自動化為多臺主機安裝操作系統。
正文
? ?要實現自動安裝之前先確保幾個包已經安裝好了:
? ?1、DHCP:動態主機配置協議、他是使用UDP協議工作的
? ?2、tfpt-server:這個是服務器端提供需要的安裝的包
? ?3、xinetd:這個是喚醒tftp這個服務的服務
? ?4、syslinux:這個程序包是提供pxelinux.0
? ?5、準備安裝樹、就是要安裝的各種rpm包、centos6.5安裝光盤
基本原理及工作流程:
? ?首先,在客戶端主機的網卡要支持網絡引導,當開機時網卡就會激活當中的程序,自行通過網絡向DHCP請求IP地址,并配置在自己的網卡上。
? ?其次,DHCP服務器回應給我們的主機,分配了IP地址,掩碼,網管等網絡相關參數,再讓DHCP服務器告訴我們的客戶端主機tftp服務器在什么位置。
? ?接著,客戶端主機就去請求tftp服務器,當然,這里的DHCP服務器和tftp服務器可以是同一臺,也可以不是同一臺,看情況而定。
? ?而后,tftp服務器就會給客戶端主機提供一個pxe的文件、這個文件就是pxelinux.0,他相當于我們的bootloader、而這個文件是由syslinux這個程序包提供的。
? ?再則,客戶端主機利用tftp服務器提供的pxelinux.0這個文件,再次嘗試到tftp服務器上獲取內核,因為要啟動安裝就要啟用引導內核。
? ?之后,當引導內核啟動后,客戶端主機通過改名后的default(由pxelinux.0改名而來)文件成功的引導Linux安裝內核后,通過httpd服務獲取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
? ?最后,將ks.cfg文件下載回來后,通過該文件找到ks.cfg文件的配置請求下載安裝過程所需要的軟件包,這樣就可以實現生動化安裝了。
自動化安裝過程實現:
1、將光盤做成yum源:
# cd /etc/yum.repos.d/# vim media.repo
[base1] name=media baseurl=file:///mnt enabled=1 gpgcheck=0 cost=100
# yum clean all
2、安裝并配置DHCP和httpd服務
? ?# yum -y install dhcp httpd? ?安裝好dhcp之后、就去配置dhcp服務里的一些參數了、能讓dhcp服務告訴客戶端主機tftp服務器在什么位置,用net-server IP設定、還要設定文件名為pxelinux.0、這些設定可以放在全局、也可以放在某個子網中,復制/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample文件替換原配置文件/etc/dhcp/dhcpd.conf、然后編輯/etc/dhcp/dhcpd.conf
? ?# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
? ?# vim /etc/dhcp/dhcpd.conf
將subnet 10.152.187.0 netmask 255.255.255.0 {
}
段以后不是以#開頭的內容注釋掉
:,.$s/^[^#]/#&/g?
:set nohlsearch ?#去掉編輯器顏色
subnet 192.168.8.0 netmask 255.255.255.0 { # 定義網段、掩碼range 192.168.8.210 192.168.8.215; # 地址池option routers 192.168.8.254; # 網關next-server 192.168.8.42; # tftp服務器filename "pxelinux.0"; }
配置完成后,啟動DHCP服務,并將它設為開機自啟動、也重啟一下dhcp服務
# service dhcpd restart
# chkconfig dhcpd on
# chkconfig --list dhcpd
dhcpd ? ? ? ? ?0:off1:off2:on3:on4:on5:on6:off
3、安裝tftp服務
由于tftp服務由xinetd服務管理并由xinetd來喚醒的、所以也要安裝xinetd服務、tftp-server是服務器端要安裝的、tftp是客戶端要安裝的。
? ?# yum -y install tftp-server? ?# yum -y install xinetd
看一下安裝完后生成的文件、有幾個我們需要關注一下的:
然后啟動這兩個服務:
? ?# chkconfig tftp on
? ?# service xinetd restart
在這里我們應該掛載我們的安裝光盤、我這里的安裝光盤已經掛載好了:
# mount /dev/cdrom /mnt
4、準備自動安裝系統需要的啟動內核及其他文件
現在我們從剛掛載的光盤中開始復制內核文件以及init等一些文件到/tftp/lib/tftpboot目錄下:
# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ # cp /mnt/isolinux/boot.msg /var/lib/tftpboot/ # cp /mnt/isolinux/splash.jpg /var/lib/tftpboot/ # cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/還要復制一個叫pxelinux.0這個文件、這個文件是由syslinux提供的、要安裝這個程序包才會有這個文件,那我們就裝吧!
# yum -y install syslinux
安裝好了之后就復制這個文件吧:
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
在這里pxelinux.0取代了isolinux、他工作時要依賴的配置文件叫isolinux.cfg,雖然pxelinux.0取代了isolinux、但是依然需要一個配置文件、這樣我們就復制isolinux.cfg到/var/lib/tftpboot/pxelinux.cfg/目錄下、這里pxelinux.cfg目錄要我們事先創建好、同時復制過來的配置文件要改名為default:
# cd /var/lib/tftpboot/ # mkdir pxelinux.cfg # cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
5、配置自動化安裝kickstart文件
此時還需要系統能夠自動化安裝,我們還沒有ks自動應答文件,也沒有安裝樹、在安裝時必須提供所依賴的各種rpm包,我們知道HTTP可以向外提供安裝樹、那就用到我們的httpd了、我這里已經安裝好了httpd服務了,httpd的服務路徑在/var/www/html下、這時我們可以綁定我們之前掛載好的光盤到這個目錄,這樣就有安裝樹了,當然在html下創建個目錄會好點,這里我們創建成centos6.5:? ?# mkdir /var/www/html/centos6.5
? ?# mount --bind /mnt/ /var/www/html/centos6.5/
啟動httpd服務,并檢查80端口是否正常啟用:
# service httpd start
# ss -tnl
這樣子文件共享服務就設定OK了,可以用:http://本機服務器IP地址/centos6.5
這樣就可以訪問得到了,安裝樹安裝完成
接下來我們需要使用system-config-kickstart來定制我們的kickstart.cfg文件,建議也使用/root/anaconda-ks.cfg作為模板來進行
# cp anaconda-ks.cfg ks.cfg
安裝kickstart工具
# yum install -y system-config-kickstart
啟動配置工具進行配置
# system-config-kickstart &
驗證文件是否OK
# ksvalidator ks.cfg
提供ks.cfg文件供參考(這個安裝模板是基本服務軟件包安裝)
# cat ks.cfg
# Kickstart file automatically generated by anaconda.#version=DEVEL install url --url=http://192.168.8.42/centos6.5 lang en_US.UTF-8 keyboard us network --onboot yes --device eth0 --bootproto dhcp --noipv6 rootpw --iscrypted $6$Zo9OJ.qLqnykyR3A$oMfNInpeoBafrlems1hl/yb4Qast3q4AXTloF7ZdqbszFmYlG9cLYgobocFBsc11wGGy/nleM8liSRU.kqvsy0 reboot firewall --disabled authconfig --enableshadow --passalgo=sha512 selinux --disabled timezone --utc Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all zerombr textpart /boot --fstype=ext4 --size=300 part pv.008002 --grow --size=61440volgroup vg_node4 --pesize=8192 pv.008002 logvol /data --fstype=ext4 --name=data --vgname=vg_node4 --size=20000 logvol / --fstype=ext4 --name=root --vgname=vg_node4 --size=20000 logvol swap --name=swap --vgname=vg_node4 --size=4000 logvol /usr/local --fstype=ext4 --name=usr --vgname=vg_node4 --size=10000 logvol /web --fstype=ext4 --name=web --vgname=vg_node4 --size=20000repo --name="CentOS" --baseurl=http://192.168.8.42/centos6.5 --cost=100%packages @base @console-internet @core @debugging @directory-client @hardware-monitoring @java-platform @large-systems @network-file-system-client @performance @perl-runtime @server-platform @server-policy @workstation-policy pax oddjob sgpio device-mapper-persistent-data samba-winbind certmonger pam_krb5 krb5-workstation perl-DBD-SQLite %end
而后我們就開始復制Kickstart文件了,這個文件在/root/目錄下,叫anaconda-ks.cfg、我們把他復制到/var/www/html/下,改名為ks.cfg
# cp /root/ks.cfg /var/www/html/ks.cfg
由于這個文件只有管理員可以訪問、復制過來之后要給個可讀的權限他:
# chmod +r /var/www/html/ks.cfg
再編輯一個這個ks.cfg里面的配置跟我們設定好的一致、要不然找不到文件路徑:
# vim /var/www/html/ks.cfg
怎么讓啟動時加載kickstart.cfg文件呢,那就要在/var/lib/tftpboot/pxelinux.cfg/default文件的label為linux下的append后面補上 ks=http://192.168.8.42/ks.cfg
? ?編輯/var/lib/tftpboot/pxelinux.cfg/default
? ?# vim /var/lib/tftpboot/pxelinux.cfg/default
? ?改好后:wq!強行寫入、退出即可
到這里我們已經配置好了我們的自動化安裝環境接下來創建一個虛擬機來測試一下,看一下我們的自動化安裝界面是否可以啟動
步驟總結:
? ?1、配置DHCP服務器
? ? ? ? # yum -y install dhcp
? ? ? ? # vim /etc/dhcp/dhcpd.conf
? ? ? ? 自定義subnet、同時配置tftp服務的信息:
? ? ? ? subnet {
? ? ? ? ? ? ...
? ? ? ? ? ? next-server TFTP-SERVER-IP;
? ? ? ? ? ? filename "pxelinux.0";
? ? ? ? }
? ? ? ? # service dhcpd restart
? ? 2、配置tftp-server
? ? ? ? # yum -y install xinetd tftp-server tftp
? ? ? ? # chkconfig xinetd on
? ? ? ? # chkconfig tftp on
? ? ? ? # service xinetd start
? ? ? ? # ss -unl | grep ":69"
? ? 3、準備安裝樹、也就是我們的安裝包
? ? ? ? # mkdir /var/www/html/centos6.5
? ? ? ? # mount --bind /media/cdrom /var/www/html/centos6.5
? ? ? ? # service httpd start
? ? 4、復制文件到tftpboot下的文件
? ? ? ? # yum -y install syslinux
? ? ? ? # cp /mnt/images/pxeboot/{vmlinuz,initrd.img} ?/var/lib/tftpboot/
? ? ? ? # cp /mnt/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/isolinux/isolinux.cfg ?/var/lib/tftpboot/pxelinux.cfg/default
? ? 5、提供kickstart文件
? ? ? ?直接從/root/anaconda-ks.cfg復制到/var/www/html目錄下,注意:url及repo后的路徑要修改為可用安裝樹的路徑; ? ? ? ??
? ? 6、配置引導程序能自動加載此kickstart文件
? ? ? ? 編輯/var/lib/tftpboot/pxelinux.cfg/default
? ? ? ? 在label為linux項的append一行后附加:
? ? ? ? ? ? ks=http://HTTP_SERVER_IP/ks.cfg
? ? 最后,祝你測試成功!
轉載于:https://www.cnblogs.com/reblue520/p/6239801.html
總結
以上是生活随笔為你收集整理的CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS中常用的正则表达式
- 下一篇: JavaScript instanceo