DHCP&PXE&Cobbler簡單實現

DHCP&PXE&Cobbler

1、DHCP簡介

(一)DHCP工做流程

DHCP: Dynamic Host Configuration Protocol 簡而言之動態主機配置協議,即然英文沒有說是IP配置協議,那麼就是說除了給客戶機配置IP外它還能幹點兒別的。html

下面來看看一個簡單的流程說明linux

  • 第一步,客戶端啓動後暫未得到IP地址,向所在局域網廣播一個DHCP discover報文。git

  • 第二步,本地局域網中的DHCP服務器(可能不止一臺)收到客戶端的discover報文後,向本地網絡廣播(爲了讓其餘服務器也收到)發送DHCP offer報文,包含服務器從本身掌管的IP地址範圍內取出的一個IP。github

  • 第三步,客戶端收到服務器的offer後,(若是有多臺服務器發送了offer,固然是採用最早到達的)。而後客戶端再向本地局域網廣播(讓全部服務器收到它已經擬採用某個IP)一個DHCP request報文。web

  • 第四步,提供IP的服務器收到客戶端發來的request報文後,再次向本地網絡廣播發送acknowledgement報文,即ACK確認。centos

  • DHCP協議報文格式以下:bash

    dhcp報文

    • Op: 報文類型,分爲 兩大類: Request(1) 和 Reply(2)
    • HW Type: 硬件類型,通常是以太網:1
    • HW Len: 硬件地址長度,單位字節。對應以太網:6(mac地址長度爲6字節48bit)
    • **Transaction ID** :事務ID,隨機數,由客戶端生成,服務器Reply時,會把Request中的Transaction拷貝到Reply報文中。
    • Secs: 距離第一次發送IP請求或Renew請求過去的秒數
    • **Flags** :標誌位,目前僅第一個bit有使用,置1 標明廣播
    • **Client IP Address** :當前客戶端的IP地址,客戶端初始時沒有IP地址,則置0,即0.0.0.0
    • Your IP Address: 服務器想客戶端提供IP地址時,會把IP地址填入本字段
    • **Next Server IP Address**:客戶端獲取網絡引導文件的服務器,好比TFTP的IP地址
    • Gateway (Relay) IP Address: 網關(中繼)IP地址,有DHCP 中繼器在轉發DHCP報文的時候填入
    • Server Name: Server名字,有64bytes,通常不使用,填充爲0
    • Boot File name: 網絡啓動的引導文件名
    • Option: 選項,不定長度。 經常使用的好比DHCP Message Type(discover、request、offer、ack)
(二)DHCP主要配置參數
  • 配置文件路徑/etc/dhcp/dhcpd.conf服務器

  • 主配置參數:網絡

    option domain-name "wind.com"; #域名 option domain-name-servers ns1.wind.com; #DNS服務器 default-lease-time 600; #默認DHCP租約時間 max-lease-time 7200; #最大租約時間,超事後不可續約必須從新獲取IP

    全局參數會被subnet的定義覆蓋,就是說越小範圍定義的參數優先起效。因此你能夠只定義一個subnet配置段就好。less

    subnet 192.168.10.0 netmask 255.255.255.0 { #定義子網網絡號,掩碼 range 192.168.10.100 192.168.10.200; #本子網可分配的IP範圍 option routers 192.168.10.1; #網關 option broadcast-address 192.168.10.255; #廣播地址 default-lease-time 600; max-lease-time 7200; }

    另外有保留地址的配置段,能夠給你局域網預留一些服務器的IP,好比,DNS、FTP服務器等等

    host fantasia { #host後面的名字隨便取,在配置文件中不重名便可 hardware ethernet 0:0:c0:5d:bd:95; #預留IP對應的設備mac fixed-address fantasia.fugue.com; }

2、PXE環境配置

(一)PXE簡介

PXE(preboot execute environment,預啓動執行環境)是由Intel公司開發的最新技術,工做於Client/Server的網絡模式,支持工做站經過網絡從遠端服務器下載映像,並由此支持經過網絡啓動操做系統,在啓動過程當中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)協議下載一個啓動軟件包(CentOS中是pxelinux.0 )到本機內存中執行,由這個啓動軟件包完成終端(客戶端)基本軟件設置,從而引導預先安裝在服務器中的終端操做系統。

PXE+Kickstart實現自動安裝系統的流程

pxe-kickstart

  1. Client向PXE Server上的DHCP發送IP地址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC地址),若是合法則返回Client的IP地址,同時將啓動文件pxelinux.0位於的TFTP服務器IP地址一併傳送給Client
  2. Client向PXE Server上的TFTP發送獲取網絡引導啓動文件pxelinux.0請求消息,TFTP接收到消息以後再向Client發送pxelinux.0
  3. Client執行接收到的pxelinux.0文件
  4. Client向TFTP發送Linux內核請求信息,TFTP接收到消息以後將內核文件發送給Client
  5. Client向TFTP發送根文件請求信息,TFTP接收到消息以後返回Linux根文件系統
  6. Client啓動Linux內核,此處會從新經過DHCP獲取IP,由於以前的IP是網卡的而不是內核的。
  7. Client向TFTP Server發送針對本機的Kickstart文件(在TFTP 服務的pxelinux.cfg目錄下),TFTP將配置文件發回Client,繼而Client根據配置文件執行後續操做。
  8. Client下載軟件包安裝源文件,讀取自動化安裝腳本

PXE僅支持一個版本的系統安裝

(二)TFTP配置

CentOS7.4的話先安裝三個軟件包

yum -y install syslinux xinetd.x86_64 tftp-server.x86_64

再systemctl start tftp.socket啓動tftp

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

3、Cobbler安裝與配置

簡而言之,Cobbler是爲了進行多版本系統批量自動安裝的管理工具。

Cobbler的配置結構基於一組註冊的對象。每一個對象表示一個與另外一個實體相關聯的實體(該對象指向另外一個對象,或者另外一個對象指向該對象)。當一個對象指向另外一個對象時,它就繼承了被指向對象的數據,並可覆蓋或添加更多特定信息。

Distros(發行版):表示一個操做系統,它承載了內核和initrd的信息,以及內核參數等其餘數據。 Profile(配置文件):包含一個發行版、一個kickstart文件以及可能的存儲庫,還包含更多特定的內核參數等其餘數據。 Systems(系統):表示須要額外配置給客戶機的系統參數。它包含一個配置文件或一個鏡像,還包含IP和MAC地址、電源管理(地址、憑據、類型)、(網卡綁定、設置valn等)。 Repository(鏡像):保存一個yum或rsync存儲庫的鏡像信息。 Image(存儲庫):可替換一個包含不屬於此類比的額文件的發行版對象(例如,沒法分爲內核和initrd的對象)。

各對象的關係圖以下:

cobbler-architecture

(一)主配置文件

yum install -y cobbler #epel源安裝cobbler

  • /etc/cobbler/settings #cobbler自身的相關配置

    • default_password_crypted: "11mF86/UHC$WvcIcX2t6crBz2onWxyac."

      這個參數是指定批量安裝客戶機系統時指定初始的root密碼的密文

      一個簡單的辦法是,直接複製/etc/shadow中的用戶密碼密文進行替換。

      或者採用以下方法生成:

      openssl passwd -1 -salt $(openssl rand -hex 4) abc123 #最後是設定的密碼

    • default_kickstart: /var/lib/cobbler/kickstarts/default.ks

      默認的kickstart文件路徑,可直接修改默認文件達成本身的需求,或者修改cobbler的profile指定一個或者多個kickstart文件。

    • server ip 必須與cobbler服務器本機IP一致 ,否則cobbler相關命令會卡死。並且報錯倒是httpd未啓動或未代理cobbler頁面或防火牆未關閉。

  • /etc/cobbler/modules.conf

    可由cobbler託管的服務配置文件,RSYNC、DHCP、TFTP、DNS;及web訪問驗證方式配置。

    • [authentication]

      module = authn_configfile #配置cobbler-web訪問時的驗證方式

      經常使用選項是authn_pam(pam模塊系統用戶驗證)、authn_configfile

      • 使用authn_pam模塊認證cobbler_web用戶

        1. 添加系統用戶,用戶名和密碼按需設定便可,然後將用戶名添加至cobbler_web的admin組中。

        2. 修改/etc/cobbler/users.conf文件,將用戶名添加爲admin參數的值便可,以下所示。

          [admins]

          admin = "USER"

      • 使用authn_configfile模塊認證cobbler_web用戶

        建立其認證文件/etc/cobbler/users.digest,並添加所需的用戶 。cobbler_web的realm只能爲Cobbler。 以下所示:

        htdigest -c /etc/cobbler/users.digest Cobbler cblradmin

(二)配置Cobbler
  • 管理distro

    • 配置Cobbler使之可用的第一步爲定義distro,能夠經過爲其指定外部的安裝引導內核及ramdisk文件的方式實現。若是已經有完整的系統安裝樹(如CentOS6的安裝鏡像)則推薦使用import直接導入的方式進行。

      $ cobbler import --name=centos7.4 --arch=x86_64 --path=/mnt

      The --arch option need not be specified, as it will normally be auto-detected. We're doing so in this example in order to prevent multiple architectures from being found (Fedora ships i386 packages on the full DVD, and cobbler will create both x86_64 and i386 distros by default).

      不須要指定 arch 選項, 由於它一般會自動檢測到。在這個例子中這樣作是爲了防止發現多個體繫結構 (例如Fedora在full DVD 中支持i386與x86_64 兩個版本, 而Cobbler將在默認狀況下建立 x86_64 和 i386 發行版本)。

      **import會自動將光盤文件複製到/var/www/下自動建立的cobbler目錄 **

      若是有kickstart文件,也可使用「--kickstart=/path/to/kickstart_file」一併進行導入 ,不指定此選項,Cobbler也將在生成的profile中引用Cobbler默認的最小化安裝kickstart文件 /var/lib/cobbler/kickstarts/default.ks

    • 可以使用「cobbler distro list」列出全部的distro。

  • 管理profile

    cobbler使用profile來爲特定的需求類別提供所須要安裝配置,即在distro的基礎上經過提供kickstart文件來生成一個特定的系統安裝配置。distro的profile能夠出如今PXE的引導菜單中做爲安裝的選擇之一。

    # cobbler profile add --name=centos-6.5-x86_64-basic --distro=centos-6.5-x86_64 --kickstart=/tmp/centos-6.5-x86_64.cfg

    可以使用「cobbler profile list」查看已經建立的profile。

    運行cobbler sync 來同步配置,其實profile就是對/var/lib/tftpboot/pxelinux.cfg/default 文件中添加或者修改一個lable段

    DEFAULT menu PROMPT 0 MENU TITLE Cobbler | http://cobbler.github.io/ #安裝版本選擇菜單的標題能夠修改,可是每次同步cobbler設置會覆蓋你的修改 TIMEOUT 200 #超時時間,查了官方文檔in units of 1/10 s. 也就是20s,依須要修改;若是你敲任意鍵將中止計時 TOTALTIMEOUT 6000 #此超時是不論用戶是否敲鍵盤超時都將執行下一步操做 即 # Wait 20 seconds unless the user types something, but # always boot after 10 minutes. ONTIMEOUT local #設置在超時時調用的命令行 (一般引用標籤)。若是未指定, 則使用 UI (若是存在) 或默認值。 LABEL local MENU LABEL (local) MENU DEFAULT #默認條目,若是你添加了條目要實現自動安裝系統時將此項剪切過去 LOCALBOOT -1 MENU end
  • system用的很少,由於咱們有更好的選擇,ansible與puppet。

    cobbler安裝系統的流程以下:

    instsys

相關文章
相關標籤/搜索