基于Cobbler实现多版本系统批量部署

一、实验题目

基于Cobbler实现多版本操作系统的批量部署。

二、实验目的

  1. 掌握Cobbler服务器的安装与配置方法。

  2. 学会使用Cobbler进行多版本操作系统的批量部署。

  3. 理解PXE网络启动原理及其在操作系统部署中的应用。

  4. 提高在实际生产环境中快速部署和管理操作系统的能力。

三、实验环境

  1. 硬件环境:

    • 一台安装有Linux系统(如CentOS或Ubuntu)的服务器,作为Cobbler服务器。

    • 若干台客户端计算机,通过网络与Cobbler服务器连接。

  2. 软件环境:

    • Cobbler 2.x版本

    • DHCP服务器(通常集成在Cobbler中)

    • TFTP服务器(通常集成在Cobbler中)

    • Apache或其他Web服务器

    • 操作系统安装镜像文件(如CentOS、Ubuntu等)

四、实验内容

  1. 安装和配置Cobbler服务器。

  2. 配置DHCP和TFTP服务。

  3. 导入多版本操作系统的安装镜像。

  4. 创建和配置Cobbler profiles和systems。

  5. 通过PXE启动批量部署操作系统。

  6. 验证部署结果,确保客户端计算机成功安装指定的操作系统。

五、实验步骤

前提条件:

1、能够访问互联网

[root@localhost ~]# ping -c1 www.baidu.com

2、firewalld selinux 关闭

[root@localhost ~]# sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config  [root@localhost ~]# setenforce 0如果不关闭selinux也可以  #getsebool -a|grep cobbler  #setsebool -P cobbler_can_network_connect 1 
​[root@cobbler-server ~]# systemctl disable --now firewalld
​[root@localhost ~]# systemctl is-enabled firewalld.servicedisabled
​或者firewall-cmd --permanent --add-port=67/udpfirewall-cmd --permanent --add-port=68/udpfirewall-cmd --permanent --add-port=80/tcpfirewall-cmd --permanent --add-port=443/tcpfirewall-cmd --reloadfirewall-cmd --permanent --list-ports 

3、配置epel源

[root@localhost ~]# yum install epel-release -y

安装cobbler

1、安装dhcp httpd xinetd

[root@localhost ~]# yum install -y httpd dhcp xinetd tftp-server

2、安装cobbler

[root@localhost ~]# yum install -y cobbler cobbler-web

3、将cobbler httpd dhcp xinetd添加到开机自启

[root@localhost ~]# systemctl enable httpd dhcpd xinetd cobblerd

配置环境

cp /etc/cobbler/settings{,.bak}

环境检测:

[root@localhost ~]# systemctl start httpd cobblerd[root@localhost ~]# cobbler checkThe following are potential configuration items that you may want to fix:
​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 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:https://github.com/cobbler/cobbler/wiki/Selinux4 : change 'disable' to 'no' in /etc/xinetd.d/tftp5 : 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.6 : enable and start rsyncd.service with systemctl7 : debmirror package is not installed, it will be required to manage debian deployments and repositories8 : ksvalidator was not found, install pykickstart9 : 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 one10 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
​Restart cobblerd and then run 'cobbler sync' to apply changes.逐个解决以上问题
​
1、配置文件设置server(cobbler服务器地址)[root@localhost ~]# sed -i 's#server: 127.0.0.1#server: 172.16.110.91#g' /etc/cobbler/settings
​
2、设置'next_server'(DHCP服务器地址)[root@localhost ~]# sed -i 's#next_server: 127.0.0.1#next_server: 172.16.110.91#g' /etc/cobbler/settings3、关闭selinux[root@localhost ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config#系统重启后生效
​
4、开启tftp修改/etc/xinetd.d/tftp,disable ‘yes’ 改为 ‘no’5、准备引导操作系统文件#如果没有互联网,引导文件通过安装syslinux包获取。安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目录中[root@localhost ~]# cp /usr/share/syslinux/{pxelinux.0,memu.c32} /var/lib/cobbler/loaders/或者用提供的压缩包解压到指定文件夹[root@localhost ~]# tar xf loaders.tar.gz -C /var/lib/cobbler/loaders/
​
6、启动并开机自启动rsyncd.service[root@localhost ~]# systemctl start rsyncd.service[root@localhost ~]# systemctl enable rsyncd.service 7、如果不安装debian系统可以不配置
​
8、安装pykickstart[root@localhost ~]# yum install pykickstart -y
​
9、生成cobbler安装系统root初始化密码#这里生成密钥和配置默认密钥,ks文件引用(前面是干扰字符,后面的是密码)[root@localhost ~]# openssl passwd -1 -salt 'random-phrase-here' 'redhat'$1$random-p$MvGDzDfse5HkTwXB2OLNb.#更复杂安全密码[root@localhost ~]# openssl passwd -1 -salt $(openssl rand -hex 8) 'redaht'$1$4990cb90$jnQShir2NWVl23tbwpnFO0#加入到cobbler配置[root@localhost ~]# sed -i '/default_password_crypted:/cdefault_password_crypted: "$1$random-p$MvGDzDfse5HkTwXB2OLNb."' /etc/cobbler/settings 
​
10、安装cman or fence-agents[root@localhost ~]# yum install cman fence-agents -y
​
配置DHCP:#启用cobbler管理DHCP功能[root@localhost ~]# sed -i 's#manage_dhcp: 0#manage_dhcp: 1#g' /etc/cobbler/settings#manage_dhcp: 0 #设置为1时,开启cobbler的dhcp管理器修改DHCP配置文件[root@localhost ~]# vim /etc/cobbler/dhcp.template ...subnet 172.16.110.0 netmask 255.255.255.0 {option routers             172.16.110.254;option domain-name-servers 114.114.114.114;option subnet-mask         255.255.255.0;range dynamic-bootp        172.16.110.50 172.16.110.80;;default-lease-time         21600;max-lease-time             43200;...
​
配置pxe[root@localhost ~]# sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings

重启机器,再次测试:

[root@localhost ~]# cobbler check

同步cobbler配置

[root@localhost ~]# cobbler synctask started: 2016-12-02_045946_synctask started (id=Sync, time=Fri Dec  2 04:59:46 2016)running pre-sync triggerscleaning treesremoving: /var/lib/tftpboot/grub/imagescopying bootloaderstrying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboottrying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisktrying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efitrying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.eficopying distros to tftpbootcopying imagesgenerating PXE configuration filesgenerating PXE menu structurerendering DHCP filesgenerating /etc/dhcp/dhcpd.confrendering TFTPD filesgenerating /etc/xinetd.d/tftpcleaning link cachesrunning post-sync triggersrunning python triggers from /var/lib/cobbler/triggers/sync/post/*running python trigger cobbler.modules.sync_post_restart_servicesrunning: dhcpd -t -qreceived on stdout: received on stderr: running: service dhcpd restartreceived on stdout: received on stderr: Redirecting to /bin/systemctl restart  dhcpd.servicerunning shell triggers from /var/lib/cobbler/triggers/sync/post/*running python triggers from /var/lib/cobbler/triggers/change/*running python trigger cobbler.modules.scm_trackrunning shell triggers from /var/lib/cobbler/triggers/change/**** TASK COMPLETE ***

WEB访问 https://IP/cobbler_web 账号密码:cobbler/cobbler

cobbler批量部署CentOS 7和8

1、创建用于上传iso文件目录
[root@localhost ~]# mkdir /software/iso -p
然后上传centos6 和 centos7 的dvd iso镜像,过程略。
上传好后如下:
[root@localhost iso]# ll
total 13648896
-rw-r--r-- 1 root root 4712300544 May 28 16:45 CentOS-7-x86_64-DVD-2009.iso
-rw-r--r-- 1 root root 7554990080 May 28 16:46 CentOS-8.1.1911-x86_64-dvd1.iso
​
2、创建镜像导入存放目录
# mkdir -p /data/os/Linux/CentOS/X86_64/CentOS{7..8}/dvd
​
3、挂载 ISO 镜像并导入dvd 数据
[root@localhost iso]# mount /software/iso/CentOS-7-x86_64-DVD-2009.iso /data/os/Linux/CentOS/X86_64/CentOS7/dvd/
[root@localhost iso]# mount /software/iso/CentOS-8.1.1911-x86_64-dvd1.iso /data/os/Linux/CentOS/X86_64/CentOS8/dvd/
​
导入时间较久,耐心等待
cobbler import --path=/data/os/Linux/CentOS/X86_64/CentOS7/dvd/ --name=CentOS7.9 --arch=x86_64
cobbler import --path=/data/os/Linux/CentOS/X86_64/CentOS8/dvd/ --name=CentOS8.1 --arch=x86_64
​
4、列出导入后的配置
[root@localhost iso]# cobbler list
distros:CentOS7.9-x86_64CentOS8.1-x86_64
​
profiles:CentOS7.9-x86_64CentOS8.1-x86_64
​
systems:
​
repos:
​
images:
​
mgmtclasses:
​
packages:
​
files:
​
​
卸载
[root@localhost ~]# umount /data/os/Linux/CentOS/X86_64/CentOS7/dvd/
[root@localhost ~]# umount /data/os/Linux/CentOS/X86_64/CentOS8/dvd/
​
同步cobbler配置
[root@localhost ~]# cobbler sync

参考文件

# Cobbler for Kickstart Configurator for CentOS 7 by yao zhang
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
​
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
​
%packages
@^minimal
@compat-libraries
@core
@debugging
@development
bash-completion
chrony
dos2unix
kexec-tools
lrzsz
nmap
sysstat
telnet
tree
vim
wget
%end
​
%post
systemctl disable postfix.service
%end
#version=RHEL8
install
ignoredisk --only-use=sda
# Partition clearing information
clearpart --all --initlabel
# Use graphical install
text
# Use CDROM installation media
url --url=$treereboot
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang en_US.UTF-8selinux --disabled
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens160 --ipv6=auto --activate
network  --hostname=wenzi.localhost
# Root password
rootpw --iscrypted $default_password_crypted
# Run the Setup Agent on first boot
firstboot --enable
# Do not configure the X Window System
skipx
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# Disk partitioning information
zerombrpart /boot --fstype="ext4" --ondisk=sda --size=1024
part /swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --grow --size=1%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%post
%end 
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

六、心得体会

通过本次实验,我掌握了Cobbler服务器的安装和配置方法,并成功实现了多版本操作系统的批量部署。理解了PXE网络启动的原理和实践操作。Cobbler大大简化了操作系统的部署过程,提高了效率。在实际工作中,Cobbler可以用于快速部署和管理大规模服务器环境,为系统管理员提供了极大的便利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388059.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Moving Object Segmentation: All You Need Is SAM(and Flow) 论文详解

系列文章目录 文章目录 系列文章目录前言摘要1 引言2 相关工作3 SAM Preliminaries4 帧级分割Ⅰ:以流作为输入5 帧级分割Ⅱ:以流为提示6 序列级掩膜关联7 实验7.1 数据集7.2 评价指标7 .3 实施细节7.4 消融实验7.5 定量结果7 .定性可视化 8 结论致谢附录…

Ollama0.3.0 + llama3.1本地部署

Ollama0.3.0 llama3.1本地部署 安装Ollama 官网下载安装包 https://ollama.com/download ​​ 根据系统选择对应版本 安装完成后,电脑右下角会出现ollama程序图标,表示ollama正在运行。 ​​ 打开cmd命令 下载Llama3.1 输入ollama&#xff0c…

从“线缆迷宫”到“数字通途”:一机一网助力成天泰园区网络升级

(文 林海宾/深圳速锦网络科技有限公司) 林海宾,现任深圳速锦网络科技有限公司(以下简称速锦网络)的项目总监,一个入行十年、经验老道的数字化升级”操盘手“。他曾经主导过中国农业银行深圳分行130多个网点以及美的珠海工厂等数字化建设升级项目。在2024年的五一,他帮助深圳市…

【MATLAB源码】机器视觉与图像识别技术(7)续---BP神经网络

系列文章目录在最后面,各位同仁感兴趣可以看看! BP神经网络 第一节、BP网络定义第二节、BP网络结构及其特点第三节、信息传播方式 信息的正向传播:实质是计算网络的输出误差的反向传播:实质是学习过程第四节、 BP网络的算法流程…

视频怎么在尽量不损害画质的前提下压缩?试试这4款视频压缩神器

4个视频压缩神器,帮你在不损画质的前提下满足压缩需求: 1、嗨格式压缩大师 关键词:高效、批量 直达链接>>yasuo.hgs.cn 嗨格式压缩大师是一款免费的文件压缩工具,支持视频、图片、PDF、PPT等文件快速、批量压缩&#xff…

代码随想录 day 28 贪心

第八章 贪心算法 part02 贪心 局部最优解推出全局最优 ,而且想不到反例,那么就试一试贪心 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 只要想清楚 局部最优 是什么,如果推导出全局…

XR-Frame 计算相机与场景物体的距离

如下哦 const cameraTransform this.scene.getElementById(camera).getComponent(transform)const modelTransform this.scene.getElementById(yourNodeId).getComponent("transform");if (cameraTransform.worldPosition.distanceTo(modelTransform.worldPosition…

pip install albumentations安装下载遇19kB/s超级慢细水管解决办法

albumentations 是一个用于图像增强的 Python 库,它提供了丰富的图像变换功能,可以用于数据增强,从而提高深度学习模型的泛化能力。 直接安装命令: pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

【C++】C++11新增语法(右值引用、完美转法)

文章目录 1.C11新增常用语法1.1 统一的列表初始化1.2 initializer_list初始化1.3 声明相关1.4 继承与多态相关 2. 右值引用与移动语义2.1 左值引用与右值引用2.2 右值引用与移动语义的使用场景2.3 右值引用引用左值(move) 3. 完美转发4. 新的类功能4.1 新增两个默认成员函数4.2…

记录两道关于编码解码的问题

环境&#xff1a;php环境即可&#xff0c;也可使用phpstudy。 参考文章: 深入理解浏览器解析机制和XSS向量编码-CSDN博客(很重要) HTML 字符编码&#xff08;自我复习&#xff09;-CSDN博客 例题1&#xff1a; <?php header("X-XSS-Protection: 0"); $xss …

Jangow-1.0.1靶机漏洞复现(未完成)

首先&#xff0c;这个靶机只能使用VirtualBox打开&#xff0c;靶机下载地址为 https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 虚拟机软件下载地址为 Download_Old_Builds – Oracle VM VirtualBox 开启靶机后访问ip进入如下页面&#xff0c;点击site进入到一个…

昇思25天学习打卡营第16天|Diffusion扩散模型,DCGAN生成漫画头像

Diffusion扩散模型 关于扩散模型&#xff08;Diffusion Models&#xff09;有很多种理解&#xff0c;本文的介绍是基于denoising diffusion probabilistic model &#xff08;DDPM&#xff09;&#xff0c;DDPM已经在&#xff08;无&#xff09;条件图像/音频/视频生成领域取得…

MySQL:GROUP BY 分组查询

分组查询是SQL中一个非常强大的功能&#xff0c;它允许我们将数据按照一个或多个字段进行分组&#xff0c;并对每个分组进行聚合计算&#xff08;如求和、平均值、最大值、最小值等&#xff09;。在MySQL中&#xff0c;我们使用 GROUP BY 关键字来实现分组查询。 核心语法 SE…

Vue3自研开源Tree组件:人性化的拖拽API设计

针对Element Plus Tree组件拖拽功能API用的麻烦&#xff0c;小卷开发了一个API使用简单的JuanTree组件。拖拽功能用起来非常简单&#xff01; 文章目录 使用示例allowDragallowDrop支持节点勾选支持dirty检测后台API交互 源码实现 使用示例 组件的使用很简单&#xff1a; 通过…

4.1.2、操作系统-概述及进程管理-状态管理和前趋图

进出的组成和状态 进程是计算机中正在运行的程序的实例。它是操作系统进行资源分配和管理的基本单位,包括代码、数据和执行状态等信息。 进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。 我们电脑中的QQ影音和网易云音乐可以并…

小米手机怎么查看电池剩余容量

最近发现自己的小米11pro的待机时间越来越短了&#xff0c;怀疑是电池剩余容量太小了&#xff0c;希望测下电池剩余容量好打算是否要更换下电池。 1.抓取bug测试 首先打开拨号界面&#xff0c;输入*#*#284#*#*然后开始抓取日志。 等待bug报告生成完毕&#xff0c;然后点击就…

Git原理与用法系统总结

目录 Reference前言版本控制系统Git的诞生配置Git配置用户名和邮件配置颜色配置.gitignore文件 Git的基础用法初始化仓库克隆现有的仓库添加暂存文件提交变动到仓库比较变动查看日志Git回退Git重置暂存区 Git版本管理重新提交取消暂存撤销对文件的修改 Git分支Git分支的优势Git…

5、注册字符类设备

字符设备 cdev结构体 Linux中使用cdev结构体描述一个字符设备。结构体定义在include/linux/cdev.h 文件中&#xff0c; struct cdev{struct kobject kobj;struct module *owner; //所属模块const struct file_operations *ops; //文件操作结构体struct list_head lis…

《Java初阶数据结构》----5.<二叉树的概念及使用>

前言 大家好&#xff0c;我目前在学习java。之前也学了一段时间&#xff0c;但是没有发布博客。时间过的真的很快。我会利用好这个暑假&#xff0c;来复习之前学过的内容&#xff0c;并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…

综合点评!史上最强开源大模型Llama 3.1

在人工智能领域&#xff0c;开源模型一直是推动技术进步和创新的重要力量。 北美时间7月23日&#xff0c;Meta公司&#xff08;原Facebook&#xff09;宣布了一项重大突破&#xff1a;开源模型Llama 3.1的正式发布。这一举措预示着AI技术的又一次飞跃&#xff0c;Llama 3.1有望…