Linux系統基於網絡的自動化安裝
安裝一個操作系統對一個普通人來說是一件非常麻煩的事了。而對於一個專業人士來說,應該是一個非常輕松的事。但是這樣的情況也僅限於有限的幾臺需要安裝。在實際工作的中,我們經常會遇到這樣的情況:有大批量的計算機需要同時安裝Linux,或者想要安裝Linux但是計算機沒有光驅,或者是通過光驅的方式一個個安裝。這樣安裝不僅效率低,也不利於以後的維護。這個時候你就需要利用網絡的強大功能了。它可以幫你基於網絡來完成全自動化的安裝,中間不需要人工去幹預。這就是cobbler服務
cobbler服務是一個快速網絡安裝linux 操作系統的服務。它支持眾多的Linux 發行版本:Red Hat 、Fedora 、CentOS 、Debian 、Ubuntu和SuSE ,也可以支持網絡安裝windows。它同時提供了CLI 和Web的頁面管理形式。
本文所提到的基於網絡的系統自動化安裝方案主要用到了以下的幾個協議和技術:
-- PXE(Preboot Execution Environment / 遠程引導技術)
-- DHCP(Dynamic Host Configuration Protocol / 動態主機配置協議)
-- TFTP(Trivial File Transfer Protocol / 普通文件傳輸協議)
-- HTTP(Hyper Text Transfer Protocal /超文本傳輸協議)
cobbler的工作流程:
1、client 裸機配置了從網絡啟動後,開機後會廣播報文請求DHCP 服務器(cobbler server )為其發送一個分配好的IP地址
2、DHCP 服務器(cobbler server )收到請求後會返回一個responese ,包括其分配的ip 地址
3、client 裸機拿到ip 後再向cobbler server 發送一個安裝OS引導文件的請求
4、cobbler server 告訴裸機OS 引導文件的名字和TFTP server 的ip和port
5、client 裸機通過上面告知的TFTP server 的通信地址,下載引導文件
6、client 裸機執行執行該引導文件,確定加載信息,選擇要安裝的OS,期間會再向cobbler server 請求kickstart 文件和os image
7、cobbler server 再次回應請求的kickstart 和OS iamge文件位置
8、client 裸機加載kickstart 文件
9、client 裸機接收OS image ,安裝該OS image
10、客戶端啟動
下面就來說說配置cobbler的步驟:
一、先安裝cobbler、dhcp服務,並開啟對應服務(在CentOS 7 上安裝)
yum install -y cobbler dhcp(安裝cobbler和dhcp)
systemctl enable cobblerd(設置cobbler服務為開機自啟)
systemctl start cobblerd(打開cobbler服務)
systemctl enable tftp(設置tftp服務為開機自啟)
systemctl start tftp(打開tftp服務)
systemctl enable httpd(設置httpd服務為開機自啟)
systemctl start httpd(打開httpd服務)
二、檢查cobbler的配置文件
cobbler check:這一步會檢查cobbler的配置文件是否完整。第一次執行會出現很多的錯誤報告,我們需要跟著這些錯誤報告來一步步的更改它。
根據cobbler check的提示,我們來一步步的完善它。
1)修改配置文件
vim /etc/cobbler/setting
這裏面我們只需要更改四處就可,
找到這一行:default_password_crypted: "$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/" 這裏的密碼是需要更改的
先利用openssl passwd -1 生成口令,然後把生成的口令來替換掉這一竄隨機數
這一行:next_server: 127.0.0.1 這裏把你本機的ip地址更改上去就可(他是提供tftp裏repo源文件位置的地址)
這一行:manage_dhcp: 0 這裏0改為1 (表示打開DHCP為client分配ip地址)
這一行:server: 1172.0.0.1 這裏改為自己本機的ip(12.168.35.5)地址(表示為client提供cobbler服務的主機地址)
2)更改tftp配置文件
這個根據提示修改/etc/xinetd.d/tftp裏的disabled 為on
vim /etc/xinetd.d/tftp
3)配置DHCP服務模板
vim /etc/cobbler/dhcp.template
這裏就修改兩個地方:subnet 192.168.25.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.25.100 192.168.25.254;
修改完成後重啟cobbler服務,並同步cobbler配置文件
systenctl restart cobbler
cobbler sync
這樣DHCP文件就配置完成,可以打開DHCP服務了
systemctl enable dhcpd(設置dhcp為開機自啟)
systemctl start dhcpd (打開dhcp服務)
4)準備啟動文件和和菜單風格文件
如果主機連接在internet上那麽就好辦了,我們只需要一步就可
cobbler get-loaders (執行這條命令,他會自動連網下載所需的啟動文件與菜單界面)
他會把下載到的文件放置到 /var/lib/cobbler/loaders這個目錄下
5)關閉本機的selinux與防火墻,這是為了能使外部的網絡請求可以不被這些策略拒絕在外而接收不到請求
setenforce 0 (關閉selinux策略)
iptables -F (關閉防火墻)
當然這些方法都是臨時的,如果想長期更改還需要更改他們的配置文件。當然這樣並不安全,所以這裏我們就臨時更改一下
6)像提示裏的rsync、debmirrior與fencing tools這幾個提示可以不用理會,因為這裏我們用不到它。
然後重新啟動cobbler服務:
systemctl reestart cobblerd(重啟服務)
cobbler sync (重新載入配置文件)
三、配置安裝系統所需要的yum源
這需要把光盤裏的文件導入到cobbler的服務目錄裏,為系統的安裝準備好文件
cobbler import --path=/misc/cd --name=centos7_test --arch=x86_64 (導入光盤文件)
cobbler distro list (這時就可查看導入的文件所生成的yum的庫名了)
四、生成kickstart引導文件
到這裏我們就要導入自己制作的安裝的引導文件了,這個引導文件需要我們根據安裝所需要的包來自己手動制作,同時也可根據系統生成的文件來加以修改也可以。下面就是一個根據系統的配置文件修改的ks引導文件ks.cfg
vim /anaconda-ks.cfg
到此kickstart 文件編輯完成
我們要把這個文件導入進cobbler的服務路徑裏
cp anaconda-ks.cfg /var/lib/cobbler/kickstarts/ks7.cfg (復制這個制作好的文件到cobbler的目錄下存放)
chmod +r ks7.cfg (要記得更改這個文件的權限,不然其他人是無權查看這個引導文件的)
cobbler profile add --name=centos7_hello --distro=centos7_test --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg(導入ks.cfg文件為centos7_hello 這個菜單名下的引導文件)
systemctl restart cobblerd (再次重啟這個服務)
cobbler sync(同步配置文件)
服務端的配置準備完成。
五、配置客戶端。將客戶端連入這個網內,啟動電源,選擇菜單
安裝中:
安裝完成後,就可以以root的身份來登錄進系統,它的密碼就是當初設定在ks.cfg文件裏的密碼。登錄後就可以進行各種操作了
Linux系統基於網絡的自動化安裝