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)

大家都在看

  • 统计每个月兔子的总数—牛客网

    统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com) #include using namespace std; int main() { //1 1 2 3 5 …

    Linux 2023年6月13日
    096
  • node热加载

    node可以通过require热加载文件,这里先提一下require的加载方式:当我们第一次使用require加载模块时require会把被加载文件的绝对路径作为key存放在req…

    Linux 2023年6月14日
    0102
  • Linux 配置Java环境变量

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 注:目前在官网下载的时候需要登陆,这边分享一个账号,方便下载 账号:2696671285@qq.com密码:Ora…

    Linux 2023年6月14日
    085
  • 常见开发模型-敏捷开发与瀑布开发模型详解

    引言 在学习软件工程的时候接触过一些软件工程开发模型的相关概念,其中,印象比较深刻的就是瀑布模型和敏捷开发模型。这两种模型在日常的软件开发中都是非常常用的,但是它们也有比较大的区别…

    Linux 2023年6月7日
    0132
  • Java多线程volatile、ThreadLocal、线程池、atomic

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    094
  • keil使用汇总

    ​ 一:参考博客 参考的教程如下: 首先必须声明的一点是所有的博客都来自于博主strongerHuang,我只是为了记录方便copy下来,如有侵权,请联系删除帖子。链接地址如下:h…

    Linux 2023年6月13日
    0126
  • 2020年12月-第02阶段-前端基础-品优购项目规范

    代码规范 1. 概述 欢迎使用品优购代码规范, 这个是我借鉴京东前端代码规范,组织的品优购内部规范。旨在增强团队开发协作、提高代码质量和打造开发基石的编码规范, 以下规范是团队基本…

    Linux 2023年6月8日
    0107
  • 基于LNMP快速简单搭建wordpress平台

    一、WordPress 简介 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把WordPress当…

    Linux 2023年6月7日
    0105
  • Linux驱动编程1——内核编译

    1.安装必要的内核开发包,包括gcc、make、libncurses-dev。 $ apt-get install gcc make libncurses-dev 2.$ make…

    Linux 2023年6月8日
    097
  • 零成本搭建个人博客之迁移Pages和域名

    在上文[零成本搭建个人博客之搭建篇]中,我将Hugo博客搭建到 Github Page上,后来考虑到用 Cloudflare cdn加速,干脆就把博客站点迁移到Cloudflare…

    Linux 2023年6月7日
    089
  • linux添加磁盘及分区挂载

    磁盘管理 1.为什么要添加磁盘 2.系统添加磁盘并分区 磁盘管理 1.为什么要添加磁盘 随着系统的使用,磁盘的内容会越来越少,所以有必要添加磁盘来增加空间。 [En] With t…

    Linux 2023年5月27日
    095
  • redis的三种集群方式

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/heqiyoujing/p/14494037.htmlA…

    Linux 2023年5月28日
    0103
  • Java实现两种队列(数组和链表)

    @date 2022-09-13 17:50*/public class QueueLinked{ private static class Node{E item;Node ne…

    Linux 2023年6月14日
    0133
  • nginx 修改文件上传大小限制

    修改nginx的配置文件,添加client_max_body_size 字段 注:client_max_body_size必须要放在server下的server_name下,而不是…

    Linux 2023年6月8日
    0100
  • Redis 用的很溜,了解过它用的什么协议吗?

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白…

    Linux 2023年5月28日
    0112
  • 15、16、17思维导图

    posted @2022-04-24 10:20 20191223张俊怡 阅读(31 ) 评论() 编辑 Original: https://www.cnblogs.com/zzj…

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