Cobbler自动化安装
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
二,PXE工作流程
三,Cobbler功能
四,安装环境
虚拟机两台,一台为Cobbler主机一台为测试安装机
虚拟机网络设置为(两台网络一样)
主机系统为CentOS7.4
设置固定IP为192.168.80.130网关为VM默认网关192.168.80.2
五,安装Cobbler
配置yum源
1 | rpm - ivh https: / / mirrors.aliyun.com / epel / epel - release - latest - 7.noarch .rpm |
安装包
1 | yum - y install httpd dhcp tftp cobbler xinetd |
关闭防火墙和selinux
1 2 3 4 | systemctl stop firewalld systemctl disable firewalld setenforce 0 sed 's#enforcing#disabled#g' / etc / selinux / config - i |
启动
1 2 | systemctl start cobblerd systemctl start httpd |
启动cobbler检查(需要完成以下列出问题才能使用)
1 | cobbler check |
1,有个server文件必须设置成本地
2,设置PXE文件去那里找
3,设置Selinex
4,把配置文件的disable设置为no
5,网络启动的东西设置在这个目录,通过命令去下载
6,启动rsync
7,如果使用ubuntu系统需要安装这个包,这里不需要安装
8,需要安装pykickstart包
9,生成默认的密码放在文件
10,需要安装电源管理
运行命令下载一些网络用的文件
1 | cobbler get - loaders |
安装xinetd
1 | yum - y install xinetd |
修改配置文件/etc/cobbler/settings两个地址设置为本机地址
1 2 | server 192.168 . 80.130 next_server 192.168 . 80.130 |
修改完重启
1 | systemctl restart cobblerd |
修改配置文件/etc/xinetd.d/tftp
1 | disable = no |
修改完重启
1 | systemctl restart xinetd |
启动rsync并设置为自启动
1 2 | systemctl start rsyncd systemctl enable rsyncd |
安装pykickstart
1 | yum - y install pykickstart |
设置默认密码 执行命令
1 | openssl passwd - 1 - salt 'cobler' 'cobler' |
生成一个密码设置在/etc/cobbler/settings
1 | default_password_crypted: "$1$123123$MAV.kVI/b3swmFLErPD2b0" |
重启cobblerd
检查(这两个问题不用处理)
设置cobbler可以管理dhcp
/etc/cobbler/settings
1 | manage_dhcp: 1 |
修改dhcp配置文件/etc/cobbler/dhcp.template修改标红部分,其他保持默认
重启cobbler(就把刚刚配置的dhcp覆盖dhcp配置文件/etc/dhcp/dhcpd.conf)
1 | systemctl restart cobblerd |
执行
1 | cobbler sync |
导入镜像
先挂载一个镜像光盘
1 | mount / dev / cdrom / mnt |
导入镜像
1 | cobbler import - - path = / mnt / - - name = Centos - 7.2 - x86_64 - - arch = x86_64 |
导入的镜像目录为/var/www/cobbler/ks_mirror
查看导入镜像
1 | cobbler profile list |
kickstarts文件在目录/var/lib/cobbler/kickstarts/里面
自定义一个kickstarts文件并且绑定在刚刚传入的镜像
Centos7.2-x86_64.cfg
这里设置的root密码生成命令是
1 | perl - e 'print crypt("123qwe",q($1$password)),"\n"' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw - - iscrypted $ 1 $m1pE0DG6$vALBphGGynqvUzfJaWZ6U1 # Use network installation url - - url = "$tree" # System language lang en_US # Firewall configuration firewall - - disabled # System authorization information auth - - useshadow - - passalgo = sha512 # Use graphical install graphical firstboot - - disable # SELinux configuration selinux - - disabled # Network information network - - bootproto = dhcp - - device = eth0 network - - bootproto = dhcp - - device = eth1 # 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 - - asprimary - - fstype = "ext4" - - size = 200 part swap - - fstype = "swap" - - size = 1024 part / - - fstype = "ext4" - - grow - - size = 1 % packages @base @core @compat - libraries @debugging @development @gnome - desktop @X Window System % end |
定义为刚刚传入镜像的初始化文件
1 | cobbler profile edit - - name = CentOS - 7.2 - x86_64 - - kickstart = / var / lib / cobbler / kickstarts / Centos7. 2 - x86_64.cfg |
查看
增加内核参数让网卡变成eth0
1 | cobbler profile edit - - name Centos - 7.2 - x86_64 - - kopts = 'net.ifnames=0 biosdevname=0' |
查看
修改配置都需要同步生效
1 | cobbler sync |
新建一个虚拟机
启动就会从dhcp获取到地址自动安装
自动安装完一台虚拟机以备用
PS:导入CentOS7.4镜像无法安装,原因不明,就像把7.4制作成U盘一样无法安装系统,有timeout提示
六,cobbler提供的web界面
cobbler还提供一个web页面
1 | https: / / 192.168 . 80.130 / cobbler_web |
PS:必须是https访问
配置文件问为/etc/cobbler/users.digest
修改密码htdigest /etc/cobbler/users.digest "Cobbler" cobbler
默认用户名和密码均为cobbler
如果没有页面显示则安装
1 | yum - y cobbler - web |
安装完重启httpd
七,cobbler仓库
在使用cobbler安装的虚拟机下面的文件/etc/yum.repos.d/cobbler-config.repo记录一个yum包的地址
报错 提示无法读取到源主机的文件
源主机其实有这个repo文件
添加库(不要执行一旦执行会下载好几百个G的东西)
1 | cobbler repo add - - name = CentOS - 7 - x86_64 - epel - - mirro = https: / / mirrors.aliyun.com / epel / 7Server / x86_64 / - - arch = x86_64 - - breed = yum |
同步
1 | cobbler reposync |
cobbler会自动把镜像下载到本地并且构建本地仓库
执行以下的命令同步一个openstack
1 2 3 | cobbler repo add - - name = openstack - newton - - mirror = https: / / mirrors.aliyun.com / centos / 7.4 . 1708 / cloud / x86_64 / openstack - newton / - - arch = x86_64 - - breed = yum cobbler reposync |
放置的目录是/var/www/cobbler/repo_mirror/openstack-newton
这个目录有一个config.repo文件要放置在配置文件
在web界面把刚刚的yum源放进去(编辑初始化文档也可以)
默认安装的时候就是推过去的在配置文件/etc/cobbler/settings
1 | yum_post_install_mirror: 1 |
八,cobbler根据主机mac地址自动化安装
准备一台主机获取到mac地址
根据mac地址设置安装信息
1 2 3 4 5 6 7 8 9 10 11 | cobbler system add - - name = liuyueming \ - - mac = 00 : 0C : 29 : 2C :DC: 6B \ - - profile = CentOS - 7.2 - x86_64 \ - - ip - address = 192.168 . 80.188 \ - - subnet = 255.255 . 255.0 \ - - gateway = 192.168 . 80.2 \ - - interface = eth0 \ - - static = 1 \ - - hostname = liuyueming \ - - name - servers = "192.168.80.2" \ - - kickstart = / var / lib / cobbler / kickstarts / default.ks |
同步
1 | cobbler sync |
查看
1 | cobbler system list |
cat /etc/dhcp/dhcpd.conf可以看到刚才DHCP配置
启动该主机就会按照自定义的IP地址以及主机名安装
没安装成功。。。
九,使用koan重装系统
使用cobbler安装完系统以后假如想要重新安装一下系统可以使用koan工具
在需要重新安装系统的主机上面操作
设置epel源
1 | rpm - ivh https: / / mirrors.aliyun.com / epel / epel - release - latest - 7.noarch .rpm |
安装koan
1 | yum - y install koan |
使用命令列出cobbler主机是有哪些系统可以去重装的
1 | koan - - server = 192.168 . 80.130 - - list = profiles |
PS:是通过api去访问的
使用命令重装
1 | koan - - replace - self - - server = 192.168 . 80.130 - - profile = CentOS - 7.2 - x86_64 |
重启(就会自动化重新安装)
1 | reboot |
十,cobbler的python脚本
cobbler_list.py
1 2 3 4 5 6 7 8 | #!/usr/bin/python import xmlrpclib server = xmlrpclib.Server( 'http://192.168.80.130/cobbler_api' ) print server.get_distros() print server.get_profiles() print server.get_systems() print server.get_images() print server.get_repos() |
还有一个创建主机的的脚本(学习)
排错:同步cobbler sync时候报错,/etc/init.d/dhcpd权限不足,同步失败,把这个文件权限设置为777即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!