• PXE与cobbler实现系统自动安装


    安装操作系统的流程事实上并不复杂,如果你要给三五台服务器安装系统那么我们手工去安装即可。但是当我们要部署的是大型机房的操作系统的时候显然手动安装去一台一台的点,是不现实的。尤其现在互联网行业高速发展,一家公司拥有百台以上的服务器并不少见。这个时候我们就需要想办法实现系统的自动安装了。

    PXE技术就能很好的解决这个问题,本文将会对PXE的工作原理有所介绍,同时通过实验操作展示来方便大家理解,而cobbler则是基于PXE技术的工作原理的二次封装,通过命令的方式简化了PXE配置过程。

    一、思考

    实验之前请大家思考一个问题:一台全新的服务器摆在你的面前,此时这台服务器中的磁盘是一干二净的,磁盘中没有系统,我们怎么做到让他开机自动去安装系统呢?
    一台没有操作系统的服务器,从开机到安装操作系统至少要有三个必要条件:

    1. 按下机器的电源键之后机器首先进行POST自检,自检没有问题以后BIOS开始去读取内存中具有开机引导功能的设备,引导开机设备加载开机引导文件,进一步引导系统启动。硬件问题不考虑的情况下,我们首先需要的是开机引导文件。
    2. 其次这台服务器要自动安装,自动安装就必须要有安装策略,也就是说我们需要提前准备好系统安装的应答文件,系统开机以后去读取应答文件,这个应答文件就记录了你提前计划好的系统安装策略,服务器通过读取应答文件一步步按照既定策略安装操作系统。
    3. 安装系统就要有安装源文件,简单理解就是安装系统的RPM包从哪里来,同样是自动化安装操作系统需要考虑的问题。
      了解清除这三个因素以后就会对PXE的工作原理比较容易理解了。

    二、PXE原理介绍

    2.1 原理与概念:

    事实上把PXE称作是一种引导方式而不是安装方式似乎更加准确。
    PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提条件是计算机的网卡必须具有引导功能,这个网卡中要有一个PXE客户端。
    当计算机POST自检成功以后,BIOS把网卡中ROM的PXE客户端调入内存执行,PXE客户端通过网络中的DHCP服务器获取一个IP地址,拿到IP地址以后PXE继续引导计算机与网络中的TFTP客户端建立连接,从而从TFTP服务器中获取开机引导文件之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。

    2.2 PXE工作步骤简介:

    1):PXE客户端通过网络中的DHCP服务器拿到自己的IP地址。
    2):拿到IP地址以后与网络中的TFTP服务器建立连接,请求下载计算机安装程序启动所需文件,其中包括pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件.
    3):拿到计算机安装启动程序所需文件以后,在pxelinux.0的引导下启动安装程序,并读取pxelinux.cfg/default文件,得到安装程序所需的应答文件,既ks.cfg文件的存放位置。
    4):计算机根据配置文件指定的位置的得到并且读取应答文件,开始按照应答文件的安装策略安装操作系统。同时应该文件有会指定系统安装所需要的配置文件以及二进制程序包的文件的位置。
    5):计算机根据应答文件指定的位置获取系统安装所需要的配置文件以及二进制程序包,完成操作系统的自动安装。

    2.3 总结

    根据上边介绍的PXE的工作原理以及步骤,我们不难总结出部署PXE安装操作系统之前所需要做的准备工作,这里只谈软件环境:

    1. 在网络中配置DHCP服务器,用来给计算机自动分配IP地址
    2. 在网中配置TFTP服务器,为PXE提供安装程序启动所需要的文件
    3. ks应答文件,配置操作系统的安装策略以及指明系统安装所需文件
    4. 配置存放系统安装文件的服务器,可以是NFS、HTTP 或 FTP 服务器,接下来将会以HTTP服务作为示例。

    三、实验准备

    3.1 配置DHCP服务

    首先安装dhcp服务
    一般服务安装好之后直接启动就可了:

    [root@CentOS6 ~]#service dhcpd start
    Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.
    

    但是dhcp服务安装好无法直接启动,根据提示找原因:
    根据报错内容输入命令systemctl status dhcpd.service提示配置文件在服务器网段中没有定义子网域所以启动失败。

    [root@CentOS6 ~]#sservice dhcpd status
    ● dhcpd.service - DHCPv4 Server Daemon
       Active: failed (Result: exit-code) since Mon 2017-09-18 19:16:19 CST; 23s ago
    Process: 12023 ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid (code=exited, status=1/FAILURE)
    Main PID: 12023 (code=exited, status=1/FAILURE)
    you want, please write a subnet declaration
    in your dhcpd.conf file for the network segment
    to which interface virbr0 is attached. **
    No subnet declaration for eth0 (172.18.45.6).
    dhcpd.service: main process exited, code=exited, status=1/FAILURE
    Failed to start DHCPv4 Server Daemon.
    Unit dhcpd.service entered failed state.
    dhcpd.service failed.
    #有所省略
    

    查看配置文件:

    [root@CentOS6 ~]#cat /etc/dhcp/dhcpd.conf 
    # DHCP Server Configuration file.	
    #   see /usr/share/doc/dhcp*/dhcpd.conf.example		
    #   see dhcpd.conf(5) man page
    

    配文件确实是空的,根据配置文件提示,需要手工编辑配置文件的,而且配置文件的模版已经给出了。所以我们可以直接复制过来,然后简单修改一下子网域就好了。
    编辑配置文件思路:
    在此我们配置DHCP服务的目的,主要是为了给我们的实验网络环境配置DHCP服务。通过网络引导自动安装操作系统的第一步就是安装主机要在网络环境中通过dhcp拿到IP地址,进而进行接下来的操作。因此我们只需配置实验环境的dhcp服务的子网域即可,其他关于dhcp服务的详细介绍不过赘述。
    注意:作为dhcp的服务器的主机首先要有自己的IP地址,然后根据服务器的网段设定子网域
    复制模版,并简单修改:

    # No service will be given on this subnet, but declaring it helps the 
    # DHCP server to understand the network topology.
    subnet 172.18.45.0 netmask 255.255.255.0 {	
      range 172.18.45.10 172.18.45.100;
      next-server 172.18.45.6;
      filename "pxelinux.0";
    }
    #找到定义子网域的部分
    #首先定义网段:subnet 172.18.45.0 netmask 255.255.255.0我的DHCP服务器是手动设置的IP地址172.18.45.6,所以定义的网段必然要和DHCP服务器的IP在同一网段
    #然后定义范围:range 172.18.45.10 172.18.45.100;
    #其次指定tftp服务器的IP地址:next-server 172.18.45.6;
    #最后指定位于tftp服务器的引导文件的文件名:filename "pxelinux.0";
    

    然后再启动服务就好了,网络中其他网卡也就会顺利拿到IP了

    [root@CentOS6 ~]#service dhcpd start
    Starting dhcpd:                       [  OK  ]
    

    DHCP服务器的默认端口是67端口也可以通过ss -nul命令查看相应的UDP协议的端口,如果67端口是处于监听状态的就说明服务已经开启了。

    3.2 配置TFTP服务

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
    tftp是一个非独立服务,centos6版本下的tftp服务要依赖于xinetd服务管理,centos7版本则依赖与systemd服务的管理
    在centos6版本中可以直接使用chkconfig tftp on命令直接开启
    centos7改版以后不再支持chkconfig命令,可以通过修改xinetd配置文件来开启tftp服务,亦可用新命令 systemctl start tftp开启服务。

    [root@CentOS6 ~]#vim /etc/xinetd.d/tftp 
    # default: off
    service tftp
    {
        disable = no		#将yes改为no即可
        socket_type         = dgram
        protocol            = udp
        wait                = yes
        user                = root
        server              = /usr/sbin/in.tftpd
        server_args         = -s /var/lib/tftpboot
        per_source          = 11
        cps                 = 100 2
        flags               = IPv4
    }
    

    然后重启xinetd服务查看端口状态:

    [root@CentOS6 ~]#service xinetd restart
    [root@CentOS6 ~]#service xinetd status
    xinetd (pid  2878) is running...
    [root@CentOS6 ~]#ss -nul
    State  Recv-Q Send-Q Local Address:Port Peer Address:Port 
    UNCONN 0      0               *:69             *:*     
    #69端口处于监听状态开一确认服务已经开启
    

    3.3 配置http服务

    http服务包名是HTTPD安装以后service httpd start然后待用即可。

    3.4 准备ks应答文件

    KickStart是一种无人职守安装方式。
    KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限 于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用 找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
    这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。

    kickstart文件的格式

    命令段:指明各种安装前配置,如键盘类型等
    必备命令 :
    authconfig: 认证方式配置
    authconfig --useshadow --passalgo=sha512
    bootloader:bootloader的安装位置及相关配置
    bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"
    keyboard: 设定键盘类型
    lang: 语言类型
    part: 创建分区
    rootpw: 指明root的密码
    timezone: 时区
    可选命令 :
    install OR upgrade
    text: 文本安装界面
    network
    firewall
    selinux
    halt
    poweroff
    reboot
    repo
    user:安装完成后为系统创建新用户
    url: 指明安装源 key –skip 跳过安装号码,适用于rhel版本

    程序包段:指明要安装的程序包组或程序包,不安装的程序包等
    %packages
    @group_name
    package
    -package #如果要安装的包组中包含不想要的包用-号代表剔除
    %end #指定要安装的程序包以%packages开头,%end 结尾
    脚本段:
    %pre: 安装前脚本
    运行环境:运行于安装介质上的微型Linux环境
    %post: 安装后脚本
    运行环境:安装完成的系统

    kickstart文件创建

    创建kickstart文件的方式:
    直接手动编辑
    依据某模板修改,每台计算机安装完成linux操作系统以后都会在root家目录下生成成一个anaconda-ks.cfg文件,该文件册记录了这台计算机安装操作系统的安装策略。文件格式与kickstart文件格式基本相同。根据这个模版文件适当修改就可以当做ks文件来使用了。
    可使用创建工具:system-config-kickstart
    依据某模板修改并生成新配置
    /root/anaconda-ks.cfg
    检查ks文件的语法错误:ksvalidator
    ksvalidator /PATH/TO/KICKSTART_FILE
    示例:

    [root@CentOS6 ksdir]#cat ks7.cfg myks6.cfg 
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Install OS instead of upgrade
    install
    # Keyboard layouts
    keyboard 'us'
    # Root password
    rootpw --iscrypted $1$E5zLF5rh$oD15FpMG9Vl/Q6UOqtITd0
    # Use network installation
    url --url="http://172.18.45.6/centos7"
    # System language
    lang en_US
    # Firewall configuration
    firewall --disabled
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text
    firstboot --disable
    # SELinux configuration
    selinux --disabled
    
    # Reboot after installation
    reboot
    # System timezone
    timezone Asia/Shanghai 
    # System bootloader configuration
    bootloader --location=mbr
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all --initlabel
    # Disk partitioning information
    part /boot --fstype="ext4" --size=300
    part / --fstype="ext4" --size=20000
    part swap --fstype="swap" --size=2048
    %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
    kexec-tools
    autofs
    %end
    #这个ks文件是我用system-config-kickstart工具早图形化界面生成的,每项都有简单的英文注释,不过多解释。
    #url --url="http://172.18.45.6/centos7"		安装源文件的存放位置需要ks文件明确指出,并且写在引号内。172.18.45.6该地址就是我作为HTTP服务器的IP地址
    

    3.5 实验部署

    本实验将会把上述的DHCP服务、TFTP服务、以及HTTP服务部署在同一台CentOS6.9操作系统的虚拟机上,测试机器则是一台没有系统的全新的机器。当然两台虚拟机要求在同一个网络环境之中。测试机器的网卡也要支持PXE。
    实验之前,为了排除网络问题可能导致的坑,考虑清空服务器的防火前策略,和selinux。
    实验目的:利用PXE实现CentOS6.9和CentOS7双系统的自动安装。要实现双系统的安装,就要求分别准备6、7系统各自的内核文件,kickstart文件,以及安装源文件。

    四、PXE实验步骤

    4.1 在HTTP服务器准本分别准备CentOS6,和CentOS7系统的安装源文件:

    在服务器机器添加两个光盘,分别挂载CentOS6,和CentOS7系统的系统光盘镜像文件。在HTTP服务器的根目录分别创建目录,将两个关盘设备挂载上去。

    [root@CentOS6 ~]#lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1  3.7G  0 rom  
    sr1     11:1    1  7.7G  0 rom  
    #两块光盘都被系统识别
    #sr0对应CentOS6.9系统
    #sr1对应CentOS7.4系统
    

    创建安装源目录分别挂载:

    [root@Centos6 ~]#cd /var/www/html/
    [root@Centos6 html]#mkdir centos{6,7}
    [root@Centos6 html]#ls
    centos6  centos7
    [root@CentOS6 html]#mount /dev/sr0 /var/www/html/centos6
    mount: block device /dev/sr0 is write-protected, mounting read-only
    [root@CentOS6 html]#mount /dev/sr1 /var/www/html/centos7
    mount: block device /dev/sr1 is write-protected, mounting read-only
    

    安装源准备完毕,注意目录的权限问题,other应该对目录至少有执行权限,并且对关盘镜像文件有读权限。可以通过浏览器测试一下,如果可以访问并能看到光盘镜像文件,就说名没有问题。

    4.2 在HTTP服务器部署ks文件

    将提前准备好的ks文件也复制到HTTP服务器上,目录结构可以参考以下:

    [root@CentOS6 html]#tree
    .
    ├── centos6
    ├── centos7
    ├── index.html
    └── ksdir
        ├── ks7.cfg
        └── myks6.cfg
    drwxr-xr-x  2 root root 4096 Sep 18 07:38 ksdir
    -rw-r--r-- 1 root root 1155 Sep 17 22:17 ks7.cfg
    -rw-r--r-- 1 root root 1695 Sep 17 22:16 myks6.cfg
    

    ks文件的权限要求与上一步安装源文件的权限要求一样,同样可以通过浏览器来访问测试。

    4.3 在TFTP服务器部署PXE相关文件

    PXE程序包在yum的基础源中:

    [root@Centos6 ~]#yum install syslinux-nonlinux
    Installed:
      syslinux-nonlinux.noarch 0:4.04-3.e16
    Dependency Installed:
      syslinux.x86_64 0:4.04-3.el6
    Complete!
    

    文件部署:

    [root@Centos6 ~]cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/		#安装程序引导程序pxelinux.0,安装程序菜单背景menu.c32
    [root@Centos6 ~]cp /misc/cd/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/		#启动内核和影像文件,伪根系统
    [root@Centos6 ~]mkdir pxelinux.cfg
    [root@Centos6 ~]cp /misc/cd/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default		#安装菜单
    

    目录结构可以参考以下:

    [root@CentOS6 ~]#cd /var/lib/tftpboot/
    [root@CentOS6 tftpboot]#ls
    centos6  centos7  menu.c32  pxelinux.0  pxelinux.cfg
    [root@CentOS6 tftpboot]#tree
    .
    ├── centos6
    │   ├── initrd.img
    │   └── vmlinuz
    ├── centos7
    │   ├── initrd.img
    │   └── vmlinuz
    ├── menu.c32
    ├── pxelinux.0
    └── pxelinux.cfg
        └── default
    

    4.4 修改安装启动菜单

    之前从系统光盘复制的启动菜单,是linux自带的系统启动菜单,该启动菜单中包括的选项大致有:
    安装新的操作系统、进入救援模式、本地系统引导启动等选项。而我们需要的做一个选项包括自动安装CentOS6、CentOS7系统的启动菜单。格式与系统关盘自带的启动菜单类似,要求赋值到TFTP服务器的根目录下的pxelinux.cfg目录中,并以default命令之后参照已有格式适当修改即可。
    示例:

    [root@CentOS6 pxelinux.cfg]#cat default 
    default menu.c32		#默认的菜单背景
    #prompt 1
    timeout 600				#菜单停留超时时间
    display boot.msg
    menu background splash.jpg		#菜单配色方案,不必要
    menu title Centos Linux PXE Install 
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    
    label centos7				#选项栏
      menu label Auto Install CentOS linux ^7 	#选项标题自动安装7系统
      kernel centos7/vmlinuz	#指定内核镜像文件位置,参考TFTP的根目录/var/lib/tftpboot的相对路径
      append initrd=centos7/initrd.img ks=http://172.18.45.6/ksdir/ks7.cfg
      #指定伪根系统所在位置同样参考TFTP服务器的根目录的相对路径,指定ks文件的位置。
    label centos6				#CentOS系统选项栏写法同上
      menu label Auto Install CentOS linux ^6 
      kernel centos6/vmlinuz
      append initrd=centos6/initrd.img ks=http://172.18.45.6/ksdir/myks6.cfg
    label local			#本地启动选项,在本实验中的测试机器是一台没有系统的干净虚拟机,所以不存在误删除本地系统的情况。要考虑PXE通过网络引导自动安装操作系统一键安装,而我们的安装策略又是格式化光盘,清除所有磁盘分区表。如果测试的机器是一台有系统的机器,就有可能误操作破坏原有的操作系统。所以增加一项本地磁盘启动的选项,并设为默认启动项,当菜单停留时间超时以后,自动选择该选项。
    menu default	
    menu label Boot from ^local drive
      localboot 0xffff
    menu end
    

    4.5 测试

    按下测试机器点远开关,BIOS检测计算机启动引导设备,发现网卡具有引导功能。网卡引导PXE开始工作,选择安装菜单就可以实现一键自动安装操作系统了。

    五、cobbler

    5.1 clbbler简介

    快速网络安装linux操作系统的服务,支持众多的Linux发行 版:Red Hat、Fedora、CentOS、Debian、Ubuntu和 SuSE,也可以支持网络安装windows
    PXE的二次封装,将多种安装参数封装到一个菜单
    提供了CLI和Web的管理形式
    按装包:cobbler
    cobbler服务集成:
    pxe 服务 DHCP rsync Http DNS Kickstart IPMI 电源管理
    检查cobbler环境工具: cobbler check

    5.2 cobbler 工作流程

    client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器 (cobbler server)发送其分配好的一个IP
    DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
    client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
    cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和 port
    client裸机通过上面告知的TFTP server地址通信,下载引导文件
    client裸机执行执行该引导文件,确定加载信息,选择要安装的os, 期间会再向cobbler server请求kickstart文件和os image
    cobbler server发送请求的kickstart和os iamge
    client裸机加载kickstart文件
    client裸机接收os image,安装该os image

    5.3 配置目录

    配置文件目录:
    /etc/cobbler
    /etc/cobbler/settings : cobbler 主配置文件
    /etc/cobbler/iso/: iso模板配置文件
    /etc/cobbler/pxe: pxe模板文件
    /etc/cobbler/power: 电源配置文件
    /etc/cobbler/user.conf: web服务授权配置文件
    /etc/cobbler/users.digest: web访问的用户名密码配置文件
    /etc/cobbler/dhcp.template : dhcp服务器的的配置末班
    /etc/cobbler/dnsmasq.template : dns服务器的配置模板
    /etc/cobbler/tftpd.template : tftp服务的配置模板
    /etc/cobbler/modules.conf : 模块的配置文件
    数据目录:
    /var/lib/cobbler/config/: 用于存放distros,system,profiles 等信 息配置文件
    /var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
    /var/lib/cobbler/kickstart/: 默认存放kickstart文件
    /var/lib/cobbler/loaders/: 存放各种引导程序  镜像目录
    /var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
    /var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于 远程网络启动
    /var/www/cobbler/repo_mirror/: yum 仓库存储目录
    日志目录:
    /var/log/cobbler/installing: 客户端安装日志
    /var/log/cobbler/cobbler.log : cobbler日志

    5.3 命令介绍

    cobbler commands介绍
    cobbler check 核对当前设置是否有问题
    cobbler list 列出所有的cobbler元素
    cobbler report 列出元素的详细信息
    cobbler sync 同步配置到数据目录,更改配置最好都要执行下
    cobbler reposync 同步yum仓库
    cobbler distro 查看导入的发行版系统信息
    cobbler system 查看添加的系统信息
    cobbler profile 查看配置信息

    5.4 /etc/cobbler/settings中重要的参数设置

    default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"
    manage_dhcp:1
    manage_tftpd:1
    pxe_just_once:1
    next_server:< tftp服务器的 IP 地址>
    server:<cobbler服务器的 IP 地址>

    5.5 环境检查及解决

    执行Cobbler check命令会报如下异常

    1 : The ‘server’ field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
    2 : For PXE to be functional, the ‘next_server’ field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
    3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run ‘cobbler get-loaders’ to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a recent version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The ‘cobbler get-loaders’ command is the easiest way to resolve these requirements.
    4 : change ‘disable’ to ‘no’ in /etc/xinetd.d/rsync
    5 : comment ‘dists’ on /etc/debmirror.conf for proper debian support
    6 : comment ‘arches’ on /etc/debmirror.conf for proper debian support
    7 : The default password used by the sample templates for 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 to use the (optional) power management features. install cman or fence-agents to use them

    报错解决

    修改/etc/cobbler/settings文件中的server参数的值为提 供cobbler服务的主机相应的IP地址或主机名
    修改/etc/cobbler/settings文件中的next_server参数的 值为提供PXE服务的主机相应的IP地址
    如果当前节点可以访问互联网,执行“cobbler getloaders”命令即可;否则,需要安装syslinux程序包,而后 复制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件 至/var/lib/cobbler/loaders/目录中
    执行“chkconfig rsync on”命令即可
    执行“openssl passwd -1 生成密码,并用其替换 /etc/cobbler/settings文件中 default_password_crypted参数的值

    5.5 相关管理

    下载启动菜单: 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/centos6.9-x86_64.cfg
    查看profiles
    cobbler profile list
    查看引导文件
    cat /var/lib/tftpboot/pxelinux.cfg/default
    同步cobbler配置
    cobbler sync

    5.6实验:cobbler安装系统

    1 安装包
    yum install cobbler dhcp
    systemctl enable cobblerd
    systemctl start cobblerd
    systemctl enable tftp
    systemctl start tftp
    systemctl enable httpd
    systemctl start httpd

    2 根据cobbler check 提示

    1. vim /etc/cobbler/settings
      default_password_crypted: "$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/" #openssl passwd -1 生成口令
      next_server: 192.168.25.107
      manage_dhcp: 1
      server: 192.168.25.107

    systemctl restart cobblerd
    cobbler sync

    2)生成dhcp模版文件
    vi /etc/cobbler/dhcp.template
    subnet 192.168.25.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.25.100 192.168.25.254;

    cobbler sync

    1. 准备启动文件和和菜单风格文件
      连接internet
      cobbler get-loaders
      不连internet
      cp /var/lib/tftpboot/{menu.c32,pxelinux.0} /var/lib/cobbler/loaders

    3 导入yum源
    cobbler import --path=/misc/cd --name=centos7.3 --arch=x86_64
    cobbler import --path=/misc/cd --name=centos6.9 --arch=x86_64
    cobbler distro list
    cobbler profile list
    4 生成ks
    cp centos6.cfg centos7.cfg /var/lib/cobbler/kickstarts/
    cobbler profile remove --name=centos6.9-x86_64
    cobbler profile remove --name=centos7.3-x86_64
    cobbler profile add --name=centos6.9_desktop --distro=centos6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.cfg
    cobbler profile add --name=centos7.3_mini --distro=centos7.3-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg
    cobbler sync

    总结:

    学习这部分知识,之前要对计算开机启动流程有所了解,其实PXE与cobbler的工作原理不难理解。但是相对来说关于PXE的实验还是比较综合的,要用到的服务比较多。所以实际操作起来可能会有各种小错误,所以如果实验过程中有遇到问题或者有疑问的地方,请留言吧。

  • 相关阅读:
    Day015 PAT乙级 1013 数素数
    Day014 PAT乙级 1012 数字分类
    Day013 PAT乙级 1007 素数对猜想
    Day012 PAT乙级 1005 继续(3n+1)猜想
    Day011 PAT乙级 1003 我要通过
    Day010 PAT乙级 1002 写出这个数
    Day009 洛谷 P5707 上学迟到
    Day008 洛谷 P2181 对角线
    Day007 Java异常处理
    Fetch()
  • 原文地址:https://www.cnblogs.com/qige2017/p/7545812.html
Copyright © 2020-2023  润新知