Linux 自动化批量部署 Cobbler


兴奋踢外套
兴奋踢外套 2022-09-27 09:52:36 52674
分类专栏: 资讯

  • 网络安装服务器套件 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 源,具体设置请参照拙作:Linux基础之软件包管理 rpm 及 yum_高飞的博客-CSDN博客
  • 安装 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
  • systemctl start 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     关闭状态,修改为  disable         =  no


  • 下载操作系统引导文件

  • cobbler get-loaders

  • PS:目测目前无法 get-loaders,可以多试几次

  • 或者从官网 下载源码包  Cobbler - Linux install and update server
  • find / -name "menu.c32" -o -name "grub*.efi" -o -name "pxelinux.0"
    /boot/efi/EFI/centos/grubx64.efi
    /usr/share/syslinux/menu.c32
    /usr/share/syslinux/pxelinux.0
    /opt/cobbler-3.2.1/loaders/grub2-x86.efi
    /opt/cobbler-3.2.1/loaders/grub2-x86_64.efi
  • 将 grub2-x86.efi   grub2-x86_64.efi  pxelinux.0 menu.c32 复制到 /var/lib/cobbler/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个错误可以忽略,一个是 debian repo 和 电源管理


  • 定制 ks 自动应答文件

  • cobbler profile list
  • cobbler profile report --name=CentOS-7.5-x86_64
  • 默认使用的是 /var/lib/cobbler/kickstarts/sample_end.ks

  

  • 编辑 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

  • 改变默认的 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

  • 检测 ks 文件是否有错
  • ksvalidator /var/lib/cobbler/kickstarts/CentOS7.5.ks
  • 检测 KS 文件是否能正常访问

  • 如果无法访问,需要手动添加
  • cp /var/lib/cobbler/kickstarts/CentOS7.5.ks /var/www/cobbler/svc/op/ks/profile/CentOS-7.5-x86_64

  • 新建一个虚拟机测试安装,关闭 VMware Workstation 自带的 VMnetDHCP 服务

  • 注意安装 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 
  • 在导入镜像时如果提示,No signature matched in /var/www/cobbler/ks_mirror/xxxxx-x86_64,签名无法匹配

    这个问题需要更改cobbler发行版本的配置文件

    cp /var/lib/cobbler/distro_signatures.json{,.bak}

    vim /var/lib/cobbler/distro_signatures.json

    将配置中的对应版本修改为将要使用的版本

    "version_file_regex":"^.*xxxx 5\\.1\\.(.*)build-([\\d]+).*$",

    改成

    "version_file_regex":"^.*xxxx 5\\.5\\.(.*)build-([\\d]+).*$",

    更改后重启cobber,重新导入镜像

  • 总大小为 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


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


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


  • 如果卡在 tftp 读取,重点检查 tftpd 服务是否启动

  • ss -nultp|grep 69
  • 检查 引导文件是否存在以及大小
  •  ll -h /var/lib/tftpboot/menu.c32
    -rw-r--r-- 2 root root 54K Jul  2 10:20 /var/lib/tftpboot/menu.c32
     ll -h /var/lib/tftpboot/pxelinux.0
    -rw-r--r-- 2 root root 27K Jul  2 10:12 /var/lib/tftpboot/pxelinux.0

  • 如果大小有出入,重新拷贝文件
  • \cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/menu.c32
  • \cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux.0

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux17938 人正在系统学习中

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=10590
赞同 0
评论 0 条
兴奋踢外套L0
粉丝 0 发表 6 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2956
【软件正版化】软件正版化工作要点  2875
统信UOS试玩黑神话:悟空  2839
信刻光盘安全隔离与信息交换系统  2733
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1267
grub引导程序无法找到指定设备和分区  1231
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
信创再发力!中央国家机关台式计算机、便携式计算机批量集中采购配置标准的通知 8

加入交流群

请使用微信扫一扫!