cobbler部署

cobbler

一、cobbler简介

Cobbler可以用来快速构建Linux网络安装环境,大大简化Linux网络安装的配置流程。相比PXE的安装方式,cobbler配置简单,并且可以提供多个版本的操作系统以供选择。cobbler采用了基于命令行的方式进行管理,也提供了web管理界面,还提供了API接口,以方便二次开发使用。

二、cobbler对应关系

Cobbler的配置结构基于一组注册的对象。每个对象表示一个与另一个实体相关联的实体。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或者添加更多特定信息。

1、发行版。 发行版表示一个操作系统,承载了内核和initrd的信息(开机自启服务的信息),以及其他内核参数。
2、配置文件。 配置文件包括一个发行版、一个kickstart文件以及可能的存储库,还包括更多特定的内核参数等其他数据。
3、系统。 表示要配给的设备。包括一个配置文件、一个系统镜像、IP和MAC地址,电源管理等其他信息。
4、镜像。 可以替换一个包含不属此类别的文件的发行版对象。
5、存储库。 保存一个YUM或者是rsync存储库镜像信息。

三、cobbler工作原理

cobbler工作原理如下图所示:

cobbler在启动后,需要首先进行自身的检查,检查无误后,就可以统筹开启TFTP、DHCP等的各种服务,等到客户端链接。客户端开机后,需要PXE启动的会使用DHCP协议向cobbler请求IP地址,cobbler在给客户端提供IP地址的同时也会告知客户端其下一跳的IP地址。之后客户端会使用TFTP协议请求加载文件,引导客户端启动并安装系统。同时,为了防止设备被重复安装,cobbler还会记录下该设备的安装信息,当该设备再次接入时,cobbler便不会再对其进行引导。

cobbler部署

#先关闭防火墙和selinux
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
//cobbler服务,selinux必须得是disabled状态,所以要重启
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# reboot

#配置yum源
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@localhost yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
#配置epel源
[root@localhost yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@localhost yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@localhost yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

#安装cobbler以及相关的软件
[root@localhost ~]# yum module list | grep cobbler
cobbler              3               default [d]                              Versatile Linux deployment server
cobbler              3.3             default [d]                              Versatile Linux deployment server

[root@localhost ~]# yum -y module enable cobbler:3
[root@localhost ~]# yum -y install httpd dhcp* tftp tftp-server cobbler cobbler-web pykickstart rsync rsync-daemon

#设置服务开机自启动
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# systemctl enable --now rsyncd
[root@localhost ~]# systemctl enable --now tftp
[root@localhost ~]# systemctl enable --now cobblerd

#修改server的ip地址为本机ip
[root@localhost ~]# sed -i 's/^server: 127.0.0.1/server: 192.168.111.139/' /etc/cobbler/settings.yaml

#修改tftp的ip地址为本机ip
[root@localhost ~]# sed -i 's/^next_server: 127.0.0.1/next_server: 192.168.111.139/' /etc/cobbler/settings.yaml

#生成加密的密码
[root@localhost ~]# openssl passwd -1 -salt "$RANDOM" 'cobbler123'
$1$19347$.N/4En3JI0k2gUp8mvULQ/

#将新生成的加密密码加入到配置文件
[root@localhost ~]# vim /etc/cobbler/settings.yaml
default_password_crypted: "$1$19347$.N/4En3JI0k2gUp8mvULQ/"         //修改为刚生成的加密的密码

#将cobbler的dhcp功能打开
[root@localhost ~]# sed -i "s#manage_dhcp: false#manage_dhcp: true#" /etc/cobbler/settings.yaml
[root@localhost ~]# grep 'manage_dhcp:' /etc/cobbler/settings.yaml
manage_dhcp: true

#重启cobbler
[root@localhost ~]# systemctl restart cobblerd

#通过cobbler check 核对当前设置是否有问题
[root@localhost ~]# cobbler check
The following are potential configuration items that you may want to fix:

1: some network boot-loaders are missing from /var/lib/cobbler/loaders. 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, and yaboot.

2: reposync is not installed, install yum-utils or dnf-plugins-core
3: yumdownloader is not installed, install yum-utils or dnf-plugins-core
4: debmirror package is not installed, it will be required to manage debian deployments and repositories
5: 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解决办法:
[root@localhost ~]# yum -y install syslinux*
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
[root@localhost ~]# cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
[root@localhost ~]# ls /var/lib/cobbler/loaders/
menu.c32  pxelinux.0

#问题2和问题三的解决办法:
[root@localhost ~]# yum -y install yum-utils

#问题4和问题5可以忽略,
因为是debian系统才需要解决,显示使用的是centos8
Debian系统解决办法安装fence-agents

#配置DHCP模板文件
[root@localhost ~]# vim /etc/cobbler/dhcp.template
 23 subnet 192.168.111.0 netmask 255.255.255.0 {
 24      option routers             192.168.111.255;
 25      option domain-name-servers 8.8.8.8;
 26      option subnet-mask         255.255.255.0;
 27      range dynamic-bootp        192.168.111.100 192.168.111.110;
 28      default-lease-time         21600;
 29      max-lease-time             43200;
 30      next-server                $next_server;

#同步cobbler配置
[root@localhost ~]# systemctl restart httpd cobblerd
[root@localhost ~]# cobbler sync
task started: 2022-09-24_163754_sync
task started (id=Sync, time=Sat Sep 24 16:37:54 2022)
running python triggers from /var/lib/cobbler/triggers/task/sync/pre/*
running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*
shell triggers finished successfully
running pre-sync triggers
cleaning trees
removing: /var/lib/tftpboot/grub/system
removing: /var/lib/tftpboot/grub/system_link
removing: /var/lib/tftpboot/grub/images
copying bootloaders
running: ['rsync', '-rpt', '--copy-links', '--exclude=.cobbler_postun_cleanup', '/var/lib/cobbler/loaders/', '/var/lib/tftpboot']
received on stdout:
received on stderr:
running: ['rsync', '-rpt', '--copy-links', '--exclude=README.grubconfig', '/var/lib/cobbler/grub_config/', '/var/lib/tftpboot']
received on stdout:
received on stderr:
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout:
received on stderr: Redirecting to /bin/systemctl restart dhcpd.service

running shell triggers from /var/lib/cobbler/triggers/sync/post/*
shell triggers finished successfully
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running python trigger cobbler.modules.managers.genders
running shell triggers from /var/lib/cobbler/triggers/change/*
shell triggers finished successfully
*** TASK COMPLETE ***

管理distro

#挂载镜像
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.

#导入镜像
[root@localhost ~]# cobbler import --path=/mnt/ --name=zxr arch=x86_64
task started: 2022-09-24_164154_import
task started (id=Media import, time=Sat Sep 24 16:41:54 2022)
running python triggers from /var/lib/cobbler/triggers/task/import/pre/*
running shell triggers from /var/lib/cobbler/triggers/task/import/pre/*
shell triggers finished successfully
Found a candidate signature: breed=redhat, version=rhel8
Found a matching signature: breed=redhat, version=rhel8
Adding distros from path /var/www/cobbler/distro_mirror/zxr:
creating new distro: zxr-x86_64
trying symlink: /var/www/cobbler/distro_mirror/zxr -> /var/www/cobbler/links/zxr-x86_64
creating new profile: zxr-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
starting descent into /var/www/cobbler/distro_mirror/zxr for zxr-x86_64
processing repo at : /var/www/cobbler/distro_mirror/zxr/AppStream
need to process repo/comps: /var/www/cobbler/distro_mirror/zxr/AppStream
looking for /var/www/cobbler/distro_mirror/zxr/AppStream/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/distro_mirror/zxr/AppStream/repodata
processing repo at : /var/www/cobbler/distro_mirror/zxr/BaseOS
need to process repo/comps: /var/www/cobbler/distro_mirror/zxr/BaseOS
looking for /var/www/cobbler/distro_mirror/zxr/BaseOS/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/distro_mirror/zxr/BaseOS/repodata
*** TASK COMPLETE ***

#查看cobbler镜像列表
[root@localhost ~]# cobbler list
distros:
   zxr-x86_64

profiles:
   zxr-x86_64

systems:

repos:

images:

mgmtclasses:

packages:

files:

#查看详细信息
[root@localhost ~]# cobbler distro report --name zxr-x86_64
Name                           : zxr-x86_64
Architecture                   : x86_64
Automatic Installation Template Metadata : {'tree': 'http://@@http_server@@/cblr/links/zxr-x86_64'}
TFTP Boot Files                : {}
Boot loader                    : grub
Breed                          : redhat
Comment                        :
Fetchable Files                : {}
Initrd                         : /var/www/cobbler/distro_mirror/zxr/images/pxeboot/initrd.img
Kernel                         : /var/www/cobbler/distro_mirror/zxr/images/pxeboot/vmlinuz
Kernel Options                 : {}
Kernel Options (Post Install)  : {}
Management Classes             : []
OS Version                     : rhel8
Owners                         : ['admin']
Redhat Management Key          :
Remote Boot Initrd             : ~
Remote Boot Kernel             : ~
Template Files                 : {}

#创建kickstarts自动安装脚本(文件以.ks结尾,勿tab)
[root@localhost ~]# cobbler profile get-autoinstall --name zxr-x86_64 > /var/lib/cobbler/templates/zxr.ks
#对脚本进行修改
[root@localhost ~]# vim /var/lib/cobbler/templates/zxr.ks
..........................

firewall --disable              //关闭防火墙
.........................

%packages
@^minimal-environment           //设置为最小化

#查看一下
[root@localhost ~]# cat /var/lib/cobbler/templates/zxr.ks
Sample kickstart file for current EL, Fedora based distributions.

#platform=x86, AMD64, or Intel EM64T
System authorization information
auth  --useshadow  --enablemd5
System bootloader configuration
bootloader --location=mbr
Partition clearing information
clearpart --all --initlabel
Use text mode install
text
Firewall configuration
firewall --disable
Run the Setup Agent on first boot
firstboot --disable
System keyboard
keyboard us
System language
lang en_US
Use network installation
url --url=http://192.168.111.139/cblr/links/zxr-x86_64
If any cobbler repo definitions were referenced in the kickstart profile, include them here.

repo --name=source-1 --baseurl=http://192.168.111.139/cobbler/distro_mirror/zxr/AppStream
repo --name=source-2 --baseurl=http://192.168.111.139/cobbler/distro_mirror/zxr/BaseOS

Network information
network --bootproto=dhcp --device=eth0 --onboot=on

Reboot after installation
reboot

#Root password
rootpw --iscrypted $1$19347$.N/4En3JI0k2gUp8mvULQ/
SELinux configuration
selinux --disabled
Do not configure the X Window System
skipx
System timezone
timezone  America/New_York
Install OS instead of upgrade
install
Clear the Master Boot Record
zerombr
Allow anaconda to partition the system as needed
autopart

%pre
set -x -v
exec 1>/tmp/ks-pre.log 2>&1

Once root's homedir is there, copy over the log.

while : ; do
    sleep 10
    if [ -d /mnt/sysimage/root ]; then
        cp /tmp/ks-pre.log /mnt/sysimage/root/
        logger "Copied %pre section log to system"
        break
    fi
done &

Enable installation monitoring

%end

%packages
@^minimal-environment

%post --nochroot
set -x -v
exec 1>/mnt/sysimage/root/ks-post-nochroot.log 2>&1

%end

%post
set -x -v
exec 1>/root/ks-post.log 2>&1

Start yum configuration
curl "http://192.168.111.139/cblr/svc/op/yum/profile/zxr-x86_64" --output /etc/yum.repos.d/cobbler-config.repo

End yum configuration

Start post_install_network_config generated code
End post_install_network_config generated code

Start download cobbler managed config files (if applicable)
End download cobbler managed config files (if applicable)

Start koan environment setup
echo "export COBBLER_SERVER=192.168.111.139" > /etc/profile.d/cobbler.sh
echo "setenv COBBLER_SERVER 192.168.111.139" > /etc/profile.d/cobbler.csh
End koan environment setup

$SNIPPET('redhat_register')
Begin cobbler registration
cobbler registration is disabled in /etc/cobbler/settings.yaml
End cobbler registration

Enable post-install boot notification

Start final steps

curl "http://192.168.111.139/cblr/svc/op/autoinstall/profile/zxr-x86_64" -o /root/cobbler.ks
End final steps
%end

#如果是真实环境,那么部署就已经完成,如果是虚拟机就还需执行以下步骤
[root@localhost ~]# cd /usr/share/cobbler/bin/
[root@localhost bin]# ls
migrate-data-v2-to-v3.py  migrate-settings.sh  mkgrub.sh  settings-migration-v1-to-v2.sh
[root@localhost bin]# bash mkgrub.sh
[root@localhost bin]# cd /var/lib/cobbler/loaders/
[root@localhost loaders]# ll
total 72
drwxr-xr-x. 2 root root    79 Sep 24 16:57 grub
lrwxrwxrwx. 1 root root    31 Sep 24 16:57 ldlinux.c32 -> /usr/share/syslinux/ldlinux.c32
-rw-r--r--. 1 root root 26272 Sep 24 16:31 menu.c32
-rw-r--r--. 1 root root 42376 Sep 24 16:31 pxelinux.0

#进行同步
[root@localhost loaders]# cobbler sync

#重启服务
[root@localhost loaders]# systemctl restart httpd cobblerd rsyncd dhcpd

进行测试

安装一个空壳centos8的虚拟机,不需要给镜像
进来后就发现可以自动获取ip选择我们刚才上传的镜像

cobbler部署
正在安装包
cobbler部署
安装完成,登录查看ip
cobbler部署

web界面自动安装

cobbler部署
cobbler部署
cobbler部署
cobbler部署
cobbler部署
cobbler部署
cobbler部署
cobbler部署

Original: https://www.cnblogs.com/Their-own/p/16726055.html
Author: 事愿人为
Title: cobbler部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573884/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • jQuery 遍历

    下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行…

    Linux 2023年6月13日
    083
  • Linux命令篇-sed 命令

    sed – stream editor for filtering and transforming text; sed:利用脚本来处理、编辑文本文件; &#x…

    Linux 2023年6月13日
    089
  • Shell脚本编程初体验

    通常,当人们提到”shell脚本语言”时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言。脚本语言是与计算机交流的另外…

    Linux 2023年5月28日
    089
  • docker 部署etcd

    原文链接:https://www.zhoubotong.site/post/77.html安装docker-compose这里就不介绍了,直接进入正题:创建etcd数据目录(根据需…

    Linux 2023年6月6日
    096
  • [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio

    1、GNU Radio 是什么 2、我为什么要用 GNU Radio 3、数字信号处理 3.1 一点信号理论 3.2 将数字信号处理应用于无线电传输 4、基于流程图的模块化数字信号…

    Linux 2023年6月8日
    0129
  • LM算法探讨(附python代码)

    1. 案例分析 考虑如下公式: [\gamma_i=\frac{2\pi}{\lambda}\times 2 \sqrt{(x_i-x_p)^2+(y_i-y_p)^2+(z_i-…

    Linux 2023年6月14日
    0139
  • 配置git环境与项目创建

    主要用于记录上课笔记,方便以后复习 acgit的地址:https://git.acwing.com/wyw/kob1/ 1. 项目模块的包含 1.1 采用前后端分离 Web端大概框…

    Linux 2023年6月6日
    0108
  • Redis监控技巧(转)

    来自:http://blog.nosqlfan.com/html/4166.html Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,你只需要执行下面一条…

    Linux 2023年5月28日
    085
  • [数据库]ACID、CAP、BASE特性

    SQL与noSQL 对比项 关系型SQL 非关系型SQL 关系表 数据集(键值/JSON文档/哈希表/其它) 结构化、提前定义表结构 动态调整模式,非结构化 纵向扩展,提高处理能力…

    Linux 2023年6月13日
    080
  • 【Javaweb】JSP标准标签库

    JSTL 1.什么是JSTL 2.版本 3.标签函数库 4.优点 JSTL基本概念 标签(Tag) 标签库(Tag library) 标签库描述文件(Tag Library Des…

    Linux 2023年6月14日
    0124
  • 超好用的UnixLinux 命令技巧 大神为你详细解读

    1、删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /…

    Linux 2023年6月14日
    088
  • 正则表达

    常用表达式 单字符:. : 除换行以外所有字符[] :[aoe] [a-w] 匹配集合中任意一个字符\d :数字 [0-9]\D : 非数字\w :数字、字母、下划线、中文\W :…

    Linux 2023年6月13日
    073
  • Nginx配置中遇到到的问题和解决方案

    关于Nginx配置中遇到到的问题和解决方案 整理知识,学习笔记 Nginx配置别名(alias)及PHP解析 Nginx配置别名(alias)及PHP解析。 语法规则: locat…

    Linux 2023年6月13日
    075
  • 从前,有一个简单的通道系统叫尤娜……

    从前,有个女生宿舍,住着小A、小B、尤娜和我4个人。有天,小A不小心把小B的床板坐塌了。小B非常生气,当场和小A翻脸。不论人缘最好的尤娜怎么中间调解都不管用。一直到毕业,小A和小B…

    Linux 2023年6月14日
    0109
  • 域控制器所需的DNS SRV记录没有在DNS中注册的解决方法

    搭建完AD和DNS之后,发现在DNS的正向查找区域没有SRV记录,并且客户端无法加入到AD中,如下 解决方法 删除正向查找区域下的目录 然后选择”正向查找区域&#822…

    Linux 2023年6月14日
    092
  • Mysql数据库服务端的安装

    一般提到Mysql数据库的安装在工作当中是说的安装数据库管理软件的服务端,服务端的安装可以安装在Windows环境,也可以安装在Linux环境。 Windows环境安装:目前安装比…

    Linux 2023年6月14日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球