自動化安裝操做系統(Centos7+PXE+Cobbler+kickstart)

1、簡介html

    一、PXE
python

        PXE稱做是一種引導方式而不是安裝方式彷佛更加準確,PXE(Pre-boot Execution Environment)是由Intel設計的協議,它可使計算機經過網絡啓動,可是有一個前提條件是計算機的網卡必須具備引導功能,這個網卡中要有一個PXE客戶端。當計算機POST自檢成功之後,BIOS把網卡中ROM的PXE客戶端調入內存執行,PXE客戶端經過網絡中的DHCP服務器獲取一個IP地址,拿到IP地址之後PXE繼續引導計算機與網絡中的TFTP客戶端創建鏈接,從而從TFTP服務器中獲取開機引導文件以後請求並下載安裝須要的文件。在這個過程當中須要一臺服務器來提供啓動文件、安裝文件、以及安裝過程當中的自動應答文件等。linux

        PXE工做步驟:
web

        image.png

        原理分析:
ubuntu

            Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),若是合法則返回Client的IP地址,同時將啓動文件pxelinux.0的位置信息一併傳送給Clientvim

            Client向PXE Server上的TFTP發送獲取pxelinux.0請求消息,TFTP接收到消息以後再向Client發送pxelinux.0大小信息,試探Client是否滿意,當TFTP收到Client發回的贊成大小信息以後,正式向Client發送pxelinux.0centos

            Client執行接收到的pxelinux.0文件服務器

            Client向TFTP Server發送針對本機的配置信息文件(在TFTP服務的pxelinux.cfg目錄下,這是系統菜單文件,格式和isolinux.cfg格式同樣,功能也是相似),TFTP將配置文件發回Client,繼而Client根據配置文件執行後續操做。網絡

            Client向TFTP發送Linux內核請求信息,TFTP接收到消息以後將內核文件發送給Clientapp

            Client向TFTP發送根文件請求信息,TFTP接收到消息以後返回Linux根文件系統

            Client啓動Linux內核

            Client下載安裝源文件,讀取自動化安裝腳本


    二、Cobbler

        Cobbler 能夠用來快速創建Linux網絡安裝環境,它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功下降到初中如下,連補鞋匠都能學會。Cobbler是一個Linux服務器快速網絡安裝的服務,由python開發,小巧輕便(15k行python代碼),能夠經過PXE的方式來快速安裝、重裝物理服務器和虛擬機,同時還能夠管理DHCP,DNS,TFTP、RSYNC以及yum倉庫、構造系統ISO鏡像。

        Cobbler可使用命令行方式管理,也提供了基於Web的界面管理工具(cobbler-web),還提供了API接口,能夠方便二次開發使用。

        Cobbler 工做步驟:

            image.png

        

    

                Server端:

        第一步,啓動Cobbler服務
        第二步,進行Cobbler錯誤檢查,執行cobbler check命令
        第三步,進行配置同步,執行cobbler sync命令
        第四步,複製相關啓動文件文件到TFTP目錄中
        第五步,啓動DHCP服務,提供地址分配
        第六步,DHCP服務分配IP地址
        第七步,TFTP傳輸啓動文件
        第八步,Server端接收安裝信息
        第九步,Server端發送ISO鏡像與Kickstart文件
        
           
        第一步,客戶端以PXE模式啓動
        第二步,客戶端獲取IP地址
        第三步,經過TFTP服務器獲取啓動文件
        第四步,進入Cobbler安裝選擇界面
        第五步,客戶端肯定加載信息
        第六步,根據配置信息準備安裝系統
        第七步,加載Kickstart文件
        第八步,傳輸系統安裝的其它文件
        第九步,進行安裝系統


    三、kickstart

         kickstart是一個定義了Linux安裝過程的配置文件,好比要在系統中使用的時區、如何對驅動器進行分區、或者應該安裝哪些軟件包。有了這個文件能夠解放雙手,讓Linux安裝過程按照咱們預先定義的要求進行自動化安裝,同時部署大量主機時十分有用。通常centos系統安裝後,會在root目錄下生成一個名爲anaconda-ks.cfg的kickstart配置文件。Kickstart 是紅帽開發的一種工具,咱們能夠簡單理解爲一個自動安裝應答配置管理程序。經過讀取這個配置文件,系統知道怎麼去分區,要安裝什麼包,配什麼IP,優化什麼內核參數等等。其主要有如下部分組成:

        Kickstart 安裝選項,包含語言的選擇,防火牆,密碼,網絡,分區的設置等;

        %Pre 部分,安裝前解析的腳本,一般用來生成特殊的ks配置,好比由一段程序決定磁盤分區等;

        %Package 部分,安裝包的選擇,能夠是 @core 這樣的group的形式,也能夠是這樣 vim-* 包的形式;

        %Post 部分,安裝後執行的腳本,一般用來作系統的初始化設置。好比啓動的服務,相關的設定等。


2、操做系統及軟件版本

        操做系統:Centos 7:CentOS Linux release 7.5.1804 (Core)

        Cobbler:Cobbler 2.8.5

        網絡: enp4s0: 172.16.30.3  

         

3、部署搭建步驟

    一、操做系統準備:

        cat /etc/redhat-release

        image.png

    關閉防火牆:

        systemctl stop firewalld        

        systemctl disable firewalld

        systemctl status firewalld

        image.png

    管理selinux 服務:(備註:改完selinux,須要重啓系統才生效)

        vi /etc/sysconfig/selinux

        SELINUX=enforcing  改成:SELINUX=disabled

        image.png

    IP地址信息:

         image.png

        安裝wget

        yum install -y wget

        image.png

    二、更新centos7 yum源:


         備份原來的 CentOS-Base.repo 源:

        cd /etc/yum.repos.d/

        ls

        mv CentOS-Base.repo CentOS-Base.repo.bak

        wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 

        image.png

        ls

        yum clean all

        yum makecache

        yum update -y

        image.png

    三、安裝依賴包:

        安裝httpd 服務:yum install -y httpd

        image.png

        安裝dhcp服務:yum install -y dhcp

        image.png

        安裝tftp服務:yum install  -y tftp-server

        image.png

    四、安裝Cobbler:

        安裝cobbler服務:yum install  -y cobbler

        提示沒有cobbler安裝包

        image.png

        更新一下yum源的包:

        wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo

        image.png

        繼續安裝cobbler:yum install  -y cobbler

        image.png

        安裝cobbler-web服務:yum install  -y cobbler-web

        image.png

    五、安裝pykicksstart:

        安裝pykickstart服務:yum install  -y pykickstart

        image.png

    六、查看cobbler安裝的部分文件

        rpm -ql cobbler     # 查看安裝cobbler 生成的文件夾,主要分析以下:

        image.png

    七、重啓相關服務:

        重啓cobbler服務:systemctl start cobblerd

                                     systemctl restart cobblerd

        重啓http服務:systemctl restart httpd

        添加開機自啓動:systemctl enable httpd

                                   systemctl enable cobblerd 

        image.png 

    八、檢查cobbler

        檢查cobbler: cobbler check

        image.png

    九、根據上面檢查的結果,進行逐一的配置:

       (1) 修改提供cobbler服務的主機的IP或主機名:             

        sed -i 's/^server: 127.0.0.1/server: 172.16.30.3/' /etc/cobbler/settings               #設置服務器的地址爲:172.16.30.3

        grep "^server" /etc/cobbler/settings                                 #檢查是否該成功

        image.png

        (2)、修改「next_server」爲PXE網絡上啓動服務器的IP地址(這裏PXE服務器和cobbler服務器是同一臺):

        sed -i 's/^next_server: 127.0.0.1/next_server: 172.16.30.3/' /etc/cobbler/settings

        grep "^next_server" /etc/cobbler/settings

        image.png

        (3)、修改/etc/xinet.d/tftp文件中的disable的參數爲no

        cd /etc/xinetd.d/

        ls

        cp tftp tftp.bak       #備份 tftp文件

        cd

        vim /etc/xinet.d/tftp

        disable = no

        image.png

        (4)執行cobbler get-loaders 命令:  (

        cobbler get-loaders

        image.png

        image.png

        有可能會失敗,是下載一下包失敗,多嘗試幾回。直至出現成功:

        image.png

        (5)啓動rsync 服務:

        重啓rsync服務:systemctl start rsyncd.service

                                systemctl restart rsyncd.service

         設置開機自啓動服務:systemctl enable rsyncd.service

         image.png

        (6)、安裝包用來管理debian部署和存儲庫,這裏不須要,就不安裝了

        (7)、修改cobbler中的加密密碼(即爲自動安裝系統後的root登陸密碼)

        #生成加密密碼openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'

        openssl passwd -1 -salt '123456' '11111111'                    # 123456  使用加密機制;    11111111   是安裝系統後的root登陸密碼

        image.png

        vim /etc/cobbler/settings

        image.png

        (8)安裝cman fence-agents(可選),電源管理功能

        yum install cman fence-agents -y

        image.png

        (9)修改一些其餘的配置

        vim /etc/cobbler/settings

        manage_dhcp: 1  #用cobbler管理dhcp

        pxe_just_once: 1   #防止循環安裝系統,適用於服務器第一啓動選項是pxe啓動

        image.png

        image.png

        (10)同步cobbler配置:

        cobbler sync

        systemctl restart cobblerd.service

        image.png

        (11)從新檢測cobbler:

        cobbler check

        image.png

        #管理deban,這裏不須要安裝,若是須要安裝deban或Ubuntu系統,須要安裝

        yum install -y debmirror  

        vim  /etc/debmirror.conf

        禁用下面兩個選項

        #@dists="sid";

        #@arches="i386";


    十、配置dhcp服務:

        備份dhcp.template 文件:

        cd /etc/cobbler/

        cp dhcp.template dhcp.template.bak

        ls

        cd    

        vim /etc/cobbler/dhcp.template

image.png

        vim /etc/cobbler/dhcp.template

        image.png

        同步cobbler配置:

        cobbler sync

        image.png

            從新檢測cobbler

            cobbler check

            image.png

     十一、設置開機自啓:

            systemctl enable dhcpd

            systemctl enable rsyncd.service

            systemctl enable tftp.service

            systemctl enable httpd.service

            systemctl enable cobblerd.service

            image.png

        重啓全部服務,防止有些服務沒有開啓:

            systemctl restart tftp.service

            systemctl restart dhcpd.service

            systemctl restart rsyncd.service

            systemctl restart httpd.service

            systemctl restart cobblerd.service

            image.png

4、掛載光盤鏡像

     因爲安裝的文件只能識別iso掛載後的文件,不能直接識別iso鏡像文件,因此須要將iso鏡像掛載到服務器上,而後將掛載後的系統文件複製到其餘目錄以備後用。(備註:也能夠根據本身的實際狀況建立目錄)。具體操做以下:

    一、建立存放系統鏡像文件的目錄 (能夠根據本身的需求進行建立)

        mkdir /data1/os/                #將掛載後的系統鏡像文件複製的此目錄

        mkdir /data1/os/centos7.5      #將centos7.5系統掛載後的文件所有複製到此目錄

        mkdir /data1/os/ubuntu16.04.06     #將Ubuntu16.04.06系統掛載後的文件所有複製到此目錄

        mkdir /data1/os/ubuntu16.04.04     #將Ubuntu16.04.04系統掛載後的文件所有複製到此目錄

    二、建立用戶臨時掛載鏡像的目錄:

        mkdir /data1/oscahe/                        #用於將系統鏡像iso文件掛載到此目錄下

    三、將系統iso鏡像文件上傳到服務器中(能夠經過xftp工具進行上傳,能夠用U盤上傳等方式)

            cd /data1

            ls

            image.png

    四、掛載系統iso鏡像

        mount -t iso9660 -o loop /data1/CentOS-7-x86_64-DVD-1804.iso /data1/oscahe/                        #將Centos7系統掛載到/data1/oscahe目錄下

        ls /data1/oscahe

        image.png

    五、將/data1/oscahe中的系統文件所有複製到鏡像文件目錄 /data1/os/centos7.5

        cp -rf /data1/oscahe/* /data1/os/centos7.5/

        image.png

    六、卸載系統iso鏡像文件

        umount /data1/CentOS-7-x86_64-DVD-1804.iso

        ls /data1/oscahe/

        image.png


        (備註:若是想要掛載其餘系統的iso鏡像文件,重複上面的4    5    6 三個步驟)

    七、查詢系統掛載了幾個系統鏡像文件

            ls /data1/os/centos7.5/

            ls /data1/os/ubuntu16.04.04

            ls /data1/os/ubuntu16.04.06

            image.png

5、導入鏡像

     一、   使用如下的方法導入鏡像:

        cobbler  import --path=/iso/   --name=Centos7.5    --arch=x86_64

        解釋:

        --path:鏡像路徑

        --name: 爲安裝源定義一個名字,能夠根據本身的喜愛指定

        --arch:指定安裝源是64位或32位

        下面分別導入上面上傳的4個系統鏡像:

        cobbler import --path=/data1/os/centos7.5 --name=Centos7.5 --arch=x86_64           #導入Centos7.5系統鏡像

        image.png

        cobbler import --path=/data1/os/ubuntu16.04.04 --name=ubuntu16.04.04 --arch=x86_64                     #導入Ubuntu16.04.04系統鏡像

        image.png

        cobbler import --path=/data1/os/ubuntu16.04.06 --name=ubuntu16.04.06 --arch=x86_64                     #導入Ubuntu16.04.06系統鏡像

        image.png

    二、查看鏡像列表:

        cobbler distro list

        image.png

    三、查看鏡像存放目錄

        cd /var/www/cobbler/ks_mirror/

        ls

        image.png


6、配置ks文件

    一、查看ks文件位置:

        cd /var/lib/cobbler/kickstarts/

        ls        

        image.png

    二、配置自定義ks文件,以sample_end.ks模板

        cp sample_end.ks Centos7.5-x86_64

        vim Centos7.5-x86_64        

        修改的內容以下:

        firewall --disable     #關閉防火牆

        timezone  Asia/Shanghai  #設置時區

        # autopart    #把自動分區註釋,手動以下設置

        part /boot --fstype=ext4 --asprimary --size=200

        part swap --asprimary --size=1024

        part / --fstype=ext4 --grow --asprimary --size=10240

        %packages   #安裝須要安裝的軟件包

       $SNIPPET('func_install_if_enabled')  #這裏默認

       %end

    解釋:

          --asprimary,強迫把分區分配爲主分區,不然提示分區失敗.

         --fstype=,爲分區設置文件系統類型.有效的類型爲ext2,ext3,swap和vfat

        --grow  讓分區自動增加利用可用的磁盤空間,或是增加到設置的maxsize值;

        --size=  設置分區的最小值,默認單位爲M,可是不能寫單位;

        %packages部分,這部分選擇須要安裝的軟件包.

        

d-i debian-installer/locale string en_US


d-i console-setup/ask_detect boolean false

d-i keyboard-configuration/toggle select No toggling

d-i keyboard-configuration/layoutcode string us

d-i keyboard-configuration/variantcode string


d-i netcfg/choose_interface select auto

d-i netcfg/get_hostname string $myhostname



d-i time/zone string US/Eastern

d-i clock-setup/utc boolean true

d-i clock-setup/ntp boolean true

d-i clock-setup/ntp-server  string ntp.ubuntu.com


d-i mirror/country string manual

d-i mirror/http/hostname string $http_server

d-i mirror/http/directory string $install_source_directory

d-i mirror/http/proxy string


d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs


d-i partman/choose_partition select finish

d-i partman/confirm boolean true

d-i partman/confirm_nooverwrite boolean true

d-i partman-auto/method string lvm

d-i partman-lvm/device_remove_lvm boolean true

d-i partman-lvm/confirm boolean true

d-i partman-lvm/confirm_nooverwrite boolean true

d-i partman-md/device_remove_md boolean true

d-i partman-partitioning/confirm_write_new_label boolean true


d-i partman-auto/choose_recipe select atomic



d-i passwd/root-login boolean true

d-i passwd/root-password-crypted password $default_password_crypted


d-i passwd/make-user boolean false


$SNIPPET('preseed_apt_repo_config')


tasksel tasksel/first multiselect standard


d-i pkgsel/include string ntp ssh wget


d-i grub-installer/grub2_instead_of_grub_legacy boolean true

d-i grub-installer/bootdev string default


d-i debian-installer/add-kernel-opts string $kernel_options_post


d-i finish-install/reboot_in_progress note



d-i preseed/early_command string wget -O- \

   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | \

   /bin/sh -s



d-i preseed/late_command string wget -O- \

   http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \

   chroot /target /bin/sh -s


    三、查看自動生成的自動安裝文件

        第一次導入系統鏡像後,cobbler會給鏡像指定一個默認的kickstart自動安裝文件

        (/var/lib/cobbler/kickstarts/sample_end.ks)

        cobbler list

        image.png

    四、查看安裝鏡像文件信息

        cobbler distro report --name=Centos7.5-x86_64

        image.png

    五、查看鏡像的profile 設置

        cobbler profile report --name=Centos7.5-x86_64

        image.png

    六、編輯profile,修改關聯的ks文件(指定自定義的ks文件)

        cobbler profile edit --name=Centos7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Centos7.5-x86_64.ks

    七、查看profile,確認kickstart 關聯文件是否被修改:

        cobbler profile report --name=Centos7.5-x86_64

        image.png

    八、同步數據

        cobbler sync

        systemctl restart cobblerd.service

       image.png 

    九、修改PXEE默認啓動項

        默認狀況下PXE啓動的是Local(啓動後會出現local和自定義CentOS7.5-x86_64兩個選項,需手動,要無人工干涉,就須要修改)

    修改前:

        cd /var/lib/tftpboot/pxelinux.cfg/

        cat default

        能夠修改裏面的啓動順序,也能夠不修改。

image.png

7、測試自動安裝:

    一、將要安裝系統的設備,接入到網絡中,從網絡啓動:(不通的設備,網卡名字不一樣)

        image.png

    進入網絡啓動界面:

        image.png

        獲取到DHCP服務器的地址,設備獲取到IP地址:

        image.png

        獲取到可安裝的系統鏡像:

        image.png       

        拉取安裝系統的文件:

         image.png

        開始自動安裝操做系統:

        image.png

        image.png

        image.png

        image.png

        image.png

        image.png

        image.png

        image.png

        以上步驟均不需手動操做,自動安裝(備註:若是被安裝的設備有兩個網卡,須要手動選擇正確的網卡。若是有多塊硬盤,須要手動選擇安裝的盤,無親自測試,建議安裝對的時候安裝一塊盤,待系統安裝完成後,用腳本進行掛載和格式化。)。

     此教程比較適用於自動化安裝centos系統,兼容性較高。對於安裝Ubuntu系統,ks文件兼容性不是很好。


參考文獻以下:

    https://blog.csdn.net/yuanfangPOET/article/details/89279733

    https://blog.csdn.net/anqixiang/article/details/98050676

    https://www.cnblogs.com/linuxliu/p/7668048.html

相關文章
相關標籤/搜索