1 概述
以下的截圖主要是用來說明自動化運維發(fā)展的階段
第一階段:全人肉階段从媚,此時是處于無流程規(guī)范的約束催植,所有的運維工作都是靠人去一步步執(zhí)行斑鸦,這將大大降低工作的效率窖贤,也容易帶來誤操作
第二階段:工具化階段砖顷,制定了規(guī)范制度贰锁,此時是通過編寫腳本等工具來代替運維的大部分重復性工作。但是工具沒有一個統(tǒng)一的管理平臺
第三階段:平臺化階段滤蝠,此時通過完善規(guī)范來提高運維的效率豌熄,降低運維的誤操作,平臺在這個階段完成物咳,通過統(tǒng)一的平臺锣险,對機器進行管理,實現(xiàn)了企業(yè)化的平臺統(tǒng)一管理
第四階段:自驅動階段览闰,通過流程進行驅動芯肤,制度是關鍵,制度已經完善压鉴,系統(tǒng)出了問題崖咨,能夠自己解決。
本文將介紹自動化運維的第一步油吭,即實現(xiàn)自動化安裝系統(tǒng)击蹲。本文將介紹兩個方面的自動化安裝:
1. 半自動化安裝:通過光盤引導系統(tǒng)系統(tǒng),然后手動指定kickstart文件婉宰,安裝包源為系統(tǒng)的光盤或者是網絡(這里包的路徑是在kickstart文件里指定)歌豺,安裝過程由kickstart文件設定。
2. 本地自動化安裝芍阎,通過自己生成一個本地的光盤文件世曾,刻錄在光盤或者U盤里,實現(xiàn)本地自動化安裝谴咸,制作方法是:拷貝一份光盤的所有資料到本地路徑轮听,如/root/fulliso目錄下,把kickstart文件放在該目錄下岭佳,生成新的包依賴關系的文件血巍,然后再通過命令mkisofs生成光盤文件。如果需要U盤啟動珊随,只需要通過dd命令將新生成的iso文件刻錄到U盤里即可實現(xiàn)U盤啟動
接下來述寡,我們將介紹安裝啟動過程,安裝需要的文件的內容叶洞,以及每個自動化安裝方式的實現(xiàn)步驟
2 安裝程序和相關文件介紹
2.1 系統(tǒng)啟動流程如下
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
系統(tǒng)安裝完成后鲫凶,在啟動時,先開機自檢衩辟,讀取硬盤的第一扇區(qū)MBR螟炫,加載bootloader,即第一階段艺晴,還有1.5.和2階段昼钻。根據配置文件掸屡,找到kernel(vmlinuz)和initramfs(臨時根文件系統(tǒng)),由initramfs加載小linux系統(tǒng)然评,然后把控制權交給了rootfs仅财,然后加載/sbin/init,按腳本命令執(zhí)行相關腳本,完成啟動的過程
2.2 系統(tǒng)安裝程序:anaconda
在安裝過程中我們需要借助的anaconda這個安裝程序來實現(xiàn)碗淌,該程序有兩種安裝界面
1.gui:圖形窗口
2 tui:基于圖形庫curses的文本窗口
anaconda的配置方式:
(1) 交互式配置方式
(2) 通過讀取事先給定的配置文件自動完成配置:按特定語法給出的配置選項盏求,改配置文件叫kickstart文件,這個文件可以手動編寫贯莺,也可以通過圖形化工具system-config-kickstart來生成风喇。我們既然要實現(xiàn)自動化的安裝宁改,自然anaconda的配置方式就要選擇該方式缕探,不能是圖形化,否則就實現(xiàn)不了自動化的安裝
默認我們通過光盤來安裝的時候还蹲,裝載根文件系統(tǒng)爹耗,并啟動anaconda,可以對這個配置方式進行選擇谜喊,當光盤啟動到菜單頁面的時候潭兽,默認啟動GUI接口,若是要指定使用TUI接口:向內核傳遞text參數(shù)即可斗遏。
(1)按tab鍵,在后面增加 text
(2)按ESC鍵:boot: linux? text
在全自動化安裝中山卦,我們是直接在ks文件中設置了該方式為text。
anaconda工作過程
.Anaconda安裝系統(tǒng)分成三個階段:
a 安裝前配置階段
安裝過程使用的語言
鍵盤類型
安裝目標存儲設備
Basic Storage:本地磁盤
特殊設備:iSCSI
設定主機名
配置網絡接口
時區(qū)
管理員密碼
設定分區(qū)方式及MBR的安裝位置
創(chuàng)建一個普通用戶
選定要安裝的程序包
b 安裝階段
在目標磁盤創(chuàng)建分區(qū)诵次,執(zhí)行格式化操作等
將選定的程序包安裝至目標位置
安裝bootloader和initramfs
c 圖形模式首次啟動
進行以下的配置
iptables
selinux
core dump
2.3 光盤部分文件介紹
isolinux/boot.cat:這個文件作用是類型MBR(Main Boot Record)账蓉,負責磁盤操作系統(tǒng)(DOS)對磁盤進行讀寫時分區(qū)合法性的判別、分區(qū)引導信息的定位逾一,啟動的stage1.
isolinux/isolinux.bin,負責光盤的stage2,也是二進制文件铸本,作用類似grub的第二階段
isolinuz/vmlinuz:是linux的內核,相當于是一個小的linux系統(tǒng)
isolinuz/initrd.img遵堵,一般被用來臨時的引導硬件到實際內核vmlinuz能夠接管并繼續(xù)引導的狀態(tài)
isolinux/isolinux.cfg:這個是光盤啟動時的菜單文件箱玷,菜單的風格是文件vesamenu.c32.在isolinux.cfg里有調用,該文件里還指定了內核isolinuz/vmlinuz和isolinuz/initrd.img的路徑陌宿,向內核傳遞參數(shù):append initrd=initrd.img锡足,這段參數(shù)可以自己定制,如在后面加text,就會實現(xiàn)字符界面安裝壳坪,這個用于自動化安裝舶得,不適合于手動安裝,鼠標點不了的弥虐。字符界面一般用于自動化安裝扩灯。
在isolinux.cfg文件中指明kickstart文件的位置媚赖,有以下幾個路徑進行調用該文件,寫法如下
DVD?drive:ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard?drive:ks=hd:device:/directory/KICKSTART_FILE
HTTP?server:ks=http://host:port/path/to/KICKSTART_FILE
FTP?server:ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS?server:ks=https://host:port/path/to/KICKSTART_FILE
NFSserver:ks=nfs:host:/path/to/KICKSTART_FILE
2.4 kickstart文件
kickstart文件創(chuàng)建
有兩個方法:
1 直接手動編寫:依據某模板修改
2:.可使用創(chuàng)建工具:system-config-kickstart珠插,依據某模板修改并自動生成新配置anaconda-ks.cfg惧磺,這個軟件是在桌面端的環(huán)境下才能啟用
.檢查ks文件的語法錯誤:ksvalidator
ksvalidator??/PATH/TO/KICKSTART_FILE
kickstart 文件的格式如下
kickstart文件的格式
anaconda-ks.cfg的格式如下分為 命令段,程序包段捻撑,腳本段三段
.命令段:
指明各種安裝前配置磨隘,如鍵盤類型等
命令段中的命令:
.必備命令
authconfig:認證方式配置
authconfig--useshadow--passalgo=sha512
bootloader:bootloader的安裝位置及相關配置
bootloader--location=mbr--driveorder=sda–
append="crashkernel=autorhgbquiet"
keyboard:設定鍵盤類型
lang:語言類型
part:創(chuàng)建分區(qū)
rootpw:指明root的密碼
timezone:時區(qū)
.可選命令
install OR upgrade
text:文本安裝界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安裝完成后為系統(tǒng)創(chuàng)建新用戶
url:指明安裝源
key –skip跳過安裝號碼,適用于rhel版本
.程序包段:
指明要安裝的程序包組或程序包,不安裝的程序包等
程序包段指安裝了哪些包顾患,
@開頭的是包組
不是@的是一般的包
--減號番捂,是指把包組中的某個包去掉
例子如下
%packages
@group_name
package
-package
%end
注意,桌面包組江解,desktop默認是GNOME包組设预,如果桌面端安裝不成功,安裝一下xorg-x11-server-Xorg這個包犁河,桌面端依賴這個包
.腳本段:
腳本段分為安裝前和安裝后腳本段
%pre:安裝前腳本鳖枕,安裝操作系統(tǒng)前,初始化環(huán)境
運行環(huán)境:運行于安裝介質上的微型Linux環(huán)境
%post:安裝后腳本桨螺,系統(tǒng)都安裝完成后才執(zhí)行腳本
格式如下
%post
腳本
在這里有一個地方需要注意宾符,當CentOS7通過命令啟動system-config-kickstart時,選擇包的時候可能出現(xiàn)如下報錯灭翔,看不到包的信息
解決辦法:
配置光盤的yum源魏烫,修改yum 的repo id為development,這個是系統(tǒng)指定的肝箱,一般情況下repo id可以隨便指定哄褒,只要是沒有空格隔開就可以,但在要用system-config-kickstart命令來選擇包是狭园,id一定要配置為development读处。如下截圖
3 自動化安裝
本文將介紹兩種自動化安裝的方式:半自動化和本地自動化
3.1? 半自動化安裝
半自動化安裝,啟動的方式通過光盤進行啟動唱矛,這里有兩種方式:1. 本地光盤直接作為包的來源? 2. 包在其他路徑上罚舱,如http服務器上
3.1.1 安裝包為本地
1.通過system-config-kickstart這個工具在圖形界面定制ks文件,這里要實現(xiàn)的是半自動化的安裝绎谦,需要在ks文件里指定安裝包的路徑管闷,用本地的光盤啟動
2.在虛擬機中選擇好光盤后,啟動虛擬機窃肠。注意包个,7安裝的內存要大于1024M,否則會出現(xiàn)空間不足的問題,無法安裝。
默認情況下碧囊,6和7通過光盤啟動的菜單界面如下截圖
6的啟動菜單頁面如下截圖
7的啟動菜單頁面如下截圖
3.編輯好ks文件,這個ks文件就是用來做自動化安裝的树灶,指導機器安裝ks文件里的語句進行安裝,半自動化的時候糯而,這個文件的路徑要 人為指定路徑天通,在開機的菜單處輸入特定按鍵后進行指定(如下兩張截圖的方法),然后才能加載ks文件進行安裝
這里要注意熄驼,首先要確保網絡是通的像寒,如果不用dhcp,也可以再ks文件里指定固定ip瓜贾,和網絡中的ftp服務器在同一網段
看到這個界面诺祸,敲入Esc鍵,看到boot:輸入linux ks=進行指定ks路徑祭芦,如果放到ftp下筷笨,就寫全路徑
看到圖一的開機界面,按下tab鍵实束,UI看到vmlinuz initrd=initrd.img輸入ks=把ks文件的路徑指出來奥秆,如下截圖是放到ftp下
指定好ks文件后,系統(tǒng)就會安裝ks設置的安裝步驟一步步執(zhí)行咸灿。最后安裝完成后進行重啟機器。注意侮叮,重啟機器這個步驟也是在ks文件里設定避矢。
3.1.2 安裝包在http服務器
這里和安裝包在本地的區(qū)別是,需要制作一個光盤囊榜,這個光盤僅僅用了引導機器啟動审胸,進入到啟動菜單。同時要在一臺http服務器上將光盤直接掛到機器上
1.制作啟動光盤:
將光盤的isolinux這個目錄拷貝到本地/root/bootiso/下
cp? -r? /media/isolinux/? /root/bootiso/
編輯ks文件
vim ks65min.cfg
在這個ks文件里卸勺,需要注意以下兩項
# Use network installation砂沛,配置http服務器下yum源的路徑,如下
url?--url="http://172.18.50.75/os/6i386/"
# Network information 網絡配置曙求,直接配置成靜態(tài)碍庵,或者是自動獲取,以下是直接配置成靜態(tài)ip的例子,原則是保證新增的機器ip和http在同一網段悟狱,能夠去訪問http那臺服務器静浴,
network? --bootproto=static --device=eth0 --gateway=172.18.0.1 --ip=172.18.50.99 --nameserver=172.18.0.1 --netmask=255.255.0.0 --onboot=on
將這個文件拷貝到本地的bootiso目錄下
cp?/root/ks65min.cfg?/root/bootiso/
編輯菜單文件,這里需要注意的是,要指定ks文件的路徑挤渐,注意苹享,這里因為把ks65min.cfg拷貝到了/root/bootiso/,這個目錄要被制作成啟動光盤浴麻,所以ks文件的目錄寫出ks=cdrom:/ks65min.cfg
vim???/root/bootiso/isolinux/isolinux.cfg
如下
label?linux
menu?label?^Install?or?upgrade?an?existing?system
menu?default
kernel?vmlinuz
append?initrd=initrd.img?ks=cdrom:/ks65min.cfg
2 啟動引導光盤
mkisofs?-R?-J?-T?-v?--no-emul-boot?--boot-load-size?4?--boot-info-table?-V?"CentOS?6.5?386?boot"?-b?isolinux/isolinux.bin?-c?isolinux/boot.cat?-o?/root/centos65_boot.iso?/root/bootiso/
centos65_boot.iso生成的這個光盤就可以實現(xiàn)半自動化安裝了得问,開機的時候囤攀,不需要在指定ks文件的路徑了,這里所謂半自動化安裝宫纬,是因為抚岗,還需要指定光盤才能安裝。
3.2 本地自動化安裝
全自動化安裝
1將光盤里的所有文件拷貝一份到本地系統(tǒng)
mount?/dev/sr0??/media
cp?-r??/media??/root/fulliso
2 刪掉.TBL文件哪怔,mkisofs命令創(chuàng)建的時候宣蔚,通過選項-T會自動生成
find?/root/fulliso?-name?TRANS.TBL??-exec?rm?{}?\;
3.repodata這個文件夾下除了comps.xml這個文件要保留,是存放包組信息的文件认境,該文件夾的其他文件都要刪除胚委。是一個xml格式的文件 ,創(chuàng)建的時候叉信,依賴這個文件來創(chuàng)建包組信息亩冬。該目錄下目前只剩下后綴為comps.xml這個文件,命令如下
find?/root/fulliso/repodata2/?!?-name?'*comps.xml'?-type?f?-exec?rm?-rf?{}?\;
4.根據createrepo這個文件來創(chuàng)建yum源硼身,在拷貝的fulliso這個目錄下硅急,命令后面的./是指在哪個目錄下創(chuàng)建yum源.這一步要等3分鐘左右,出現(xiàn)Sqlite DBs complete表示完成佳遂,命令如下
createrepo?-g?repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml??./
執(zhí)行以上語句后营袜,repodata文件夾就會創(chuàng)建出新的數(shù)據,如下
5. 6配置yum的kickstart文件丑罪,這里是直接復制一個ks文件作為模板進行修改荚板。或者直接在桌面端里打開終端命令窗口吩屹,執(zhí)行命令system-config-kickstart進行定制kickstart文件按自己的安裝需求進行設置.
注意跪另,將新生成的ks文件放到/fulliso這個目錄,可以放置多個應答文件煤搜,來實現(xiàn)不一樣的安裝免绿,如ks6-desk.cfg,ks6-mini.cfg
6. 制作啟動菜單,修改isolinux目錄下的isolinux.cfg這個文件擦盾,這里制作了四個菜單嘲驾,根據指定ks文件來實現(xiàn)不一樣的安裝,如下截圖
到這里厌衙,所有的準備文件都完成了距淫,接下來要制作成光盤
7. 制作成全量光盤,和半自動化2的的區(qū)別是這里重新生成yum倉庫配置文件婶希,把光盤的所有文件都拷貝到新的目錄下榕暇,包括安裝包,之前只是拷貝光盤下的isolinux這個目錄下的內容,制作一個引導的菜單彤枢,包放在了http等遠程端
這里可以制作成整個6的光盤狰晚,只需要把安裝包都拷貝到同一Packages目錄下即可.
執(zhí)行如下的語句制作.iso文件
mkisofs?-R?-J?-T?-v?--no-emul-boot--boot-load-size?4?--boot-info-table?-V?"CentOS?6.5?autoinstall"?-bisolinux/isolinux.bin?-c?isolinux/boot.cat?-o?/root/auto65.iso?/root/fulliso/
這一步比較久,根據機器的性能決定時間快慢缴啡,大概要10分鐘
這樣制作完成后壁晒,這個就可以實現(xiàn)通過光盤實現(xiàn)全自動化的安裝
如果要做成u盤啟動,就用命令dd把生成的這個文件拷貝到U盤下业栅,實現(xiàn)同U盤來安裝系統(tǒng),,假設U盤的識別為設備/dev/sdf .命令如下
dd?if=/root/auto65.isoof=/dev/sdf
然后裝機開機時秒咐,進入bios,將啟動項設置為U盤啟動即可
mkisofs選項
.-o指定映像文件的名稱碘裕。
.-b指定在制作可開機光盤時所需的開機映像文件携取。
.-c制作可開機光盤時,會將開機映像文件中的no-eltorito-
catalog全部內容作成一個文件帮孔。
.-no-emul-boot非模擬模式啟動雷滋。
.-boot-load-size 4設置載入部分的數(shù)量
.-boot-info-table在啟動的圖像中現(xiàn)實信息
.-R或-rock使用RockRidgeExtensions
.-J或-joliet使用Joliet格式的目錄與文件名稱
.-v或-verbose執(zhí)行時顯示詳細的信息
.-T或-translation-table建立文件名的轉換表,適用于不支持Rock Ridge Extensions的系統(tǒng)上
3.3 報錯解決
3.3.1 安裝65 mini 32位系統(tǒng)
出現(xiàn)如下的報錯
在CentOS 6.X下不支持通過HDMI端口進行音頻輸出文兢。 但是晤斩,支持主板音頻端口。 出現(xiàn)錯誤信息時姆坚,解決辦法:按OK繼續(xù)安裝操作系統(tǒng)澳泵。
3.3.2 CentOS7 桌面版安裝后問題
CentOS7 桌面版安裝后重啟出現(xiàn)如下的界面,解決辦法是依次按 1--》2--》c--》c然后重啟機器就能解決
3.3.3 CentOS 7 內存不夠
如配置為1024M時旷偿,出現(xiàn)如下的報錯烹俗,解決辦法是將centOS7通過該PXE安裝最小內存調整為1100M
卡在以下這一步驟
然后5分鐘后出現(xiàn)如下的報錯,
最終結果如下萍程,是異常安裝
4 小結
本文主要介紹了自動化安裝的相關概念,以及兩種自動化安裝系統(tǒng)的方法兔仰。如果工作環(huán)境不允許用網絡的方式安裝系統(tǒng)茫负,制作一個全量的自動化安裝鏡像則會大大降低工作量。
關于自動化安裝系統(tǒng)乎赴,還有兩種方式忍法,PXE 和 cobbler方式。接下來將會有一個文章專門介紹這兩個安裝方式的原理榕吼,以及實現(xiàn)饿序。