随笔- 177  文章- 0  评论- 0  阅读- 1475 

在这里插入图片描述

一、cobbler简介

cobbler工具的引入,不仅简化了三个关键软件(DHCP+TFTP+HTTPD)的配置维护工作,还自动管理了文件和资源的共享与复制,如Apache镜像和模板的共享,从而实现半自动化的批量系统安装管理,减轻了管理员的工作负担。
cobbler check 进行cobbler模块环境的检测
cobbler sync 配置同步更新(这个平台需要先把这些安装好DHCP+TFTP+HTTPD才可以)

1.准备工作

添加一块新的磁盘,100GB,平均分成两个分区,然后,分别挂载至:/isos 和 /var/www 目录上,然后再进行后续实验。 并关闭防火墙和SELinux,并让Linux连接上互联网

添加一块新的磁盘,100GB,平均分成两个分区,然后,分别挂载至:/isos 和 /var/www 目录上,然后再进行后续实验。 并关闭防火墙和SELinux,并让Linux连接上互联网**
后续空间需求很大,添加一个新的磁盘 100GB平分两个分区,并挂载到/isos和/var/www(需要在安装httpd前进行挂载不然会路径覆盖)目录上
  yum -y install gdisk
  gdisk /dev/sdb            #分2个50G
   mkdir -p /var/www       #提前创建以免覆盖apache的目录
   mkdir -p /isos
   mkfs.xfs /dev/sdb1     
   mkfs.xfs /dev/sdb2
   mount /dev/sdb1 /isos
   mount /dev/sdb2 /var/www
   df -h
   # 配置基础网络yum源和epel扩展yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
yum clean all
yum makecache

2.安装cobbler和相关软件

yum -y install cobbler cobbler-web tftp-server dhcp httpd xinetd

systemctl enable --now httpd cobblerd ##将这两个服务设置为开机自启动
3.配置cobbler

3.1 检查cobbler配置,根据提示完成修改

     用cobbler check 中提示9个问题

在这里插入图片描述

3.2 逐个问题解决
问题一&问题二:配置文件变量没有设置


vim /etc/cobbler/settings
allow_dynamic_settings: 1  #设置为不启动cobbler的IP只设置了下面的不生效修改为1生效
server: 192.168.88.150     #这是两个变量,将这两个修改为本机IP
next_server: 192.168.88.150
pxe_just_once: 1
manage_dhcp: 1

systemctl restart cobblerd
#一定要先重启服务然后执行下面两条命令

问题三:没有将tftp设置为开机自启动

vim  /etc/xinetd.d/tftp
disable = no

问题四:没有找到cobbler-loaders文件下载好后上传上去

 
unzip cobbler-loaders.zip 
cd /var/lib/cobbler/loaders/
cp -a /root/cobbler-loaders/* ./

  

问题五: 没有开启rsync

systemctl enable --now rsyncd

问题六:忽略即可,debian相关配置

问题七:没有安装软件

yum -y install pykickstart

问题八:没有给root设置加密密码

openssl passwd -1 -salt 'root' '123456'
$1$root$j0bp.KLPyr.u9kgQ428D10

#以上内容是加密密码,最终在kickstart文件中生效
vim /etc/cobbler/settings
default_password_crypted: "$1$root$j0bp.KLPyr.u9kgQ428D10"

问题九:没有fencing这个软件

yum -y install fence-agents

3.3 配置cobbler-dhcp


vim /etc/cobbler/dhcp.template       进入cobbler的配置文件
    subnet 192.168.88.0 netmask 255.255.255.0 {     ##设置dhcp分配的IP和子网掩码
    option routers                  192.168.1.5;        ##网关
    option domain-name-servers      192.168.1.1;        ##dns
    option subnet-mask              255.255.255.0;
    range dynamic-bootp             192.168.1.100 192.168.1.254;    内存池
    default-lease-time              21600;
    max-lease-time                  43200;
    next-server                     $next_server;   调用变量
    class "pxeclients" {        各种引导程序
            match if substring (option vendor-class-identifier,0,9)="PXElient";
            if option pxe-system-type =00:02 {
                filename"ia64/elilo.efi";
            }else if option pxe-system-type = 00:07
        }

    }
    
systemctl restart cobblerd
  cobbler sync        #开启并同步
  #测试
 cat  /etc/dhcp/dhcpd.conf 
 ls /var/lib/tftpboot/
 

3.4 将所有服务全部重启一遍

#导入镜像需要先将各种服务重启一下
systemctl restart httpd dhcpd tftp.socket cobblerd rsyncd
systemctl enable --now httpd dhcpd tftp.socket cobblerd rsyncd

3.5 导入镜像

#导入镜像   
mkdir /isos/centos7.6
mount -o loop /dev/sr0 /isos/centos7.6/
cobbler import --name="CentOS-7.6-x86_64" --path=/isos/centos7.6     ##--name为上传后的名字发行版本类型和大版本,cpu架构,--path从哪里来的

#查看镜像
ll /var/www/cobbler/ks_mirror/  
vim /var/lib/tftpboot/pxelinux.cfg/default       #菜单文件这里面的文件会在你上传后会进行刷新一遍
#装机脚本cobbler已经自动写好

在执行cobbler import报错请检查命令path路径

![[Pasted image 20241031212829.png]]
3.6.生成ks模板文件(自动装机脚本重要步骤 可跳过)


cd /var/lib/cobbler/kickstarts/

#可以直接导入之前pxe用的文件
vim centos7.cfg

url --url=http://192.168.88.110/cobbler/ks_mirror/CentOS-7.6-x86_64/
#修改为指定目录
#还可以写入一些需求脚本#如下
%post --interpreter=bash         #post表示在服务启动之后运行
cd /etc/yum.repos.d/
mkdir bak
mv C* bak/
echo "[centos7]
name=centos7 repo for kickstart
baseurl=http://192.168.88.110/centos7
enable=1
gpgcheck=0" >> CentOS-Media.repo
%end
#如果是桌面版请添加一个用户
#写入如下规则
user --name=user --password=$6$08xNwgwvXHCC/W8J$Sa3I0sd832pCk/M1Dr.os.1P6qFErIb5I3Okm0G7a9P0PaeHQnYKxOHMcZ1OeumLmYshQJaAurdxNJGZdKyD90 --iscrypted --gecos="user" 

#生成上述的密文密码可以使用以下命令:借助python命令完成
python -c 'import crypt; print(crypt.crypt("your_password", crypt.mksalt(crypt.METHOD_SHA512)))'

3.7.查看指定镜像的profile配置文件,将ks文件绑定到指定镜像(可跳过)


cobbler profile list        查看导入的镜像列表
cobbler profile report --name="上传后的镜像名称"    查看镜像的详细信息(其中kickstart选择好的装机脚本)
cobbler profile edit --name=上传后的镜像名称 --kickstart=位置  将镜像使用的装机脚本进行替换

3.8.设置web管理终端

#注意:虚拟机的内存必须大于2G,否则会出现无法安装的情况

#修改cobbler的web验证模式 设置web管理终端
grep -A 1 "\[authentication\]" /etc/cobbler/modules.conf  
htdigest -c /etc/cobbler/users.digest Cobbler 用户名称             ##添加一个管理员用户就可以在网页上使用https://IP地址/cobbler_web进行访问到 

#使用浏览器登陆cobbler_web管理终端
https://192.168.88.110/cobbler_web
#此处必须使用https协议进行登陆

课外扩展
  • cobbler sync 报错 开启并同步,没有同步的话dhcp和一些其他位置信息不同可能无法重启成功或信息不同,可检测是否有遗留问题没有解决

如果又报错:dhcpd -t failed

原因:python文件内命令错误

解决:

cp -a /usr/lib/python2.7/site-packages/cobbler/modules/sync_post_restart_services.py /tmp

cd /tmp

vim sync_post_restart_services.py

#修改前dhcp_restart_command = "service %s restart" % dhcp_service_name

#修改后dhcp_restart_command = "/usr/bin/systemctl restart %s " % dhcp_service_name

python -m compileall  sync_post_restart_services.py

python -O -m compileall  sync_post_restart_services.py

#重新编译

cp -a *  /usr/lib/python2.7/site-packages/cobbler/modules/

#复制粘贴回去

systemctl restart cobbler

cobbler sync

  • 网络批量无人值守装机技术在生产环境中的应用及其优势是什么?
    • U盘携带病毒风险较高且部分设备禁止插入USB;光盘刻录功能受限,且存储量相对较小;而网络批量无人值守装机不受上述限制,尤其适合多台机器同时部署相同操作系统及软件环境,提高效率。
    • 在特殊场景下,如没有专业机房或网络设备不足时,如何进行装机?
      • 可先将装机镜像刻录到U盘中,然后将U盘插入服务器进行无人值守批量装机。
  • PXE启动不起来是什么原因? 怎么排除
    • 1. 首先确保服务器已加电并连接到网络,能从DHCP服务器获取IP地址。
    • 2. 检查TFTP和DHCP服务:确保TFTP服务器正在运行并可以从中获取网络引导程序(pxelinux.0)。同时检查DHCP服务器是否正常工作。
    • 3. 检查配置文件:查看是否存在名为pxelinux.cfg的配置文件,并检查其中的设置是否正确。
    • 4. 检查文件系统和内核镜像:确认引导程序是否能加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz)。
    • 5. BIOS设置:如果黑屏无法进入Bios,尝试重置Bios。打开机箱,找到主板上的电池CR2032,并将其卸下几秒钟后再放回,以重置Bios设置。
    • 6. 检查硬盘和光驱:如果以上都没有问题,但仍然无法启动,检查硬盘和光驱是否正常工作。
    • 7. 使用诊断工具:您还可以使用如tftp-server、vsftpd、syslinux、dhcpd等工具进行更深入的诊断。
 posted on   dapaige  阅读(18)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示