1. 程式人生 > >Cobbler實現無人值守安裝系統

Cobbler實現無人值守安裝系統

kickstart cobbler 批量部署

防偽碼:沒有相當程度的孤獨是不可能有內心的平和。

1、概述

本文部分圖片源自網絡,侵刪。

1.1 介紹

官網地址

http://cobbler.github.io/

官網介紹:Cobbleris a Linux installation server that allows for rapid setup of networkinstallation environments. It glues together and automates many associatedLinux tasks so you do not have to hop between many various commands andapplications when deploying new systems, and, in some cases, changing existingones. Cobbler can help with provisioning, managing DNS and DHCP, packageupdates, power management, configuration management orchestration, and muchmore.

運維自動化包括標準化、工具化、Web化、服務化、智能化等幾個不同的層級,在一家規模稍大、擁有服務器上千臺甚至是幾萬臺的生產環境中,想要真正實現運維自動化,工具化系統安裝流程、統一系統安裝規範,是其中最不能忽略的重要環節。普通的自動化部署可以采用pxe+dhcp+tftp配合kickstart實現,但是面對多版本、多部署需求的情況下,這種普通的部署方式可能達不到我們的要求;這時候就需要借助cobbler開源自動化部署工具來實現。

Cobbler是一個Linux服務器安裝的服務(在經過調整也可以支持網絡安裝windows),用以自動化批量安裝服務器系統,是當前自動化運維環境中不可或缺的工具。該工具使用

python開發,小巧輕便(才15kpython代碼),使用簡單的命令即可完成PXE網絡安裝環境的配置,同時還可以管理DHCPDNSyum倉庫、構造系統ISO鏡像。

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

Cobbler是較早前的kickstart的升級版,優點是比較容易配置,還自帶web界面比較易於管理。

Cobbler內置了一個輕量級配置管理系統,但它也支持和其它配置管理系統集成,如Puppet,暫時不支持SaltStack

Cobbler集成的服務:

  • PXE服務支持

  • DHCP服務管理

  • DNS服務管理

    (可選bind,dnsmasq)

  • 電源管理

  • Kickstart服務支持

  • YUM倉庫管理

  • TFTP(PXE啟動時需要)

  • Apache(提供kickstart的安裝源,並提供定制化的kickstart配置)

1.1.1 PXE概述

首先,要自動安裝系統的機器,必須支持PXE,無論是有PXE的網卡或者芯片等(目前絕大部分的機器均支持)。

預啟動執行環境(Preboot eXecution EnvironmentPXE,也被稱為預執行環境)讓計算機通過網卡獨立地使用數據設備(如硬盤)或者安裝操作系統。PXE當初是作為Intel的有線管理體系的一部分,Intel Systemsoft1999920日公布其規格(版本2.1)。通過使用像網際協議(IP)、用戶數據報協議(UDP)、動態主機設定協定(DHCP)、小型文件傳輸協議(TFTP)等幾種網絡協議和全局唯一標識符(GUID)、通用網絡驅動接口(UNDI)、通用唯一識別碼(UUID)的概念並通過對客戶機(通過PXE自檢的電腦)固件擴展預設的API來實現目的。PXE 客戶機(client)這個術語是指機器在PXE啟動過程中的角色。一個PXE 客戶機(client)可以是一臺服務器、桌面級電腦、筆記本電腦或者其他裝有PXE啟動代碼的機器。

客戶機的固件為接受到可用的PXE啟動服務器,要在網絡中嘗試找出PXE重定向服務(DHCP代理)。在分析返回的包後,固件會向合適的啟動服務器詢問網絡自檢程序(NBP)的路徑,並且通過TFTP協議下載到電腦的內存中,有可能會去校驗它,最後執行它。當只有全部的PXE 客戶機(client)只使用一個NBP時,全部的PXE 客戶機可能會被指定是用BOOTP協議,從而不需要DHCP代理,但是仍然需要TFTP啟動服務。

PXE 協議大致上結合了DHCP和TFTP,雖然都有在兩者上面有改進。DHCP用於查找合適的啟動服務器,TFTP用於下載初始引導程序和附加文件。為了開始一個PXE自檢會話,PXE固件廣播一個帶有明確的PXE選項DHCPDISCOVER包(擴展DHCPDISCOVER)到67/UDP端口(DHCP服務器端口)。PXE選項是PXE固件有PXE能力的鑒定,但是會被一般的DHCP服務忽略。當固件受到從這樣的服務受到DHCPOFFER包時,它會通過要求其提供配置信息來自我配置。

PXE 重定向服務 DHCP代理) 收到一個 擴展DHCPDISCOVER 包時,它會通過發送一個帶有明確的PXE選項DHCPDISCOVER包到PXE客戶機的68/UDP端口 (DHCP 客戶機端口)來回答。一個擴展DHCPDISCOVER包主要包含:

  • 一個PXE發現控制領域,以決定是使用多播,廣播(網路)或單播來聯系PXE啟動服務器。

  • 一個列出可用的PXE啟動服務器類型的地址表。

  • 一個代表每個一個PXE啟動服務器類型的條目單。

  • 一個帶有帶有提示用戶按下哪一個鍵來看到啟動菜單的PXE啟動菜單。

  • 一個超過多長時間就啟動第一啟動菜單的超時數值。

一個DHCP代理服務可能在相同的主機上運行一個標準的DHCP服務器。盡管兩個服務不可以共享67/UDP 端口,DHCP代理服務在4011/UDP 端口上運行,要求從客戶端來的DHCPDISCOVER 包變成DHCPREQUEST 包。標準DHCP服務在其發送的DHCPOFFER 包中加入特殊的PXE 選項組合,這樣PXE客戶端知道可以在同一個主機的 4011/UDP 端口找到一個DHCP代理服務。

和一個正在啟動系統的啟動服務聯系必須有一個IP地址(可能來自DHCP服務)。通過多播或單播一個帶有特殊的PXE選項的 DHCPREQUEST (擴展DHCPREQUEST) 4011/UDP端口,或者廣播(網路)這種包到 67/UDP端口。這種包包含有PXE啟動服務類型和PXE啟動層,一個守護進程允許運行多個啟動服務類型。 一個擴展 DHCPREQUEST包可能是一個DHCPINFORM包。下面是PXE具體工作原理圖,

技術分享

簡單總結一下:

  • PXE Client發送廣播包請求DHCP分配IP地址DHCP

  • Server回復請求,給出IP地址以及Boot

  • Server的地址PXE下載引導文件執行引導程序;

1.1.2 KickStart概述

KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工幹預填寫的各種參數,並生成一個名為ks.cfg的文件;在其後的安裝過程中(不只局限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找KickStart生成的文件,當找到合適的參數時,就采用找到的參數,當沒有找到合適的參數時,才需要安裝者手工幹預。這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg(註:Cobbler一般使用.ks或.cfg文件)文件,然後去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。

工作原理大致如下:

技術分享

cobbler是實現自動化安裝操作系統的工具。它解決了PXE安裝時的弊端(只能實現單一操作系統的安裝)。實際上,cobbler是對PXE二次封裝可實現多版本,多環境操作系統安裝的高級抽象工具。

技術分享

1.1.3 Cobbler概念和命令詳解

概念

說明

發行版

表示一個操作系統。它承載了內核和 initrd 的信息,以及內核參數等其他數據。

配置文件

包含一個發行版、一個 kickstart 文件以及可能的存儲庫,還包含更多特定的內核參數等其他數據。

系統

表示要配給的機器。它包含一個配置文件或一個鏡像,還包含 IP MAC 地址、電源管理(地址、憑據、類型)以及更為專業的數據等信息。

存儲庫

保存一個 yum rsync 存儲庫的鏡像信息。

鏡像

可替換一個包含不屬於此類別的文件的發行版對象(例如,無法分為內核和 initrd 的對象)。

相關命令詳解

命令名稱

命令用途

cobbler check

檢查cobbler配置

cobbler list

列出所有的cobbler元素

cobbler report

列出元素的詳細信息

cobbler distro

查看導入的發行版系統信息

cobbler system

查看添加的系統信息

cobbler profile

查看配置信息

cobbler sync

同步Cobbler配置,更改配置最好都要執行下

cobbler reposync

同步yum倉庫

cobbler distro add --name=string--kernel=path --initrd=path

[--kopts=string] [--kopts-post=string] [--ksmeta=string]

[--arch=x86|x86_64|ia64] [--breed=redhat|debian|suse]

[--template-files=string]


2、部署測試

2.1 環境準備

系統版本

CentOS 6.5 X64 Minimal

主機IP

192.168.10.5

網絡環境

VMware NAT,靜態,網關192.168.10.2

系統環境

硬盤250G,關閉SElinuxiptables,配置阿裏雲yum

安裝epel

yum install -y http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm


2.2 cobbler

yum安裝CobblerDHCPhttpd等相關工具:

yum -y install cobbler cobbler-web dhcptftp-server pykickstart httpd

部分配置文件:

/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日誌

2.3 配置Cobbler

啟動httpd服務:

[[email protected]~]#/etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: apr_sockaddr_info_get() failedfor Cobbler
httpd: Could not reliably determine the server‘s fullyqualified domain name, using 127.0.0.1 for ServerName
                                                          [  OK  ]

啟動Cobbler:

[[email protected]~]#/etc/init.d/cobblerd start
Starting cobbler daemon:                                   [  OK  ]


檢查Cobbler的配置:

[[email protected]~]#cobbler check
Traceback (most recent call last):
  File"/usr/bin/cobbler", line 36, in <module>
   sys.exit(app.main())
  File"/usr/lib/python2.6/site-packages/cobbler/cli.py", line 657, in main
    rc =cli.run(sys.argv)
  File"/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run
   self.token         =self.remote.login("", self.shared_secret)
  File "/usr/lib64/python2.6/xmlrpclib.py",line 1199, in __call__
    returnself.__send(self.__name, args)
  File"/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
   verbose=self.__verbose
  File"/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request
    returnself._parse_response(h.getfile(), sock)
  File"/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
    returnu.close()
  File"/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
    raiseFault(**self._stack[0])
xmlrpclib.Fault: <Fault 1: "<class‘cobbler.cexceptions.CX‘>:‘login failed‘">


解決以上問題:

[[email protected]~]#/etc/init.d/cobblerd restart
Stopping cobbler daemon:                                   [  OK  ]
Starting cobbler daemon:                                   [  OK  ]
[[email protected]~]#cobbler get-loaders
task started: 2016-09-03_053311_get_loaders
task started (id=Download Bootloader Content, time=SatSep  3 05:33:11 2016)
downloading http://cobbler.github.io/loaders/README to/var/lib/cobbler/loaders/README
downloadinghttp://cobbler.github.io/loaders/COPYING.elilo to/var/lib/cobbler/loaders/COPYING.elilo
downloadinghttp://cobbler.github.io/loaders/COPYING.yaboot to/var/lib/cobbler/loaders/COPYING.yaboot
downloading http://cobbler.github.io/loaders/COPYING.syslinuxto /var/lib/cobbler/loaders/COPYING.syslinux
downloadinghttp://cobbler.github.io/loaders/elilo-3.8-ia64.efi to/var/lib/cobbler/loaders/elilo-ia64.efi
downloadinghttp://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloadinghttp://cobbler.github.io/loaders/pxelinux.0-3.86 to/var/lib/cobbler/loaders/pxelinux.0
downloadinghttp://cobbler.github.io/loaders/menu.c32-3.86 to/var/lib/cobbler/loaders/menu.c32
downloadinghttp://cobbler.github.io/loaders/grub-0.97-x86.efi to/var/lib/cobbler/loaders/grub-x86.efi
downloadinghttp://cobbler.github.io/loaders/grub-0.97-x86_64.efi to/var/lib/cobbler/loaders/grub-x86_64.efi
*** TASK COMPLETE ***

再次檢查:

[[email protected]~]#cobbler check
The following are potential configuration items thatyou may want to fix:

1 : The ‘server‘ field in /etc/cobbler/settings mustbe set to something other than localhost, or kickstarting features will notwork.  This should be a resolvablehostname or IP for the boot server as reachable by all machines that will useit.
2 : For PXE to be functional, the ‘next_server‘ fieldin /etc/cobbler/settings must be set to something other than 127.0.0.1, andshould match the IP of the boot server on the PXE network.
3 : change ‘disable‘ to ‘no‘ in /etc/xinetd.d/tftp
4 : change ‘disable‘ to ‘no‘ in /etc/xinetd.d/rsync
5 : file /etc/xinetd.d/rsync does not exist
6 : debmirror package is not installed, it will berequired to manage debian deployments and repositories
7 : The default password used by the sample templatesfor newly installed machines (default_password_crypted in/etc/cobbler/settings) is still set to ‘cobbler‘ and should be changed, try:"openssl passwd -1 -salt ‘random-phrase-here‘ ‘your-password-here‘"to generate new one
8 : fencing tools were not found, and are required touse the (optional) power management features. install cman or fence-agents touse them

Restart cobblerd and then run ‘cobbler sync‘ to applychanges.


先備份配置文件:

[[email protected]~]#cp /etc/cobbler/settings /etc/cobbler/settings.bak

設置Cobbler服務器IP:

[[email protected]~]#sed -i ‘s/server: 127.0.0.1/server: 192.168.10.5/‘/etc/cobbler/settings

設置next_server,作用和kickstart的類似,tftp的ip:

[[email protected]~]#sed -i ‘s/next_server: 127.0.0.1/next_server:192.168.10.5/‘ /etc/cobbler/settings

用Cobbler管理DHCP:

[[email protected]~]#sed -i ‘s/manage_dhcp:0/manage_dhcp: 1/‘ /etc/cobbler/settings

防止循環裝系統,適用於服務器第一啟動項是PXE啟動:

[[email protected]~]#sed -i ‘s/pxe_just_once: 0/pxe_just_once: 1/‘ /etc/cobbler/settings

設置新裝系統的默認root密碼123456。random-phrase-here為幹擾碼,可以自行設定:

[[email protected] ~]#openssl passwd -1 -salt ‘test‘ ‘123456‘
$1$test$at615QShYKduQlx5z9Zm7/
[[email protected] ~]#vim /etc/cobbler/settings
default_password_crypted: "$1$test$at615QShYKduQlx5z9Zm7/"

開啟rsync,把disable的yes改為no:

[[email protected] ~]#vim /etc/xinetd.d/rsync
servicersync
{
       disable=no
       flags           =IPv6
       socket_type     =stream
       wait            =no
       user            =root
       server          =/usr/bin/rsync
       server_args     =--daemon
       log_on_failure  +=USERID
}
[[email protected]~]#/etc/init.d/xinetd restart
Stopping xinetd:                                           [FAILED]
Starting xinetd:                                           [  OK  ]

配置DHCP模板:

[[email protected] ~]#vim /etc/cobbler/dhcp.template
subnet 192.168.10.0 netmask 255.255.255.0 {
     optionrouters             192.168.10.2;
     optiondomain-name-servers 114.114.114.114;
     optionsubnet-mask         255.255.255.0;
     rangedynamic-bootp        192.168.10.60192.168.10.100;
    default-lease-time         21600;
    max-lease-time             43200;
    next-server               $next_server;

配置詳解:

subnet192.168.10.0 netmask 255.255.255.0:分配的ip地址所在的網段為192.168.10.0/24。
optionrouters:為客戶端設定默認網關。
optiondomain-name-servers:客戶端指明DNS服務器的IP地址。
optionsubnet-mask:客戶端設定子網掩碼。
range dynamic-bootp:分配的ip地址範圍

同步Cobbler配置:

[[email protected]~]#cobbler sync
task started: 2016-09-03_063123_sync
task started (id=Sync, time=Sat Sep  3 06:31:23 2016)
running pre-sync triggers
cleaning trees
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi-> /var/lib/tftpboot/grub/grub-x86.efi
trying hardlink/var/lib/cobbler/loaders/grub-x86_64.efi ->/var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
cleaning link caches
running post-sync triggers
running python triggers from/var/lib/cobbler/triggers/sync/post/*
running python triggercobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout: 
received on stderr: 
running: service dhcpd restart
received on stdout: Starting dhcpd: [  OK  ]

received on stderr: 
running shell triggers from/var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from/var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***

設置開機啟動:

[[email protected]~]#chkconfig httpd on
[[email protected]~]#chkconfig xinetd on
[[email protected]~]#chkconfig cobblerd on
[[email protected]~]#/etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: apr_sockaddr_info_get() failedfor Cobbler
httpd: Could not reliably determine the server‘s fullyqualified domain name, using 127.0.0.1 for ServerName
                                                          [  OK  ]
[[email protected]~]#/etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[[email protected]~]#/etc/init.d/cobblerd restart
Stopping cobbler daemon:                                   [  OK  ]
Starting cobbler daemon:                                   [  OK  ]
[[email protected]~]#/etc/init.d/dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:

編寫Cobbler相關服務啟動腳本:

[[email protected] ~]#vim /etc/init.d/cobbler
#!/bin/bash
# chkconfig: 345 80 90
# description:cobbler
case\$1 in
  start)
   /etc/init.d/httpd start
   /etc/init.d/xinetd start
   /etc/init.d/dhcpd start
   /etc/init.d/cobblerd start
    ;;
  stop)
   /etc/init.d/httpd stop
   /etc/init.d/xinetd stop
   /etc/init.d/dhcpd stop
   /etc/init.d/cobblerd stop
    ;;
  restart)
   /etc/init.d/httpd restart
   /etc/init.d/xinetd restart
   /etc/init.d/dhcpd restart
   /etc/init.d/cobblerd restart
    ;;
  status)
   /etc/init.d/httpd status
   /etc/init.d/xinetd status
   /etc/init.d/dhcpd status
    /etc/init.d/cobblerdstatus
    ;;
  sync)
    cobbler sync
    ;;
  *)
    echo"Inputerror,please in put ‘start|stop|restart|status|sync‘!"
    exit2
    ;;
esac
[[email protected]~]#chmod +x /etc/init.d/cobbler

2.4 導入鏡像

在虛擬機上掛載CentOS6.5的鏡像:

技術分享

[[email protected]~]#mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected,mounting read-only
[[email protected]~]#cobbler import --path=/mnt/ --name=CentOS-6.5-x86_64--arch=x86_64
task started: 2016-09-03_065512_import
task started (id=Media import, time=Sat Sep  3 06:55:12 2016)
Found a candidate signature: breed=redhat,version=rhel6
Found a matching signature: breed=redhat,version=rhel6
Adding distros from path/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64:
creating new distro: CentOS-6.5-x86_64
trying symlink:/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64 ->/var/www/cobbler/links/CentOS-6.5-x86_64
creating new profile: CentOS-6.5-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
starting descent into /var/www/cobbler/ks_mirror/CentOS-6.5-x86_64for CentOS-6.5-x86_64
processing repo at :/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64
need to process repo/comps:/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64
looking for/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/repodata/*comps*.xml
Keeping repodata as-is:/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/repodata
*** TASK COMPLETE ***

查看鏡像列表:

[[email protected]~]#cobbler distro list
  CentOS-6.5-x86_64

2.5 配置ks文件

創建CentOS6.5的ks文件:

[[email protected] ~]#cd /var/lib/cobbler/kickstarts/
[[email protected] kickstarts]#ls
default.ks    install_profiles sample_autoyast.xml sample_esxi4.ks  sample_old.seed
esxi4-ks.cfg  legacy.ks         sample_end.ks        sample_esxi5.ks  sample.seed
esxi5-ks.cfg  pxerescue.ks      sample_esx4.ks       sample.ks
[[email protected] kickstarts]#vim CentOS-6.5-x86_64.ks
 
# Cobbler for Kickstart Configurator for CentOS 6.5 byhdj
#告知安裝程序,這是一次全新安裝,而不是升級upgrade。
install

# 這些$開頭的變量都是調用配置文件裏的值。
url --url=$tree
#使用文本模式安裝。
text

#設置在安裝過程中使用的語言以及系統的缺省語言。
lang en_US.UTF-8
#設置系統鍵盤類型。
keyboard us

#清除mbr引導信息。
zerombr
#系統引導相關配置。
bootloader --location=mbr --driveorder=sda --append="crashkernel=autorhgb quiet"

# Network information
$SNIPPET(‘network_config‘)
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel

# CentOS6系統磁盤默認格式ext4。
#--grow告訴分區使用所有可用空間(若有),或使用設置的最大值。
#以MB為單位的分區最小值
part /boot --fstype ext4 --size=200
part swap --size=2048
part / --fstype ext4 --size=1 --grow
firstboot --disable
#關閉selinux。
selinux --disabled
#關閉防火墻。
firewall --disabled
#設置日誌級別。
logging --level=info
#設定安裝完成後重啟,此選項必須存在。
reboot
%pre
$SNIPPET(‘log_ks_pre‘)
$SNIPPET(‘kickstart_start‘)
$SNIPPET(‘pre_install_network_config‘)
# Enable installation monitoring
$SNIPPET(‘pre_anamon‘)
%end

#軟件包
%packages
@Base
@Compatibility libraries
@Debugging Tools
@Development tools
@Dial-up Networking Support
@Hardware monitoring utilities
@Performance Tools
tree
nmap
sysstat
lrzsz
dos2unix
telnet
iptraf
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
screen
%end
%post
%end

查看安裝鏡像文件信息:

[[email protected]]#cobbler list
distros:
  CentOS-6.5-x86_64

profiles:
  CentOS-6.5-x86_64

systems:

repos:

images:

mgmtclasses:

packages:

files:
[[email protected]]#cobbler distro report --name=CentOS-6.5-x86_64
Name                           : CentOS-6.5-x86_64
Architecture                   : x86_64
TFTP Boot Files                : {}
Breed                          : redhat
Comment                        : 
Fetchable Files                : {}
Initrd                        :/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/initrd.img
Kernel                         :/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/vmlinuz
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Kickstart Metadata             : {‘tree‘:‘http://@@[email protected]@/cblr/links/CentOS-6.5-x86_64‘}
Management Classes             : []
OS Version                     : rhel6
Owners                         : [‘admin‘]
Red Hat Management Key         : <<inherit>>
Red Hat Management Server      : <<inherit>>
Template Files                 : {}

同步cobbler:

[[email protected]]#cobbler sync
task started: 2016-09-03_210603_sync
task started (id=Sync, time=Sat Sep  3 21:06:03 2016)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS-6.5-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS-6.5-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi-> /var/lib/tftpboot/grub/grub-x86.efi
trying hardlink/var/lib/cobbler/loaders/grub-x86_64.efi ->/var/lib/tftpboot/grub/grub-x86_64.efi
copying distros to tftpboot
copying files for distro: CentOS-6.5-x86_64
trying hardlink/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS-6.5-x86_64/vmlinuz
trying hardlink/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/initrd.img ->/var/lib/tftpboot/images/CentOS-6.5-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS-6.5-x86_64
trying hardlink/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/vmlinuz ->/var/www/cobbler/images/CentOS-6.5-x86_64/vmlinuz
trying hardlink/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/images/pxeboot/initrd.img ->/var/www/cobbler/images/CentOS-6.5-x86_64/initrd.img
Writing template files for CentOS-6.5-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS-6.5-x86_64
cleaning link caches
running post-sync triggers
running python triggers from/var/lib/cobbler/triggers/sync/post/*
running python triggercobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout: 
received on stderr: 
running: service dhcpd restart
received on stdout: Shutting down dhcpd: [  OK  ]
Starting dhcpd: [ OK  ]

received on stderr: 
running shell triggers from/var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from/var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***


3、驗證

創建一臺空虛擬機,復制其MAC地址:

技術分享

--name 自定義,但不能重復:

[[email protected]]#cobbler system add --name=test01--mac=00:50:56:37:C5:F7 --profile=CentOS-6.5-x86_64 --ip-address=192.168.10.60--subnet=255.255.255.0 --gateway=192.168.10.2 --interface=eth0 --static=1--hostname=test01 --name-servers="114.114.114.114"


開啟空虛擬機電源,系統開始自動安裝:

技術分享


安裝完成:

技術分享


4、總結

本文只實驗了一小部分功能,更多高級功能和特性待續。

本文出自 “簡明Linux” 博客,請務必保留此出處http://easylinux.blog.51cto.com/9732761/1962258

Cobbler實現無人值守安裝系統