運維自動化之系統部署(一)

運維自動化發展歷程及技術應用html

 

什麼是自動化的安裝部署操做系統?linux

在工做中咱們可能常常部署不少臺主機,手工的一臺一臺的安裝只適合主機很是少的狀況,但大的互聯網公司在一些特殊的日子要部署大量的主機,以應對要到來的特大流量訪問。這時候咱們就不能,一臺一臺的安裝主機了,一是效率太慢,二是太累,三是費時間。基於這個狀況咱們能夠自動化的一塊兒部署不少的主機,而不用咱們人工一臺一臺的去安裝部署,節約了大量的時間。ios

centos 6的啓動流程express

1.POST開機加電自檢vim

2.MBR 讀取硬盤mbr引導的前446字節,屬於grub的stage1第一階段centos

3.進入grub的stage1.5階段,加載/boot分區所在的文件系統驅動緩存

4.進入grub的stage2階段,關鍵的文件已經在/boot/grub目錄裏面了,關鍵的文件 有/boot/grub.grub.conf文件,文件裏面kernel /vmlinuz root=/dev/sda2,定義了內核文件所在的位置bash

5.加載vmlinuz內核,完成之後找/根目錄,想要加載根文件系統,須要識別根所在的文件系統驅動,配合/boot/目錄裏面兩個重要的文件,一個是vmlinuz內核文件和initramfs驅動文件完成加載根文件系統網絡

6.加載完成根文件系統之後,啓動根下面的第一個進程/sbin/init,這個進程要讀取/etc/inittab配置文件,決定後續加載的一些腳本的啓動順序,也定義了運行模式app

7.運行第一個初始化腳本/etc/rc.d/rc.sysinit這個是真正的os初始化腳本,任何根據/etc/inittab配置文件默認模式運行相應的/etc/rc.d/rc*.d 裏面的腳本,固然裏面的腳本都是軟連接,真正的腳本在/etc/rc.d/init.d裏面,在/etc/rc.d/rc*.d目錄下是以K和S開頭的文件,執行相應模式關閉或開啓的服務

8.不管哪一種模式運行都要運行/etc/rc.local

9.最後執行/bin/login程序,等待用戶的登陸

 

實現半自動話安裝過程:

在自動化安裝系統以前咱們能夠先實現半自動化的安裝,例如將系統放到U盤或者光盤中,這樣咱們插到主機上就能夠實現自動化的安裝,固然只適合小範圍的安裝

系統的安裝程序叫anaconda

在安裝完成操做系統之後會在root的目錄裏面自動出現一個文件anaconda-ks.cfg,這個文件就是anaconda安裝嚮導在安裝過程當中生成的一個配置文件。

安裝部署系統的時候在啓動界面的一些基礎設置

當咱們安裝一個新的操做系統的時候因爲硬盤的MBR是空的系統任務硬盤不能引導全部自動切換到光盤引導

  • 第一項爲正常啓動
  • 第二項是加載最基本的顯卡驅動
  • 第三項是救援模式
  • 第四項是直接在硬盤啓動
  • 第五項是檢查內存

按esc會出現一個boot界面:

 若是輸入linux rescue/rescue就會進入救援模式:

 

 若是輸入linux text爲字符界面最小化安裝界面,只輸入linux命令就是正常安裝。

 cat /misc/cd/isolinux/isolinux.cfg中有相關的救援模式、正常模式、及本機菜單等信息。

label linux  正常模式光盤安裝
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
label rescue   救援模式信息
  menu indent count 5
  menu label ^Rescue a CentOS system
  text help
    If the system will not boot, this lets you access files
    and edit config files to try to get it booting again.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet
label local     本地菜單
  menu label Boot from ^local drive
  localboot 0xffff

 安裝程序的啓動流程

1.MBR 放在了光盤的isolinux目錄下的boot.cat文件裏面

2. stage2階段放在了isolinux目錄下的isolinux.bin 文件裏面,至關於硬盤裏面的/boot/grub/目錄下的文件

3. 配置文件在光盤的isolinux目錄的isolinux.cfg文件,定義了加載內核文件的路徑

咱們來講一下centos6系統半自動化安裝過程,經過光盤掛載到網絡進行安裝:

新加的光盤網絡適配器需選擇NAT模式:

在一個已經安裝好的系統(centos6)將光盤掛載到網上: 

第一步:cd /var/www/html
 
第二步:mkdir -pv centos/{6,7}/os/x86_64/
 
第三步:mount /dev/sr0  /centos/6/os/x86_64/  掛載的路徑就能夠當yum源用來當作光盤作引導,下圖爲掛載後的文件信息。

  

第四步:製做應答文件,須要咱們安裝工具 :

因爲製做應答文件的是一個圖形化工具,因此要到圖形化桌面執行

啓動前在最好調一下分辨率

1)yum  install  system-config-kickstart

 system-config-kickstart 輸入,進去以後注意調整分辨率,而後進行設置應答文件。

 

2)輸入完密碼,對勾去掉,密碼就可見,在後面配置應答文件時,能夠從新修改密碼;下面是安裝完以後重啓,選擇的第二個對勾是以最小化文本安裝。

 

 3)選擇http模式安裝,並將掛載在網上的光盤路徑寫上。

4)給grub加入密碼,而且能夠給kerbel加內核參數:max_loop=100 selinux=0

 

5)對磁盤進行格式化和分區:

 

 6)設置網卡名稱:

7)禁用selinux和防火牆

 

8)不安裝圖形界面

9)選擇基本安裝

 

10)將其配置文件保存到root目錄:

 

 11)應答文件信息作完,如下是應答文件信息,vim  ks.cfg 裏邊的地區,和開機後實行的對稱祕鑰腳本。

 

[root@centos6~]#cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.34.100/centos/6/os/x86_64"  指定的掛載網絡光盤路徑
# Root password
rootpw --plaintext centos
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled  禁用的selinux
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai  將地址寫成亞洲/上海
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --append="max_loop=100 selinux=0" --location=mbr --password="centos"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="ext4" --size=500
part / --fstype="ext4" --size=10000
part /home --fstype="ext4" --size=20000
part swap --fstype="swap" --size=1024
  
%post
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base.repo << EOF
[base]
basurl=http://192.168.34.100/centos/6/os/x86_64
gpgckeck=0
EOF
useradd wang
echo centos |passwd --stdin wang
  
mkdir /root/.ssh   生產公鑰腳本
cat > /root/.ssh/authorized.keys << EOF  將已經安裝好的centos6的id_rsa.pub公鑰信息寫入。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5hEv1/BQLBftA/tK5h+cF+zop59zMlpsMpXdaww8j3zktwSywDHhJI1cpWHS+rbUD1BKnapSL3Lfvi7o03rFAauAECgFjrJkAHX53Q1eh2ORfMpScaSPQ78CALSQ3pWN6Elgs6xwAAIc2MUXyoG5TTOJ0PSekzKrTww5xHuNsitXgrKfD2dBIAWFk7vwekk4kvRLBT3rbG19fYc0cTv9u+b6+Xi8EhpwR+v4BAN3eE+CFvEIsZDrp0ul566B9NZBBUBe8EJkr+H/dPRA4PR5Hctyhd27uE9hQ70QzBGBuhrL+NKxi3hRTWuLWoSUs3pP99x9km02FjzDDVOHWS7MVQ== root@centos6.10.localdomain
EOF
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized.keys
  
%end
%packages
@base
%end

 

12)下來在已裝好的centos6將應答文件放到當時掛載光盤的網上:  

mkdir  /var/www/html/ksdir/{6,7}  新建一個文件夾
mv ks6.cfg  /var/www/html/ksdir/6/ks6_mini.cfg  將root下的應答文件放入到此目錄文件下並起名叫ks6_mini.cfg

13)進入安裝界面按esc,而後boot下輸入內容,指定應答文件路徑:直接回車就等待所有安裝過程:

boot: linux ks=http://192.168.34.100/ksdir/6/ks6_mini.cfg  ip=192.168.34.123 netmask=255.255.255.0   指定一個能臨時鏈接外網的IP地址,獲取外網掛載的應答文件

 若是想安裝圖形界面,咱們能夠安裝一個包組: yum groupinstall  desktop  安裝完以後就會有圖形界面,上面的半自動化系統安裝完成。

 

咱們來講一下centos6半自動化安裝過程,在centos6基礎上進行安裝:

以前作的centos6要一直將本地光盤掛載到網頁上,保證能訪問:

service httpd start
 
mount  /dev/sr0 /var/www/html/centos/6/os/x86_64/

 製做iso格式的應答文件準備工做:

[root@centos6~]#mkdir /data/iso
 
[root@centos6data]#cp -r  /misc/cd/isolinux  /data/iso
 
[root@centos6data]#cp /var/www/html/ksdir/6/ks6_mini.cfg  /data/iso  將應答文件內容複製到iso文件中
 
[root@centos6iso]#mkdir ksdir 建立應答文件目錄
 
[root@centos6iso]#mv ks6_mini.cfg  ksdir/  將應答文件放到此目錄裏

查看菜單裏邊的內容,修改isolinux.cfg應答文件內容:

[root@centos6iso]#tree
.
├── isolinux
│   ├── boot.cat
│   ├── boot.msg
│   ├── grub.conf
│   ├── initrd.img
│   ├── isolinux.bin
│   ├── isolinux.cfg   修改此配置文件裏邊的內容
│   ├── memtest
│   ├── splash.jpg
│   ├── TRANS.TBL
│   ├── vesamenu.c32
│   └── vmlinuz
└── ksdir
    └── ks6_mini.cfg

vim isolinux/isolinux.cfg:修改配置文件內容

label Auto    實現自動化安裝
menu label ^Auto Install an system
menu default
kernel vmlinuz
append initrd=initrd.img ks=cdrom:/ksdir/ks6_mini.cfg  指定掛載在網上應答文件路徑

label Manual  實現手動安裝
menu label ^Manual Install an system
menu default
kernel vmlinuz
append initrd=initrd.img repo=http://192.168.34.100/centos/6/os/x86_64/  將掛載在網上的iso的yum源光盤路徑寫入

abel local    實現本地安裝
menu label Boot from ^local drive
localboot 0xffff

將該配置文件轉換成iso文件

[root@centos6~]#mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/iso/  將文件制定成iso文件,文件路徑在/root/boot.iso家目錄下
[root@centos6~]#sz boot.iso   將家目錄的iso文件放到桌面,此文件只能作啓動做用。

  注意:以上相對路徑都是相對於光盤的根,和工做目錄無關

而後將桌面的boo.iso文件進行放入到指定目錄中:

開機啓動,進入菜單界面,選擇第一項,就是咱們作的應答文件,點回車,等待安裝結束:

 上面的系統安裝過程已經完成。

 

下面咱們來介紹怎麼將iso 文件製做到硬盤裏,做爲啓動文件,間接使用網上掛載的光盤安裝過程:

注:將本地光盤要一直保持在網頁上掛載狀態,不然沒法經過網頁光盤安裝。

[root@centos6~]#mount /dev/sr0 /var/www/html/centos/6/os/x86_64/  掛載光盤,否則沒有光盤引導安裝。
[root@centos6~]#service httpd start 服務啓動,不起動沒法加載

添加一個20G的硬盤:

[root@centos6x86_64]#echo "- - -" > /sys/class/scsi_host/host0/scan  將插入未識別的硬盤進行加載

[root@centos6~]isohybrid boot.iso  轉換當前的iso文件

[root@centos6~]#dd if=/root/boot.iso of=/dev/sdb  將文件寫入到sdb硬盤裏
92160+0 records in
92160+0 records out
47185920 bytes (47 MB) copied, 1.33288 s, 35.4 MB/s
[root@centos6~]# sync  從緩存中寫入到磁盤內
[root@centos6~]# sync
[root@centos6~]# sync
[root@centos6~]# sync

將製做好的文件路徑去搜索,找到CensOS6.10-2.vadk文件名的文件,臨時放到桌面

 而後將要安裝的新系統文件進行添加鏡像路徑,選擇現有虛擬機:

將製做好的iso文件導入:

 

 由於當前只會默認加載第一個硬盤啓動,咱們須要設置以前刻錄的文件硬盤做爲啓動項,啓動機器按esc進入bios界面設置,而後按最下面的setup選項,選擇Hard Drive 硬盤設置,回車進入。

按+號將第二個硬盤置頂,而後按F10,保存重啓,就開始選擇本身的應答文件開始自動化安裝整個過程,等待安裝結束,整個安裝就會結束。

 

 

硬盤引導安裝方法完成。

 

咱們來說解怎麼將ISO鏡像和應答文件所有放在硬盤裏安裝系統:

在以前安裝的基礎上繼續製做:

[root@centos66]#mkdir /data/fulliso
[root@centos66]#cp -rv /misc/cd/. /data/fulliso

[root@centos6fulliso]#find -name TRANS.TBL 
./Packages/TRANS.TBL
./EFI/BOOT/TRANS.TBL
./EFI/TRANS.TBL
./isolinux/TRANS.TBL
./TRANS.TBL
./images/pxeboot/TRANS.TBL
./images/TRANS.TBL
./repodata/TRANS.TBL
[root@centos6fulliso]#find -name TRANS.TBL -exec rm {} \; 刪除裏邊特定的文件

[root@centos6fulliso]#rm -rf repodata/* 清空倉庫,從新建內容 [root@centos6fulliso]#createrepo -g /misc/cd/repodata/5a045ecddfcca9dcbf1c28b6543e740de844ff4ef221e70308e7ad6decaea417-c6-x86_64-comps.xml ./ 在當前文件從新生成倉庫的源數據 [root@centos6~]#cp anaconda-ks.cfg /data/fulliso 由於root裏邊有一個相關配置信息,能夠對其裏邊的配置大概修改一下便可 [root@centos6fulliso]#mv anaconda-ks.cfg ks.cfg 將anaconda-ks.cfg 從新命名爲ks.cfg

  

vim  ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$6pdd/ulLIO5IoQ2u$EKDznPOR19rWTeBjVVTYGay3PbNd3t0v9.Ae.jOsxP9i3T8khOMhDxDwTzfa9E3gqirD7qD3Pw6qK1
QKf2pDE0
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone 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  格式化mbr
reboot  安裝完重啓
text   文本格式安裝

part /boot --fstype=ext4 --size=1024  boot磁盤分區
part / --fstype=ext4 --size=100000   根磁盤分區
part /data --fstype=ext4 --size=50000   data磁盤分區

part swap --size=2048  swap磁盤分區


%packages
@base  安裝基本包
%end

 製做應答文件:vim isolinux/isolinux.cfg

label Auto
  menu label ^Auto Install  an  system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks.cfg   指定應答文件路徑

label Desktop
  menu label ^Desktop Install  an  system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=cdrom:/ks_desktop.cfg  備用:指定要安裝的桌面應答文件路徑


label local
  menu label Boot from ^local drive
  localboot 0xffff

將文件都打包製做成iso文件,生成文件默認保存在root下,名稱叫centos6.iso

[root@centos6~]#mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso /data/fulliso

而後將文件傳到桌面: sz centos6.iso

下來將壓縮的iso文件導入當前路徑:

 而後啓動系統,按esc啓動光盤安裝,直接選擇第一選項開始安裝,直至結束。

 

 好了,小範圍的Linux主機安裝就介紹到這裏,下章咱們來學習批量自動化安裝系統,敬請期待。

相關文章
相關標籤/搜索