Linux 自動化批量部署 Cobbler

網絡安裝服務器套件 Cobbler(補鞋匠)從前,我們一直在做裝機民工這份很有前途的職業。自打若干年前 Red Hat 推出了 Kickstart,此後我們頓覺身價倍增。不再需要刻了光盤一臺一臺地安裝 Linux,只要搞定 PXE、DHCP、TFTP,還有那滿屏眼花繚亂不知所云的 Kickstart 腳本,我們就可以像哈里波特一樣,輕點魔棒,瞬間安裝上百臺服務器。這一堆花裏胡哨的東西可不是一般人都能整明白的,沒有大專以上學歷,通不過英語四級, 根本別想玩轉。總而言之,這是一份多麼有前途,多麼有技術含量的工作啊。很不幸,Red Hat 最新(Cobbler項目最初在2008年左右發佈)發佈了網絡安裝服務器套件 Cobbler(補鞋匠),它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。

Cobbler 的優點:自動管理各個服務器間的配置,更強大的管理功能。而且它還有 Web 管理界面,可以通過點一點鼠標就可以安裝一臺主機,Kickstart 的模板文件可以配置多個。

參照上圖所示,Cobbler 運行流程如下:

  • Server 端:
  • 啓動 Cobbler 服務
  • 進行 Cobbler 錯誤檢查,執行 Cobbler check 命令
  • 進行配置同步,執行 Cobbler sync 命令
  • 複製相關啓動文件文件到 TFTP 目錄中
  • 啓動 DHCP 服務,提供地址分配
  • DHCP 服務分配 IP 地址
  • TFTP 傳輸啓動文件
  • Server 端接收安裝信息
  • Server 端發送 ISO 鏡像與 Kickstart 文件

  • Client 端:
  • 客戶端以 PXE 模式啓動
  • 客戶端獲取 IP 地址
  • 通過 TFTP 服務器獲取啓動文件
  • 進入 Cobbler 安裝選擇界面
  • 客戶端確定加載信息
  • 根據配置信息準備安裝系統
  • 加載 Kickstart 文件
  • 傳輸系統安裝的其它文件
  • 進行安裝系統

下面我們開始搭建 Cobbler 無人值守安裝服務器

  • 關閉 selinux、iptables和 Friewall
  • 需要使用 yum 的 epel 源,具體設置請參照拙作:https://blog.csdn.net/gaofei0428/article/details/102903468
  • 安裝 Cobbler 有一部分軟件會被當做依賴進行安裝上去,比如 tftp 和 httpd 服務
  • yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd rsync xinetd
  • cobbler             #Cobbler 程序包
  • cobbler-web     #Cobbler 的 Web 服務包
  • pykickstart        #Cobbler 檢查 kickstart  語法錯誤
  • httpd                #Apache Web 服務
  • xinetd               #超級守護進程

  • 注:如果安裝過程中缺少 rpm 包,可以到以下網站自行下載安裝
  • https://pkgs.org/


  • /etc/cobbler                              # 配置文件目錄
    /etc/cobbler/settings                 # Cobbler 主配置文件,這個文件是 YAML 栺式,Cobbler 是 python 寫的程序。
    /etc/cobbler/dhcp.template       # DHCP服務的配置模板
    /etc/cobbler/tftpd.template       # tftp 服務的配置模板
    /etc/cobbler/rsync.template      # rsync 服務的配置模板
    /etc/Cobbler/iso                       # iso 模板配置文件目錄
    /etc/cobbler/pxe                      # pxe 模板文件目錄
    /etc/cobbler/power                  # 電源的配置文件目錄
    /etc/cobbler/users.conf           # Web 服務授權配置文件
    /etc/cobbler/users.digest        # 用於 Web 訪問的用戶名密碼配置文件
    /etc/cobbler/dnsmasq.template    # DNS 服務的配置模板
    /etc/cobbler/modules.conf           # Cobbler 模塊配置文件
    /var/lib/cobbler                            # Cobbler 數據目錄
    /var/lib/cobbler/config                 # 配置文件
    /var/lib/cobbler/kickstarts            # 默認存放 kickstart 文件
    /var/lib/cobbler/loaders               # 存放的各種引導程序
    /var/www/cobbler                       # 系統安裝鏡像目錄
    /var/www/cobbler/ks_mirror        # 導入的系統鏡像列表
    /var/www/cobbler/images           # 導入的系統鏡像啓動文件
    /var/www/cobbler/repo_mirror     # yum 源存儲目錄
    /var/log/cobbler                          # 日誌目錄
    /var/log/cobbler/install.log          # 客戶端系統安裝日誌
    /var/log/cobbler/cobbler.log       # Cobbler 日誌


下面開始配置 Cobbler

  • 首先啓動 Cobbler 和 httpd 服務
  • systemctl start cobblerd
  • systemctl start httpd
  • 設置爲開機自啓動
  • systemctl enable cobblerd
  • systemctl enable httpd

  • 啓動無誤後,編輯 /etc/cobbler/settings  Cobbler 主配置文件
  • vim /etc/cobbler/settings

  • 搜索 servernext_server 修改爲對應的服務器 IP

  • 修改安裝操作系統默認 root 用戶密碼,使用 openssl 加密

  • openssl passwd -1 -salt 'root' '123456'

  • $1$root$j0bp.KLPyr.u9kgQ428D10

  • 修改 Cobbler 管理 dhcp 服務

  • manage_dhcp: 1

  • manage_tftpd: 1        #默認已開啓

  • 防止客戶端重複安裝操作系統,增加默認從本機硬盤啓動菜單
  • pxe_just_once: 1


  • 修改 tftp 服務被 xinetd 服務管理

  • vim /etc/xinetd.d/tftp
  • 安裝完默認是 disable         = yes     關閉狀態,修改爲  disable         =  no


  • 下載操作系統引導文件

  • cobbler get-loaders


  • 開啓 rsyncd 服務,設置爲開機自啓動

  • systemctl start rsyncd

  • systemctl enable rsyncd


  • 配置 DHCP,Cobbler 自動管理 DHCP 服務,只需要修改 Cobbler 中的模板配置文件

  • vim /etc/cobbler/dhcp.template

  • subnet 192.168.10.0 netmask 255.255.255.0       #配置默認爲 192.168.1.0 網段,具體要看你的裝機 vlan 劃分

  • option routers 192.168.10.2;                                #按照實際的網關爲準

  • option domain-name-servers 192.168.10.2;          #修改 DNS 地址

  • range dynamic-bootp        192.168.10.100 192.168.10.254;           # 可分配的起始IP-結束IP

  • $next_server 爲變量值(前面修改的主配置文件中的地址 192.168.10.2)


  • 導入鏡像以及配置

  • 掛載光驅

  • 導入鏡像(時間較長)

  • cobbler import --path=/mnt/cdrom --name=CentOS-7.5 --arch=x86_64

  • 查看鏡像,上面是鏡像名稱,下面是啓動菜單

  • cobbler list


  • 確認配置無誤後,同步配置文件,需要先重啓 Cobblerd

  • systemctl restart cobblerd

  • cobbler sync


  • 檢查配置

  • cobbler check

  • 下面這2個錯誤可以忽略


  • 定製 ks 自動應答文件

  • cobbler profile list
  • cobbler profile report --name=CentOS-7.5-x86_64
  • 默認使用的是 /var/lib/cobbler/kickstarts/sample_end.ks

  • 改變默認的 ks 文件(需要 root 用戶)
  • cobbler profile edit --distro=CentOS-7.5-x86_64 --name=CentOS-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7.5.ks
  • cobbler profile list
  • cobbler profile report --name=CentOS-7.5-x86_64

  • 編輯 vim /var/lib/cobbler/kickstarts/CentOS7.5.ks 文件

  • install                                                                        #全新安裝
    text                                                                           #安裝模式爲文字界面
    url --url=$tree                                                           # 指定 ks 自動應答文件位置,引用Cobbler的內置變量 $tree
    auth --enableshadow --passalgo=sha512                 #設置系統的授權選項
    firstboot --enable                                                     
    reboot                                                                      #安裝完成後自動重啓
    keyboard us                                                             #默認鍵盤設置
    lang en_US.UTF-8                                                   #默認語言設置
    timezone --utc Asia/Shanghai                                   #默認時區設置 
    rootpw --iscrypted $default_password_crypted         #默認 root 用戶密碼設置,引用 /etc/cobbler/settings 中設置的變量
    firewall --disable                                                       #關閉防火牆以及selinux
    selinux --disable
    ignoredisk --only-use=sda                                        #指定安裝到哪個硬盤
    bootloader --append="quiet crashkernel=auto" --location=mbr --boot-drive=sda     #指定在那個硬盤安裝 mbr 引導
    network  --bootproto=dhcp --device=eth0 --onboot=on         #指定網卡名稱以及啓動方式
    zerombr                                                                  #清空硬盤的 mbr 信息
    clearpart --all --initlabel                                           #清空硬盤所有分區
    part /boot --fstype="xfs" --ondisk=sda --size=200     #創建 boot 分區 指定大小爲 200MB
    part pv.156 --fstype="lvmpv" --ondisk=sda --size=1 --grow   #創建 pv 卷組,自動擴展到最大容量
    volgroup centos --pesize=4096 pv.156                     #創建 vg 指定 pesize 爲 4096 KB
    logvol swap  --fstype="swap" --size=2047 --name=swap --vgname=centos    #創建swap 分區 ,指定大小爲 2047 MB
    logvol /  --fstype="xfs" --vgname=centos --size=1 --grow   #創建 lvm  根分區   自動擴展到最大容量

    %packages                                                             #定製安裝爲 最小化安裝
    @^minimal
    @core
    chrony
    kexec-tools
    %end

  • 檢測 ks 文件是否有錯
  • ksvalidator /var/lib/cobbler/kickstarts/CentOS7.5.ks
  • 檢測 KS 文件是否能正常訪問


  • 新建一個虛擬機測試安裝,關閉 VMware Workstation 自帶的 VMnetDHCP 服務
  • 注意安裝 CentOS 7.X 的內存不能小於 2G ,否則會報錯


  • 添加新的安裝選項 Centos-6.9-x86_64

  • 掛載 Centos-6.9 光盤
  • mount /sr0 /mnt/cdrom && mount /sr1 /mnt/cdrom1

  • Centos 6.9 有2張 安裝DVD,導入DVD1 鏡像後,將第2張 DVD上的 Packages/ 文件夾下,所有文件拷貝到 /var/www/cobbler/ks_mirro/Centos-6.9-x86_64/Packages 下面即可
  • 首先導入第一張DVD鏡像
  • cobbler import --path=/mnt/cdrom --name=Centos-6.9 --arch=x86_64
  • 拷貝文件
  • \cp -r -a /mnt/cdrom1/Packages/* /var/www/cobbler/ks_mirror/Centos-6.9-x86_64/Packages/
  • 查看列表
  • cobbler profile list 

  • 總大小爲 5.8 G
  • 使用 cobbler profile list 命令查看列表有錯誤的話,可以刪除掉重新添加
  • cobbler profile remove --name=對應錯誤的名稱

  • 複製一份之前創建的 ks 自動應答文件,修改爲對應的啓動菜單名稱
  • \cp -a /var/lib/cobbler/kickstarts/CentOS7.5.ks /var/lib/cobbler/kickstarts/CentOS6.9.ks

  • 注意 CentOS 6 系列默認不支持 xfs 硬盤分區格式,要做適當修改

  • bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"      #這裏要改成 --driveorder

    network  --bootproto=dhcp --device=eth0 --onboot=on
    zerombr
    clearpart --all --initlabel
    part /boot --fstype=ext4 --size=200                                                                    #修改爲 ext4 ,更低版本CentOS的要修改成 ext3
    part pv.008002 --grow --size=1
    volgroup VolGroup --pesize=4096 pv.008002
    logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1        #修改爲 ext4 ,更低版本CentOS的要修改成 ext3
    logvol swap --name=lv_swap --vgname=VolGroup  --size=2048

    %packages                                                             #定製安裝那些包
    @base                                                                    #基本包組,相當於最小化安裝
    @core                                                                                                                                                                      
    %end


  • 檢測 ks 文件是否有錯
  • ksvalidator /var/lib/cobbler/kickstarts/CentOS6.9.ks

  • 將 Centos6.9.ks 文件關聯到 Centos-6.9-x86_64
  • cobbler profile list
  • 注意對應的名稱
  • cobbler profile edit --distro=Centos-6.9-x86_64 --name=Centos-6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS6.9.ks
  • cobbler profile report --name=Centos-6.9-x86_64

  • 重啓 cobblerd 服務
  • systemctl restart cobblerd
  • cobblerd sync


  • 打開剛纔新建的虛擬機進行測試安裝
  • 設置爲從網絡啓動

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章