Linux 自动化批量部署 Cobbler

匆匆过客 提交于 2020-01-20 20:30:51

网络安装服务器套件 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 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     关闭状态


  • 下载操作系统引导文件

  • 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


  • 新建一个虚拟机测试安装
  • 注意安装 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

  • 有一个挺有趣的现象,第一次做完直接复制的 7.5.ks 文件,没有做任何改动,启动虚拟机竟然安装成功了,可是重启机器后,再次启动虚拟机安装,就提示 boot 分区找不到和不支持 xfs 文件格式,什么都没动过。。。。。。折腾了3个多小时才搞定。


  • 检测 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


  • 打开刚才新建的虚拟机进行测试安装
  • 设置为从网络启动

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!