Cobbler 自动装机系统
目录
文章目录
- 目录
- PXE
- PXE 的运行原理
- PXE 的引导安装过程
- Cobbler
- Cobbler 的工作原理
- 安装软件服务
- 配置软件服务
- 配置 Cobbler
- 配置 DHCP
- 配置 TFTP
- 检查环境
- 制作 OS Distro(发行版)引导选项
- 制作 CentOS7 的 OS Distro
- 编写 KickStart 无人值守文件
- CentOS-KVM
- CentOS7 BM
- 测试
PXE
PXE(Preboot execute environment,预启动执行环境)是目前主流的无盘启动技术,它可以使计算机通过网络而不是从本地硬盘或光驱等设备启动。
PXE 采用 C/S 架构,支持 Client 通过网络从远端 Server 下载操作系统映像,并由此支持通过网络启动操作系统。利用 PXE 进行网络安装的前提是待安装服务器具有支持 PXE 的网卡和主板 BIOS,实际上现在的网卡一般都内嵌支持 PXE 的 ROM 芯片。
iPXE 是 PXE 的扩展版,支持更多的协议,兼容性更好,不挑网卡,支持 HTTP 协议,可以通过 HTTP、ISCSI SAN、FC SAN 等方式启动。iPXE 的官方网站:http://ipxe.org/
PXE 的运行原理
当进行操作系统引导时,BIOS 首先会把 PXE Client 调入内存中执行。PXE Client 被载入内存后,它便同时具有 DHCP Client 和 TFTP Client 的功能,DHCP Client 会向 DHCP Server 请求 IP 分配给将要安装操作系统的终端主机,然后由 PXE Client 将放置在远端的启动软件包通过 TFTP(Trivial File Transfer Protocol)或 MTFTP(Multicast Trivial File Transfer Protocol)下载到本地内存中执行。由这个启动软件包完成终端的基本软件设置,从而引导预先安装在服务器中的终端操作系统。
PXE 还需要依赖 NBP(Network Bootstrap Program)技术。NBP 相当于网络版的 GRUB(Grand Unified Bootloader)或 LILO(Linux Loader),负责通过网络的方式将 OS Kernel 文件加载到主机内存中,以便 OS 可以通过网络进行引导安装。
PXE 的引导安装过程
- 远程主机开机启动网络启动,开机后会广播给 DHCP 服务器,分配给远程主机一个 IP 地址。
- 拿到 IP 地址后,远程主机向 Cobbler Server 发送请求下载 OS 启动文件。
- Cobbler Server 告诉远程主机 OS 文件的下载路径,包括 TFTP Server 的 IP 地址和端口等。
- 远程主机到 TFTP Server 下载 OS 引导文件。
- 远程主机执行 OS 引导文件,加载信息和 menu.c32,启动选择菜单,选择要安装的 OS,然后向 Cobbler Server 请求 kickstart 文件和OS 镜像文件。
- 远程主机加载 kickstart 文件,开始安装 OS。
Cobbler
Cobbler 是在 2008 年由 RedHat 发布的网络安装服务器软件项目,支持大多数 Linux 发行版,包括:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE,也支持网络安装 Windows。Cobbler 的最终目的是实现无需进行人工干预即可安装主机操作系统
PXE 是由 Intel 开发的技术,支持通过网络来启动操作系统,也可以实现通过网络来批量的安装操作系统。
Cobbler 正是基于 PXE 的二次封装,将多种安装参数封装到一个菜单当中,使用简单的命令即可完成 PXE 网络安装环境的配置,同时还可以管理 DHCP、DNS、TFTP、RSYNC 以及 YUM 仓库、构造系统 ISO 镜像等。Cobbler 通过将 DHCP、TFTP、DNS、HTTP 等服务进行集成,构建了一个中央管理节点。另外,PXE 只支持 MBR 而不支持 UEFI,Cobbler 则同时支持 MBR 和 UEFI。
Cobbller 还提供了 CLI 和 WEB 两种安装方式,使用起来更加的友好。
cobbler check # 核对当前设置是否有问题
cobbler list # 列出所有的 Cobbler 元素
cobbler report # 列出元素的详细信息
cobbler sync # 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync # 同步 YUM 仓库
cobbler distro # 看导入的发行版系统信息
cobbler distro list # 查看存在几套安装系统
cobbler system # 查看添加的系统信息
cobbler profile # 查看配置信息
cobbler profile list # 查看安装系统的启动菜单项
Cobbler 的工作原理
Server:
- 启动 Cobbler 服务进程。
- 执行 cobbler check 错误检查。
- 执行 cobbler sync 同步更新。
- 复制 OS 相关启动文件文件到 TFTP 目录中。
- 启动 DHCP 服务。
- DHCP 服务分配 IP 地址。
- TFTP 服务传输 OS 启动文件。
- Server 接收到 OS 安装请求。
- Server 发送 ISO 镜像与 Kickstart 文件。
Client:
- Client 以 PXE 方式启动。
- DHCP Client 获取到 IP 地址。
- TFTP Client 获取启动 OS 文件。
- 进入 Cobbler 安装选择界面。
- Client 确定加载信息。
- 根据配置信息准备安装 OS。
- 加载 Kickstart 文件。
- 传输 OS 安装的相关文件。
- 进行安装系统。
安装软件服务
安装软件服务,包括:
- Cobbler
- DHCP
- TFTP
- HTTP
- RSYNC
- DNS(可选)
其中,DHCP、TFTP、RSYNC 都可以交由 Cobbler 来进行管理,例如:重启 cobblerd 时,会自动连带重启 dhcpd、tftpd 等。
# 关闭防火墙
$ systemctl disable firewalld.service && systemctl stop firewalld.service && systemctl status firewalld.service# 关闭 SELinux
$ sudo setenforce 0
$ sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 安装软件
$ yum install epel-release -y
$ yum install cobbler cobbler-web -y
$ yum install dhcp -y
$ yum install tftp-server xinetd -y
$ yum install httpd -y
$ yum install pykickstart -y# 启动服务
$ systemctl enable tftp && systemctl start tftp && systemctl status tftp
$ systemctl enable xinetd && systemctl start xinetd && systemctl status xinetd
$ systemctl enable httpd && systemctl start httpd && systemctl status httpd
$ systemctl enable rsyncd && systemctl start rsyncd && systemctl status rsyncd
$ systemctl enable cobblerd && systemctl start cobblerd && systemctl status cobblerd
配置软件服务
配置 Cobbler
# Cobbler Server IP address
$ sed -i 's%^server: 127.0.0.1%server: 192.168.1.253%g' /etc/cobbler/settings # TFTP 等 Next Server IP address
$ sed -i 's%^next_server: 127.0.0.1%next_server: 192.168.1.253%g' /etc/cobbler/settings # 为新安装的主机设置一个默认的用户口令
$ openssl passwd -1 <your-password-here>
$1$IIOrD77Q$LLsUPbSkOkE9g7F218SCU1
$ sed -i 's%^default_password_crypted.*%default_password_crypted: "$1$IIOrD77Q$LLsUPbSkOkE9g7F218SCU1"%g' /etc/cobbler/settings# 指定由 Cobbler 来管理 DHCP
$ sed -i 's%manage_dhcp: 0%manage_dhcp: 1%g' /etc/cobbler/settings # 指定由 Cobbler 来管理 TFTP
$ sed -i 's%manage_tftpd: 0%manage_tftpd: 1%g' /etc/cobbler/settings # 指定由 Cobbler 来管理 RSYNC
$ sed -i 's%manage_rsync: 0%manage_rsync: 1%g' /etc/cobbler/settings
配置 DHCP
编辑 Cobbler 的 DHCP 配置模版,执行 cobbler sync
时,会根据 template 自动更新 /etc/dhcp/dhcpd.conf 配置文件。
$ vi /etc/cobbler/dhcp.template
...
subnet 192.168.1.0 netmask 255.255.255.0 {option routers 192.168.1.1;option domain-name-servers 114.114.114.114;option subnet-mask 255.255.255.0;range dynamic-bootp 192.168.1.200 192.168.1.250;default-lease-time 21600;max-lease-time 43200;next-server $next_server;
...
配置 TFTP
# 编辑 XINETD 服务
$ vim /etc/xinetd.d/tftp
...
disable=no
...
# 添加 "-v" 选项,打印详细日志。
server_args = -B 1380 -v -s /var/lib/tftpboot$ systemctl restart xinetd.service$ netstat -anplut | grep :69
udp 0 0 0.0.0.0:69 0.0.0.0:* 2672/xinetd
udp6 0 0 :::69 :::* 1/systemd# 查看 TFTP 日志文件
$ tail -f /var/log/messages
检查环境
检查目前的环境中是否还缺少哪些东西。
$ cobbler checkThe 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, elilo.efi, and yaboot.
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
逐一修复以上问题:
# 1.
# PXE boot for legacy mode(BIOS)
$ yum install syslinux -y
$ cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
$ cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
# PXE boot for UEFI mode
$ git clone https://github.com/cobbler/cobbler-loaders.git
$ cp cobbler-loaders/grub-0.97-99.el6/* /var/lib/cobbler/loaders# 2.
$ yum install debmirror -y
$ vi /etc/debmirror.conf
...
# @dists="sid";
# @arches="i386";# 3.
$ yum install fence-agents -y
检查目前的环境中是否还缺少哪些东西:
$ cobbler check# 重启服务并同步配置更新。
$ systemctl restart cobblerd
$ cobbler sync
制作 OS Distro(发行版)引导选项
定义和设置 OS 系统发行版本,包含了 OS 的内核、引导文件,以及安装包等内容,就相当于一个 Linux 操作系统的 ISO 镜像。如:多个发行版本,同一发行版不同版本号。
制作 CentOS7 的 OS Distro
- 制作 YUM 仓库源:
$ mkdir /mnt/centos7
$ mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-2003.iso /mnt/centos7
$ vi /etc/fstab
...
/root/CentOS-7-x86_64-Minimal-2003.iso /mnt/centos7 iso9660 defaults,loop 0 0
- 指定 YUM repo 来创建一个 OS Distro:
$ cobbler import --path=/mnt/centos7 --name=centos7 --arch=x86_64# 查看已经导入的系统
$ cobbler distro listcentos7-x86_64# 查看 Distro 配置
$ cobbler distro report
Name : centos7-x86_64
Architecture : x86_64
TFTP Boot Files : {}
Breed : redhat
Comment :
Fetchable Files : {}
Initrd : /var/www/cobbler/ks_mirror/centos7/images/pxeboot/initrd.img
Kernel : /var/www/cobbler/ks_mirror/centos7/images/pxeboot/vmlinuz
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/centos7-x86_64'}
Management Classes : []
OS Version : rhel7
Owners : ['admin']
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Template Files : {}$ ll /var/www/cobbler/ks_mirror/centos7
...
-rw-rw-r--. 1 root root 14 4月 20 2020 CentOS_BuildTag
drwxr-xr-x. 3 root root 35 4月 20 2020 EFI
-rw-rw-r--. 1 root root 227 8月 30 2017 EULA
-rw-rw-r--. 1 root root 18009 12月 9 2015 GPL
drwxr-xr-x. 3 root root 57 4月 20 2020 images
drwxr-xr-x. 2 root root 198 4月 20 2020 isolinux
drwxr-xr-x. 2 root root 43 4月 20 2020 LiveOS
drwxr-xr-x. 2 root root 28672 4月 21 2020 Packages
drwxrwxr-x. 2 root root 4096 4月 21 2020 repodata
-rw-rw-r--. 1 root root 1690 12月 9 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1690 12月 9 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 4月 21 2020 TRANS.TBL$ tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot
│ └── grub
│ └── menu.lst
├── elilo.efi
├── etc
├── grub
│ ├── efidefault
│ ├── grub-0.97-x86_64.efi
│ ├── grub-0.97-x86.efi
│ └── images -> ../images
├── images
│ └── centos7-x86_64
│ ├── initrd.img
│ └── vmlinuz
├── images2
├── memdisk
├── menu.c32
├── ppc
├── pxelinux.0
├── pxelinux.cfg
│ └── default
├── s390x
│ └── profile_list
└── yaboot
编写 KickStart 无人值守文件
CentOS-KVM
$ cd /var/lib/cobbler/kickstarts/
$ cp /root/anaconda-ks.cfg centos7-kvm.cfg$ cat centos7.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
url --url=$tree# Use graphical install
reboot
text# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'# System language
lang en_US.UTF-8# Network information
#network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain# Root password
rootpw --iscrypted $6$SjBydDw0Xikc834h$X49cIZb66TZvw/g1chkoS9Jwd8c3Zk03TAPZTRIq.lHg7RWwVcmhyBEM5ms5YmGxu3gJPTbNQRKG1.x2Un.P7/# System services
services --enabled="chronyd"# System timezone
timezone Asia/Shanghai --isUtc --nontp# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda# Partition clearing information
zerombr
clearpart --all# Disk partitioning information
autopart%packages
@^minimal
@core
chrony
kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%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
CentOS7 BM
$ cd /var/lib/cobbler/kickstarts/
$ cp /root/anaconda-ks.cfg centos7-bm.cfg$ vi centos7-bm.cfg#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512# Use CDROM installation media
url --url=$tree# Use graphical install
text# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'# System language
lang en_US.UTF-8# Network information
network --hostname=localhost.localdomain# Root password
rootpw --iscrypted $6$SjBydDw0Xikc834h$X49cIZb66TZvw/g1chkoS9Jwd8c3Zk03TAPZTRIq.lHg7RWwVcmhyBEM5ms5YmGxu3gJPTbNQRKG1.x2Un.P7/
user --name=fanguiju --password=$6$x76HMvL1SqK.qvZv$ZrBN18n1QO9nm7WWDI2vjngegQdXkQJoVmv7cNkn.s3WyzxURlS0Rw68f/My3B17r.A87Hl/JA.nROJZW052V0 --iscrypted --gecos="fanguiju"# System services
services --enabled="chronyd"# System timezone
timezone Asia/Shanghai --isUtc --nontp# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda# Partition clearing information
zerombr
clearpart --all# Disk partitioning information
autopart# Shutdown and power off the system after installation is finished
# to allow you to change the boot order or make other changes.
poweroff
# Alternatives are halt (default), reboot, and shutdown,
# which might not be suitable for unattended installations
#reboot%packages
@^minimal
@core
chrony
kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%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
关联 KS 文件到 Distro:
#
$ cobbler profile add \--name=centos7-x86_64 \--distro=centos7-x86_64 \--kickstart=/var/lib/cobbler/kickstarts/centos7.cfg
# --name 我们需要添加的启动菜单的名字
# --distro 我们自定制的 KS 文件关联的 OS 名称
# --kickstart 我们自定制的 KS 文件的路径# 查看对应的应答文件
$ cobbler profile listcentos7-x86_64# cobbler profile report
Name : centos7-x86_64
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : centos7-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/centos7.cfg
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <<inherit>>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Internal proxy :
Red Hat Management Key : <<inherit>>
Red Hat Management Server : <<inherit>>
Repos : []
Server Override : <<inherit>>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : xenpv
测试
使用 VM 环境来进行测试。
Cobbler 自动装机系统相关推荐
- Cobbler自动装机服务搭建步骤
Cobbler自动装机服务搭建步骤 1.1.导入epel源 2.安装Cobbler以及其相关服务软件包 各软件作用如下 3.修改cobbler主配置文件 4.启动相关服务并关闭防火墙和selinux ...
- 手动装机太麻烦?别慌Cobbler自动装机来帮你
Cobbler自动部署装机 一.Cobbler自动装机 装机步骤 1.导入epel源 2.安装相关服务软件包 3.修改cobbler主配置文件 4.启动相关服务并关闭防火墙 5.检查Cobbler设置 ...
- cobbler批量装机系统centos 6.4下安装配置
最近笔者研究cobbler批量装机系统. cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少. 这里就详细的介绍下笔者亲自经 ...
- CentOS7中搭建cobbler自动装机服务
一.实验环境一台centos7epel源网址 https://fedoraproject.org/wiki/EPEL?rd=Epel使用nat模式 二.实验步骤 1.下载epel源后进行文件夹挂载到l ...
- Cobbler自动装机(装机步骤,优化内容详解,导入系统镜像步骤,cobbler-web管理认证方式)
文章目录 前言 一:环境设置与安装 步骤 1.1:环境设置 1.2:安装信息库软件包 1.3:安装Cobbler环境 1.4:安装步骤 1.4.1:大致方向 1.4.2:cobbler工具配置(有工具 ...
- Cobbler——自动装机(内含详细操作过程)
文章目录 前言 一:环境准备与详细安装过程 1.1:环境准备 1.2:安装信息库软件包 1.3:安装Cobbler环境 1.4:安装步骤 1.4.1:大致思路 1.4.2:cobbler工具配置(有工 ...
- Linux Cobbler自动部署装机
Cobbler自动部署装机 一.实验准备 二.Cobbler自动装机服务搭建步骤 1.导入epel源 2.安装Cobbler以及其相关服务软件包 3.修改cobbler主配置文件 4.使用cobble ...
- 实验详解——Cobbler自动部署最小化安装
实验详解--Cobbler自动部署最小化安装 一.实验:自动部署 二.Cobbler自动装机服务搭建步骤 1.导入epel源并加载在线安装源 2.安装Cobbler以及其相关服务软件包 3.修改cob ...
- Cobbler自动化装机服务详细介绍
PS:本文为新手根据网络文章梳理而成,便于自己及网友更直观理解哈,参考文章见文末链接及小注标识,侵删 目录 PXE简介 kickstart简介 Cobbler简介 功能实现 一.PXE简介 PXE,就 ...
最新文章
- 小麦带你看postgres(代码模块结构)
- IOS多线程开发其实很简单
- mybatis与mysql调优_MySQL + mybatis的SQL优化方案
- 【Git笔记2】必知习惯和如何版本回退
- java split()方法_Java编程性能优化一些事儿
- 基于OGG Datahub插件将Oracle数据同步上云
- GridView 中 Bind和Eval的区别详解
- 羡慕,浙江大学的双 11 快递,全部由物流机器人配送
- Codeforces Round #511 (Div. 1) 题解
- matlab 计算图像的基本参数
- 【代码规范】Google C++开源风格指南
- Halcon开发环境和数据结构介绍——第1讲
- Eclipse ADT版本低的问题
- group + max函数_了解C ++中max()函数的工作方式
- jQuery 版本升级迁移
- OpenWrt使用IPV6+Aliddns实现远程管理路由
- 台湾--电话正则表达式
- 〖Python接口自动化测试实战篇②〗- 摒弃 ‘捉虫师’ 称号 - 你需要重新认识软件测试
- 对AWS的计费有点糊涂
- 宽带中KB与Kb的区别