20170916 運(yùn)維自動(dòng)化之系統(tǒng)安裝(二)

  • DHCP服務(wù)
  • DHCP實(shí)現(xiàn)
  • PXE(Preboot Excution Environment) 預(yù)啟動(dòng)執(zhí)行環(huán)境
  • Cobbler

一胆数、DHCP服務(wù)

  • DHCP (Dynamic Host Configuration Protocol)
    動(dòng)態(tài)主機(jī)配置協(xié)議赶么,是一種局域網(wǎng)協(xié)議荣堰,屬于UDP協(xié)議

  • 應(yīng)用:為局域網(wǎng)內(nèi)的主機(jī)分配ip地址地沮,同時(shí)也作為內(nèi)網(wǎng)的管理手段

  • 使用場(chǎng)景:自動(dòng)化安裝系統(tǒng)攀例,解決ipv4地址不足的問題

  • DHCP報(bào)文:共有八種報(bào)文

    • DHCP DISCOVER:客戶端到服務(wù)器
    • DHCP OFFER :服務(wù)器到客戶端
    • DHCP REQUEST:客戶端到服務(wù)器
    • DHCP ACK :服務(wù)器到客戶端
    • DHCP NAK:服務(wù)器到客戶端,通知用戶無法分配合適的IP地址
    • DHCP DECLINE :客戶端到服務(wù)器镰禾,指示地址已被使用
    • DHCP RELEASE:客戶端到服務(wù)器皿曲,放棄網(wǎng)絡(luò)地址和取消剩余的租約時(shí)間
    • DHCP INFORM:客戶端到服務(wù)器,客戶端如果需要從DHCP服務(wù)器端獲取更為詳細(xì)的配置信息,則發(fā)送Inform報(bào)文向服務(wù)器進(jìn)行請(qǐng)求吴侦,極少用到
  • 續(xù)租:

    • 50% :租賃時(shí)間達(dá)到50%時(shí)續(xù)租屋休,向DHCP服務(wù)器發(fā)送新的DHCP REQUEST請(qǐng)求。如果dhcp服務(wù)沒有拒絕的理由备韧,則回應(yīng)DHCP ACK信息博投。當(dāng)DHCP客戶端收到該應(yīng)答信息后,就重新開始新的租用周期
    • 87.5%:如果之前DHCP Server沒有回應(yīng)續(xù)租請(qǐng)求盯蝴,等到租約期的7/8時(shí)毅哗,主機(jī)會(huì)再發(fā)送一次廣播請(qǐng)求

*DHCP服務(wù)必須基于本地,

  • DHCP服務(wù)器一般來說應(yīng)該與需要DHCP服務(wù)的客戶端處于同一個(gè)網(wǎng)段中

  • 這是因?yàn)镈HCP服務(wù)過程基于廣播捧挺,而廣播只能在同一個(gè)網(wǎng)段內(nèi)傳送

  • 實(shí)現(xiàn)跨網(wǎng)段的DHCP服務(wù)

    • 需要在客戶機(jī)網(wǎng)段指定一臺(tái)代理(dhcrelay:中繼)負(fù)責(zé)客戶機(jī)與另一個(gè)網(wǎng)段的DHCP服務(wù)器的通信虑绵,實(shí)現(xiàn)IP地址的分配
    • 符合RFC 1542 Compliant Routers標(biāo)準(zhǔn)的路由器可以直接實(shí)現(xiàn)中繼的功能

二、DHCP實(shí)現(xiàn)

  • Linux DHCP協(xié)議的實(shí)現(xiàn)程序:dhcp, dnsmasq(包含dhcp, dns功能)

  • 端口:
    dhcp_server: 67/udp
    dhcp_client: 68/udp

  • 配置DHCP服務(wù)器端

    • DHCP服務(wù)的配置文件位于:/etc/dhcp/dhcpd.conf闽烙,打開文件后如下圖:
    • 提示模板文件/usr/share/doc/dhcp*/dhcpd.conf.sample和幫助參考位置:man 5 dhcpd.conf

    • 直接賦值模板文件覆蓋配置文件翅睛,在模板基礎(chǔ)上修改配置
      cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

    • 修改配置文件:vim /etc/dhcp/dhcpd.conf
      核心配置內(nèi)容包含在subnet條目中,這里的配置屬于全局配置
      基本格式如下:
    subnet SUBNET_IP netmask NETMASK_IP {
      range START_IP END_START;
      其余設(shè)置項(xiàng)
    }
    
    • 例如:DHCP服務(wù)器本機(jī)IP為192.168.136.229黑竞,子網(wǎng)掩碼:225.225.225.0捕发,分配的地址庫(kù)范圍:192.168.136.10-192.168.136.30,則配置文件格式如下:
    subnet 192.168.136.0 netmask 225.225.225.0 {
      range 192.168.136.10 192.136.136.30
    }
    
    • 配置好后很魂,啟動(dòng)dhcp服務(wù)service dhcpd start扎酷,在另一臺(tái)同網(wǎng)段主機(jī)上可以看到被分配的ip地址,從192.168.136.10/24開始分配
    • 可以查看/var/lib/dhcpd/dhcpd.leases文件內(nèi)容遏匆,查詢DHCP服務(wù)器地址分配記錄
  • 其它配置選項(xiàng):
    filename:指明引導(dǎo)文件名稱(用于網(wǎng)絡(luò)安裝系統(tǒng))
    next-server:提供引導(dǎo)文件的服務(wù)器IP地址(用于網(wǎng)絡(luò)安裝系統(tǒng))

  • 檢查配置文件語(yǔ)法
    service dhcpd configtest

  • DHCP客戶端(dhclient)
    自動(dòng)獲取的IP信息文件:/var/lib/dhclient目錄下法挨,可以看到被分配的地址谁榜、DHCP服務(wù)器、分配的租期時(shí)間等信息

三凡纳、PXE(Preboot Excution Environment) 預(yù)啟動(dòng)執(zhí)行環(huán)境

(一)簡(jiǎn)介

  • 基于C/S架構(gòu)設(shè)計(jì)
  • 支持遠(yuǎn)程主機(jī)通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像窃植,并由此支持通過網(wǎng)絡(luò)啟動(dòng)操作系統(tǒng)

(二)工作原理

  • Client向PXE Server上的DHCP發(fā)送IP地址請(qǐng)求消息,DHCP檢測(cè)Client是否合法(主要是檢測(cè)Client的網(wǎng)卡MAC地址)荐糜,如果合法則返回Client的IP地址巷怜,同時(shí)將啟動(dòng)文件pxelinux.0的位置信息一并傳送給Client
  • Client向PXE Server上的TFTP發(fā)送獲取pxelinux.0請(qǐng)求消息,TFTP接收到消息之后再向Client發(fā)送pxelinux.0大小信息暴氏,試探Client是否滿意延塑,當(dāng)TFTP收到Client發(fā)回的同意大小信息之后,正式向Client發(fā)送pxelinux.0
  • Client執(zhí)行接收到的pxelinux.0文件
  • Client向TFTP Server發(fā)送針對(duì)本機(jī)的配置信息文件(在TFTP 服務(wù)的pxelinux.cfg目錄下)偏序,TFTP將配置文件發(fā)回Client页畦,繼而Client根據(jù)配置文件執(zhí)行后續(xù)操作。
  • Client向TFTP發(fā)送Linux內(nèi)核請(qǐng)求信息研儒,TFTP接收到消息之后將內(nèi)核文件發(fā)送給Client
  • Client向TFTP發(fā)送根文件請(qǐng)求信息豫缨,TFTP接收到消息之后返回Linux根文件系統(tǒng)
  • Client啟動(dòng)Linux內(nèi)核
  • Client下載安裝源文件,讀取自動(dòng)化安裝腳本

(三)PXE自動(dòng)化安裝CentOS 7(CentOS7作為HTTP端朵、DHCP好芭、TFTP服務(wù)器)

  • (1)安裝前準(zhǔn)備關(guān)閉SELinux和防火墻,DHCP服務(wù)器設(shè)置為靜態(tài)IP

  • (2)安裝相關(guān)軟件包httpd, tftp-server, dhcp, syslinux

    • httpd服務(wù)提供yum源服務(wù)冲呢,
    • tftp服務(wù)器為客戶機(jī)提供安裝系統(tǒng)所需的啟動(dòng)文件舍败、啟動(dòng)菜單、內(nèi)核文件敬拓、偽文件系統(tǒng)
    • dhcp服務(wù)器為客戶機(jī)提供IP地址邻薯,并將tftp服務(wù)器的地址提供給客戶機(jī)
    • 啟動(dòng)文件、啟動(dòng)菜單需要安裝syslinux軟件包后獲得
    • 執(zhí)行命令:yum install httpd tftp-server dhcp syslinux
  • (3)配置yum源服務(wù)

    • 將httpd服務(wù)設(shè)置為開機(jī)自啟動(dòng):systemctl enable httpd
    • 打開httpd服務(wù):systemctl start httpd
    • 配置yum源1:建立centos7目錄mkdir -p /var/www/html/centos/7
    • 配置yum源2:復(fù)制centos7光盤文件內(nèi)容至centos7目錄下乘凸,這里將光盤掛載至目錄下厕诡,效果與前者相同,實(shí)際中應(yīng)該復(fù)制至硬盤营勤,保證系統(tǒng)安裝執(zhí)行效率
      mount /dev/sr0 /var/www/html/centos/7
  • (4)準(zhǔn)備kickstart文件

    • 準(zhǔn)備桌面和最小化安裝兩份文件灵嫌,可以根據(jù)/root/anaconda-ks.cfg文件修改
      注意:使用system-config-kickstart時(shí),CentOS7環(huán)境下可能出現(xiàn)無法選擇軟件包的情況葛作,此時(shí)需要將yum源配置文件的首個(gè)源配置信息的源標(biāo)識(shí)符改名為"development"寿羞,即可正常選擇軟件包
    • 準(zhǔn)備的kickstart文件:ks7.cfg為桌面安裝使用,ks7-mini為最小化安裝使用
      mkdir /var/www/html/ksdir 建立kickstart文件目錄
      cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7.cfg 復(fù)制模板
      cp /root/anaconda-ks.cfg /var/www/html/ksdir/ks7-mini.cfg 復(fù)制模板

    • 兩份kickstart文件示例如下:

    vim /var/www/html/ksdir/ks7.cfg
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Install OS instead of upgrade
    install
    # X Window System configuration information
    xconfig  --startxonboot
    # Keyboard layouts
    # old format: keyboard us
    # new format:
    keyboard --vckeymap=us --xlayouts='us'
    # Root password
    rootpw --iscrypted $1$B2Ve3zbv$S2d5TSE.8Iwbo4o3BoRxM1
    # Use network installation
    url --url="http://192.168.136.230/centos/7"
    # System language
    lang en_US
    user --name=hellopeiyang --password=$6$vFs7gFIqwNrxjVEx$UwrqEc4BanhssQpLa./g/ySepGSRLNll65NvI/PSJuavDVQJvVXukrUmHPHDX7tVyWb4uXlyEXBTYmVD0KxLK/ --iscrypted
    # Firewall configuration
    firewall --disabled
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text
    # Run the Setup Agent on first boot
    firstboot --enable
    # SELinux configuration
    selinux --disabled
    # System services
    services --disabled="chronyd"
    ignoredisk --only-use=sda
    # Network information
    network  --bootproto=dhcp --device=ens33 --onboot=on
    # Reboot after installation
    reboot
    # System timezone
    timezone Asia/Shanghai --nontp
    # System bootloader configuration
    bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all
    # Disk partitioning information
    part /app --fstype="xfs" --ondisk=sda --size=51200
    part / --fstype="xfs" --ondisk=sda --size=51200
    part swap --fstype="swap" --ondisk=sda --size=2048
    part /boot --fstype="xfs" --ondisk=sda --size=1024
    
    %post
    systemctl enable autofs
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @^graphical-server-environment
    @base
    @core
    @desktop-debugging
    @dial-up
    @fonts
    @gnome-desktop
    @guest-agents
    @guest-desktop-agents
    @hardware-monitoring
    @input-methods
    @internet-browser
    @multimedia
    @print-client
    @x11
    wodim
    autofs
    %end
    
    vim /var/www/html/ksdir/ks7-mini.cfg
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Install OS instead of upgrade
    install
    # Keyboard layouts
    # old format: keyboard us
    # new format:
    keyboard --vckeymap=us --xlayouts='us'
    # Root password
    rootpw --iscrypted $1$C8HufR6L$JuAxRzQnv7dGxVw.xDNLc0
    # Use network installation
    url --url="http://192.168.136.230/centos/7"
    # System language
    lang en_US
    user --name=hellopeiyang --password=$6$hbPuvZcl0TRrYyFG$Vb0pNhuS/uBLMpq6nbDzruRtZr0K1qGmCey6.PL3dyKA.iUvZds4JRgQ8LpzTJ.6STbuFD2Tu5xgXt68KIjrc/ --iscrypted 
    --gecos="hellopeiyang"
    # Firewall configuration
    firewall --disabled
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text
    # Run the Setup Agent on first boot
    firstboot --enable
    # SELinux configuration
    selinux --disabled
    
    # System services
    services --disabled="chronyd"
    ignoredisk --only-use=sda
    # Network information
    network  --bootproto=dhcp --device=ens33 --onboot=on
    # Reboot after installation
    reboot
    # System timezone
    timezone Asia/Shanghai --nontp
    # System bootloader configuration
    bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all
    # Disk partitioning information
    part /app --fstype="xfs" --ondisk=sda --size=51200
    part / --fstype="xfs" --ondisk=sda --size=51200
    part swap --fstype="swap" --ondisk=sda --size=2048
    part /boot --fstype="xfs" --ondisk=sda --size=1024
    
    %post
    systemctl enable autofs
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @^minimal
    @core
    autofs
    %end
    
    • kickstart文件的權(quán)限可能不合適赂蠢,為文件的所有用戶增加讀權(quán)限
      chmod +r /var/www/html/ksdir/{rs7.cfg,rs7-mini.cfg}
  • (5)配置TFTP服務(wù)

    • 設(shè)置tftp服務(wù)開機(jī)自啟動(dòng):systemctl enable tftp.socket
    • 開啟tftp服務(wù):systemctl start tftp.socket
  • (6)配置DHCP服務(wù)

    • 復(fù)制dhcp配置模板文件
      cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

    • 編輯/etc/dhcp/dhcpd.conf文件绪穆,subnet字段修改后如下:

    subnet 192.168.136.0 netmask 255.255.255.0 {
            range 192.168.136.10    192.168.136.30;
            next-server 192.168.136.230;
            filename "pxelinux.0";
    }
    
    • 將dhcp服務(wù)設(shè)置為自啟動(dòng):systemctl enable dhcpd
    • 啟動(dòng)dhcp服務(wù):systemctl start dhcpd
  • (7)準(zhǔn)備PXE相關(guān)文件

    • 建立PXE啟動(dòng)配置文件存放目錄:mkdir /var/lib/tftpboot/pxelinux.cfg
    • 復(fù)制啟動(dòng)相關(guān)文件:
      cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
    • 復(fù)制內(nèi)核, initrd文件:
      cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
    • 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default):
      cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    • 文件目錄結(jié)構(gòu)如下:
  • (8)修改啟動(dòng)菜單文件

vim /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32     //啟動(dòng)菜單風(fēng)格
timeout 600 

menu title CentOS Linux 7 PXE Install

label desktop     //桌面自動(dòng)安裝 
  menu label Install CentOS Linux 7 ^Desktop
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7.cfg

label mini     //最小化自動(dòng)安裝
  menu label Install CentOS Linux 7 M^ini
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.136.230/ksdir/ks7-mini.cfg

label manual     //手動(dòng)安裝
  menu label Install CentOS Linux 7 ^Manual
  kernel vmlinuz
  append initrd=initrd.img inst.repo=http://192.168.136.230/centos/7

label local     //本地硬盤啟動(dòng)
  menu default
  menu label Boot from ^local drive
  localboot 0xffff
menu end 
  • (9)從網(wǎng)卡啟動(dòng)主機(jī),正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)

(四)PXE自動(dòng)化安裝CentOS 6 (CentOS 6作為FTP、DHCP霞幅、TFTP服務(wù)器)

  • (1)安裝前準(zhǔn)備:關(guān)閉SELinux和防火墻漠吻,DHCP服務(wù)器設(shè)置為靜態(tài)IP

  • (2)安裝相關(guān)軟件包vsftpd, tftp-server, dhcp, syslinux

    • 安裝軟件包:yum install vsftpd tftp-server dhcp syslinux
  • (3)配置yum源服務(wù)

    • 建立centos6目錄:mkdir -p /var/ftp/pub/centos/6
    • 配置yum源:mount /dev/sr0 /var/ftp/pub/centos/6
    • 設(shè)置vsftpd服務(wù)為自啟動(dòng):chkconfig vsftpd on
    • 啟動(dòng)vsftpd服務(wù):service vsftpd start
  • (4)準(zhǔn)備kickstart文件

    • 與自動(dòng)安裝CentOS7相似量瓜,準(zhǔn)備桌面和最小化安裝兩份文件

    • ks6.cfg為桌面安裝使用司恳,ks7-mini為最小化安裝使用
      mkdir /var/ftp/pub/ksdir 建立kickstart文件目錄
      cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6.cfg 復(fù)制模板
      cp /root/ananconda-ks.cfg /var/ftp/pub/ksdir/ks6-mini.cfg 復(fù)制模板

    • 兩份kickstart文件示例如下:

    vim /var/ftp/pub/ksdir/ks6.cfg
    
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --disabled
    # Install OS instead of upgrade
    install
    # Use network installation
    url --url="ftp://192.168.136.229/pub/centos/6"
    #repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
    # Root password
    rootpw --iscrypted $1$QmHn/VZt$YE/c30khjQ1i1hSHeMN8h/
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # SELinux configuration
    selinux --disabled
    # 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="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all
    # Disk partitioning information
    part /boot --fstype="ext4" --size=1000
    part / --fstype="ext4" --size=50000
    part swap --fstype="swap" --size=2000
    part /app --fstype="ext4" --size=20000
    
    %post
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @base
    @basic-desktop
    @core
    @debugging
    @desktop-debugging
    @desktop-platform
    @directory-client
    @fonts
    @general-desktop
    @graphical-admin-tools
    @input-methods
    @internet-applications
    @internet-browser
    @java-platform
    @legacy-x
    @network-file-system-client
    @office-suite
    @print-client
    @remote-desktop-clients
    @server-platform
    @server-policy
    @workstation-policy
    @x11
    abrt-gui
    certmonger
    device-mapper-persistent-data
    genisoimage
    krb5-workstation
    libXmu
    mtools
    oddjob
    pam_krb5
    pax
    python-dmidecode
    samba-winbind
    sgpio
    wodim
    %end
    
    vim /var/ftp/pub/ksdir/ks6-mini.cfg
    
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --disabled
    # Install OS instead of upgrade
    install
    # Use network installation
    url --url="ftp://192.168.136.229/pub/centos/6"
    # Root password
    rootpw --iscrypted $1$H3QsWt7L$uezUXA.OuYFONmwP027tS.
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # SELinux configuration
    selinux --disabled
    # 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="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all
    # Disk partitioning information
    part /boot --fstype="ext4" --size=1000
    part / --fstype="ext4" --size=50000
    part swap --fstype="swap" --size=2000
    part /app --fstype="ext4" --size=20000
    
    %post
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @core
    @server-policy
    @workstation-policy
    autofs
    %end
    
    • kickstart文件的權(quán)限可能不合適,統(tǒng)一增加寫權(quán)限
      chmod +r /var/ftp/pub/ksdir/*
  • (5)配置TFTP服務(wù)

    • 啟動(dòng)tftp服務(wù):
    chkconfig tftp on     //tftp服務(wù)自啟動(dòng)
    service xinetd restart     //xinetd服務(wù)重啟服務(wù)绍傲,為tftp服務(wù)監(jiān)聽端口
    
  • (6)配置DHCP服務(wù)

    • 復(fù)制dhcp配置模板文件
      cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

    • 編輯/etc/dhcp/dhcpd.conf文件扔傅,subnet字段修改后入下:

subnet 192.168.136.0 netmask 255.255.255.0 {
        range 192.168.136.10    192.168.136.30;
        next-server 192.168.136.229;
        filename "pxelinux.0";
}
  • dhcpd服務(wù)自啟動(dòng):chkconfig dhcpd on
  • 啟動(dòng)dhcp服務(wù):service dhcpd start
  • (7)準(zhǔn)備PXE相關(guān)文件

    • 建立PXE啟動(dòng)配置文件存放目錄:mkdir /var/lib/tftpboot/pxelinux.cfg
    • 復(fù)制啟動(dòng)相關(guān)文件:cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
    • 復(fù)制內(nèi)核,initrd文件:
      cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
    • 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default):
      cp /misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    • 文件目錄結(jié)構(gòu)如下:
  • (8)修改啟動(dòng)菜單文件
vim /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32
timeout 600 

menu title CentOS Linux 6 PXE Install

label desktop 
  menu label Install CentOS Linux 6 ^Desktop
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6.cfg

label mini
  menu label Install CentOS Linux 6 M^ini
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.136.229/pub/ksdir/ks6-mini.cfg

label manual
  menu label Install CentOS Linux 6 ^Manual
  kernel vmlinuz
  append initrd=initrd.img inst.repo=ftp://192.168.136.229/pub/centos/6

label local
  menu default
  menu label Boot from ^local drive
 localboot 0xfffmenu end 
menu end 
  • (9)從網(wǎng)卡啟動(dòng)主機(jī)烫饼,正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)

(五)PXE自動(dòng)化安裝CentOS 6 和CentOS 7(CentOS 7作為HTTP猎塞、DHCP、TFTP服務(wù)器)

  • (1)安裝前準(zhǔn)備:關(guān)閉SELinux和防火墻杠纵,DHCP服務(wù)器設(shè)置為靜態(tài)IP

  • (2)安裝相關(guān)軟件包httpd, dhcp, tftp-server, syslinux
    yum install httpd dhcp tftp-server syslinux

  • (3)配置CentOS 6和CentOS 7的源

    • 將httpd服務(wù)設(shè)置為自啟動(dòng):systemctl enable httpd
    • 打開httpd服務(wù):systemctl start httpd
  • 配置centos 7的yum源:
    mkdir -p /var/www/html/centos/6
    mount /dev/sr1 /var/www/html/centos/6
    mkdir -p /var/www/html/centos/7
    mount /dev/sr0 /var/www/html/centos/7

  • (4)準(zhǔn)備kickstart文件
    • 調(diào)整上面兩個(gè)實(shí)驗(yàn)中的kickstart文件荠耽,分別為ks7.cfg, ks7-mini.cfg, ks6.cfg, ks6-mini.cfg。主要調(diào)整的是遠(yuǎn)程安裝路徑比藻,即usl --url=字段后面的設(shè)置
    • 將kickstart文件復(fù)制到指定目錄:
      mkdir -p /var/www/html/ksdir/{6,7}
      vim /var/www/html/ksdir/6/ks6.cfg
      vim /var/www/html/ksdir/6/ks6-mini.cfg
      vim /var/www/html/ksdir/7/ks7.cfg
      vim /var/www/html/ksdir/7/ks7-mini.cfg

*(5)配置TFTP服務(wù):

  • 設(shè)置tftp服務(wù)開機(jī)自啟動(dòng):systemctl enable tftp.socket

  • 開啟tftp服務(wù):systemctl start tftp.socket

  • (6)配置DHCP服務(wù)

    • 復(fù)制dhcp配置模板文件
      cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    • 編輯/etc/dhcp/dhcpd.conf文件铝量,subnet字段修改后如下:
    subnet 192.168.136.0 netmask 255.255.255.0 {
            range 192.168.136.10    192.168.136.30;
            next-server 192.168.136.230;
            filename "pxelinux.0";
    }
    
    • 將dhcp服務(wù)設(shè)置為自啟動(dòng):systemctl enable dhcpd
    • 啟動(dòng)dhcp服務(wù):systemctl start dhcpd
  • (7)準(zhǔn)備PXE相關(guān)文件

    • 建立PXE啟動(dòng)配置文件存放目錄:mkdir /var/lib/tftpboot/pxelinux.cfg
    • 分別建立存放CentOS6和7的內(nèi)核相關(guān)文件的目錄:
      mkdir -p /var/lib/tftpboot/centos/6
      mkdir -p /var/lib/tftpboot/centos/7
    • 復(fù)制啟動(dòng)相關(guān)文件:cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot
    • 分別復(fù)制CentOS 6和7的內(nèi)核與initrd文件至不同的目錄:
      cp /var/www/html/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/6
      cp /var/www/html/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos/7
    • 復(fù)制啟動(dòng)項(xiàng)設(shè)置文件(必須重命名為default)
      cp /var/www/html/centos/7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
    • 文件目錄結(jié)構(gòu)如下:
  • (8)修改啟動(dòng)菜單文件:
    注意CentOS6和CentOS7系統(tǒng)內(nèi)核相關(guān)文件的不同路徑需要相應(yīng)修改配置文件的設(shè)置

default menu.c32
timeout 600

menu title CentOS Linux PXE Install

label desktop 7
  menu label Install CentOS Linux 7 ^Desktop
  kernel centos/7/vmlinuz
  append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7.cfg

label desktop 6
  menu label Install CentOS Linux 6 D^esktop
  kernel centos/6/vmlinuz
  append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6.cfg
    
label mini 7 
  menu label Install CentOS Linux 7 M^ini
  kernel centos/7/vmlinuz
  append initrd=centos/7/initrd.img ks=http://192.168.136.230/ksdir/7/ks7-mini.cfg

label mini 6
  menu label Install CentOS Linux 6 Mi^ni
  kernel centos/6/vmlinuz
  append initrd=centos/6/initrd.img ks=http://192.168.136.230/ksdir/6/ks6-mini.cfg

label manual 7
  menu label Install CentOS Linux 7 ^Manual
  kernel centos/7/vmlinuz
  append initrd=centos/7/initrd.img inst.repo=http://192.168.136.230/centos/7


label manual 6
  menu label Install CentOS Linux 6 M^anual
  kernel centos/6/vmlinuz
  append initrd=centos/6/initrd.img inst.repo=http://192.168.136.230/centos/6

label local
  menu default
  menu label Boot from ^local drive
  localboot 0xffff
menu end
  • (9)從網(wǎng)卡啟動(dòng)主機(jī),正確進(jìn)入PXE安裝的啟動(dòng)項(xiàng)

可以同時(shí)安裝CentOS6 和CentOS 7

四银亲、cobbler

(一)cobbler簡(jiǎn)介

  • 功能:快速網(wǎng)絡(luò)安裝Linux系統(tǒng)
  • PXE的二次封裝慢叨,將多種安裝參數(shù)封裝到一個(gè)菜單
  • 集成了PXE、DHCP务蝠、rsync拍谐、http、DNS馏段、Kickstart轩拨、IPMI(電源管理)多種服務(wù)
  • 由Python編寫
  • 提供CLI和Web管理兩種方式

(二)cobbler工作流程

  • client裸機(jī)配置了從網(wǎng)絡(luò)啟動(dòng)后,開機(jī)后會(huì)廣播包請(qǐng)求DHCP服務(wù)器(cobbler server)發(fā)送其分配好的一個(gè)IP
  • DHCP服務(wù)器(cobbler server)收到請(qǐng)求后發(fā)送responese院喜,包括其ip地址
  • client裸機(jī)拿到ip后再向cobbler server發(fā)送請(qǐng)求OS引導(dǎo)文件的請(qǐng)求
  • cobbler server告訴裸機(jī)OS引導(dǎo)文件的名字和TFTP server的ip和port
  • client裸機(jī)通過上面告知的TFTP server地址通信亡蓉,下載引導(dǎo)文件
  • client裸機(jī)執(zhí)行執(zhí)行該引導(dǎo)文件,確定加載信息够坐,選擇要安裝的os寸宵,期間會(huì)再向cobbler server請(qǐng)求kickstart文件和os image
  • cobbler server發(fā)送請(qǐng)求的kickstart和os iamge
  • client裸機(jī)加載kickstart文件
  • client裸機(jī)接收os image,安裝該os image

(三)cobbler相關(guān)術(shù)語(yǔ)

  • 發(fā)行版:
    表示一個(gè)操作系統(tǒng)版本元咙,它承載了內(nèi)核和initrd的信息梯影,以及內(nèi)核參數(shù)等其他數(shù)據(jù)
  • 配置文件:
    包含一個(gè)發(fā)行版、一個(gè)kickstart 文件以及可能的存儲(chǔ)庫(kù)庶香,還包含更多特定的內(nèi)核參數(shù)等其他數(shù)據(jù)
  • 系統(tǒng):
    表示要配置的主機(jī)甲棍,它包含一個(gè)配置文件或一個(gè)鏡像,還包含IP和MAC地址赶掖、電源管理(地址感猛、憑據(jù)七扰、類型)以及更為專業(yè)的數(shù)據(jù)等信息
  • 存儲(chǔ)庫(kù):
    保存一個(gè)yum或rsync存儲(chǔ)庫(kù)的鏡像信息
  • 鏡像:
    可替換一個(gè)包含不屬于此類別的文件的發(fā)行版對(duì)象(例如,無法分為內(nèi)核和initrd的對(duì)象)

(四)cobbler配置文件

  • 配置文件目錄:/etc/cobbler
  • /etc/cobbler/settings:cobbler 主配置文件
  • /etc/cobbler/iso/:iso模板配置文件
  • /etc/cobbler/pxe:pxe模板文件
  • /etc/cobbler/power:電源配置文件
  • /etc/cobbler/user.conf:web服務(wù)授權(quán)配置文件
  • /etc/cobbler/users.digest:web訪問的用戶名密碼配置文件
  • /etc/cobbler/dhcp.template:dhcp服務(wù)器的配置模板
  • /etc/cobbler/dnsmasq.template:dns服務(wù)器的配置模板
  • /etc/cobbler/tftpd.template:tftp服務(wù)的配置模板
  • /etc/cobbler/modules.conf:模塊的配置文件

(五)cobbler目錄

  • 數(shù)據(jù)目錄
    /var/lib/cobbler/config/:用于存放distros, system, profiles 等信息配置文件
    /var/lib/cobbler/triggers/:用于存放用戶定義的cobbler命令
    /var/lib/cobbler/kickstart/:默認(rèn)存放kickstart文件
    /var/lib/cobbler/loaders/:存放各種引導(dǎo)程序
  • 鏡像目錄
    /var/www/cobbler/ks_mirror/:導(dǎo)入的發(fā)行版系統(tǒng)的所有數(shù)據(jù)
    /var/www/cobbler/images/:導(dǎo)入發(fā)行版的kernel和initrd鏡像用于遠(yuǎn)程網(wǎng)絡(luò)啟動(dòng)
    /var/www/cobbler/repo_mirror/:yum 倉(cāng)庫(kù)存儲(chǔ)目錄
  • 日志目錄
    /var/log/cobbler/installing:客戶端安裝日志
    /var/log/cobbler/cobbler.log:cobbler日志

(六)cobbler命令

  • cobbler check:核對(duì)當(dāng)前設(shè)置是否有問題
  • cobbler list:列出所有的cobbler元素
  • cobbler report:列出元素的詳細(xì)信息
  • cobbler sync:同步配置到數(shù)據(jù)目錄,更改配置最好都要執(zhí)行下
  • cobbler reposync:同步y(tǒng)um倉(cāng)庫(kù)
  • cobbler distro:查看導(dǎo)入的發(fā)行版系統(tǒng)信息
  • cobbler system:查看添加的系統(tǒng)信息
  • cobbler profile:查看配置信息

(七)cobbler重要參數(shù)

  • /etc/cobbler/settings中重要的參數(shù)設(shè)置
  • default_password_crypted:"$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
  • manage_dhcp:1
  • manage_tftpd:1
  • pxe_just_once:1
  • next_server:< tftp服務(wù)器的IP 地址>
  • server:<cobbler服務(wù)器的IP 地址>

(八)cobbler相關(guān)管理

  • 下載啟動(dòng)菜單:cobbler get-loaders
  • 管理distro
    cobbler import --name=centos-6.9-x86_64 --path=/media/cdrom
  • 管理profile
    cobbler profile add --name=centos-6.9-x86_64-basic --distro=centos-6.9-x86_64 --kickstart=/tmp/centos-6.9-x86_64.cfg
  • 查看profiles
    cobbler profile list
  • 查看引導(dǎo)文件
    cat /var/lib/tftpboot/pxelinux.cfg/default
  • 同步cobbler配置
    cobbler sync

(九)cobbler實(shí)現(xiàn)步驟

  • 安裝包陪白,并設(shè)置服務(wù)
  • 檢查配置
  • 根據(jù)上面提示修改配置
  • 下載啟動(dòng)相關(guān)文件菜單
  • 配置DHCP服務(wù)
  • 分別導(dǎo)入centos的安裝源,并查看
  • 準(zhǔn)備kickstart文件并導(dǎo)入cobbler
  • 測(cè)試

(十)cobbler實(shí)現(xiàn)Web管理

  • cobbler-web
    提供cobbler的基于web管理界面颈走,epel源
    yum install cobbler-web
  • 認(rèn)證方式
    • 定義認(rèn)證方法:/etc/cobbler/modules.conf
    • 使用authn_pam模塊認(rèn)證cobbler_web用戶
      • [authentication]塊中指定module = authn_pam
      • 創(chuàng)建cobbler用戶:useradd cobbler
      • 修改文件/etc/cobbler/users.conf
        [admins]
        admin = "cobbler"
    • 使用authn_configfile模塊認(rèn)證cobbler_web用戶
      • [authentication]塊中module=authn_configfile
      • 創(chuàng)建其認(rèn)證文件/etc/cobbler/users.digest,并添加所需的用戶
        htdigest -c /etc/cobbler/users.digest Cobbler admin
      • 注意:添加第一個(gè)用戶時(shí),使用“-c”選項(xiàng)咱士,后續(xù)添加其他用戶時(shí)不要再使用立由,cobbler_web的realm只能為Cobbler
  • Web訪問cobbler

(十一)cobbler實(shí)現(xiàn)自主選擇安裝CentOS6或7系統(tǒng)

(1)安裝cobbler并配置相關(guān)服務(wù)

yum install cobbler
systemctl enable cobblerd
systemctl start cobblerd
systemctl enable tftp
systemctl start tftp
systemctl enable httpd
systemctl start httpd

(2)執(zhí)行cobbler check命令,根據(jù)提示修改設(shè)置
  • 執(zhí)行cobbler check命令序厉,反饋類似結(jié)果
  • 根據(jù)問題锐膜,修改/etc/cobbler/settings文件,修改后如下:
vim /etc/cobbler/settings
default_password_crypted: "$1$3AUU7.oO$g7Dkuzmu1uFmcp4HYRLw9."      //加密密碼
next_server: 192.168.136.230     //tftp服務(wù)器IP
manage_dhcp: 1     //管理dhcp服務(wù)
server: 192.168.136.230     //cobbler服務(wù)器IP

vim /etc/cobbler/dhcp.template     //修改dhcp模板文件
subnet 192.168.136.0 netmask 255.255.255.0 {
   range dynamic-bootp        192.168.136.10 192.168.136.30;

注明:密碼可以用openssl passwd -1來生成

  • 重啟cobbler服務(wù)并同步配置到數(shù)據(jù)目錄弛房,同步成功結(jié)果如下
    systemctl restart cobblerd
    cobbler sync
(3)準(zhǔn)備啟動(dòng)文件和菜單風(fēng)格文件
  • 具備聯(lián)網(wǎng)條件時(shí)道盏,執(zhí)行cobbler get-loaders
  • 不具備聯(lián)網(wǎng)條件時(shí),操作類似PXE的操作
    cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders
(4)導(dǎo)入yum源
  • 導(dǎo)入centos 7.3的yum源文捶,/mnt/centos6為centos6的光盤掛載點(diǎn)
    cobbler import --path=/mnt/centos7 --name=centos7.3 --arch=x86_64
  • 導(dǎo)入centos 6.9的yum源荷逞,/mnt/centos6為centos6的光盤掛載點(diǎn)
    cobbler import --path=/mnt/centos6 --name=centos6.9 --arch=x86_64
  • 查看導(dǎo)入的發(fā)行版及其配置信息,確認(rèn)導(dǎo)入成功
    cobbler distro list 查看導(dǎo)入的發(fā)行版信息
    cobbler profile list 查看配置信息
(5)生成kickstart文件
  • 復(fù)制CentOS 6的kickstart文件
    cp /var/www/html/ksdir/6/ks6.cfg /var/lib/cobbler/kickstarts/

  • 復(fù)制CentOS 7的kickstart文件
    cp /var/www/html/ksdir/7/ks7.cfg /var/lib/cobbler/kickstarts/

  • 刪除原先導(dǎo)入CentOS 6的yum源時(shí)的配置信息
    cobbler profile remove --name=centos6.9-x86_64

  • 刪除原先導(dǎo)入CentOS 7的yum源時(shí)的配置信息
    cobbler profile remove --name=centos7.3-x86_64

  • 重新生成CentOS 6的kickstart配置
    cobbler profile add --name=centos6.9_desktop --distro=centos6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks6.cfg

  • 重新生成CentOS 7的kickstart配置
    cobbler profile add --name=centos7.3_desktop --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg

  • 同步設(shè)置到數(shù)據(jù)目錄
    cobbler sync

(6)從網(wǎng)卡啟動(dòng)主機(jī)拄轻,正確進(jìn)入cobbler安裝的啟動(dòng)項(xiàng)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颅围,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恨搓,更是在濱河造成了極大的恐慌院促,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斧抱,死亡現(xiàn)場(chǎng)離奇詭異常拓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辉浦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門弄抬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宪郊,你說我怎么就攤上這事掂恕。” “怎么了弛槐?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵懊亡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我乎串,道長(zhǎng)店枣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鸯两,結(jié)果婚禮上闷旧,老公的妹妹穿的比我還像新娘。我一直安慰自己钧唐,他們只是感情好忙灼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逾柿,像睡著了一般缀棍。 火紅的嫁衣襯著肌膚如雪宅此。 梳的紋絲不亂的頭發(fā)上机错,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音父腕,去河邊找鬼弱匪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛璧亮,可吹牛的內(nèi)容都是我干的萧诫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枝嘶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼帘饶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起群扶,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤及刻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后竞阐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年舅桩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了靶草。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幕垦,死狀恐怖丢氢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情先改,我是刑警寧澤疚察,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站盏道,受9級(jí)特大地震影響稍浆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一衅枫、第九天 我趴在偏房一處隱蔽的房頂上張望嫁艇。 院中可真熱鬧,春花似錦弦撩、人聲如沸步咪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猾漫。三九已至,卻和暖如春感凤,著一層夾襖步出監(jiān)牢的瞬間悯周,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工陪竿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留禽翼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓族跛,卻偏偏與公主長(zhǎng)得像闰挡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子礁哄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容