IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Cobbler 自动装机系统 -> 正文阅读

[系统运维]Cobbler 自动装机系统

目录

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 的引导安装过程

在这里插入图片描述

  1. 远程主机开机启动网络启动,开机后会广播给 DHCP 服务器,分配给远程主机一个 IP 地址。
  2. 拿到 IP 地址后,远程主机向 Cobbler Server 发送请求下载 OS 启动文件。
  3. Cobbler Server 告诉远程主机 OS 文件的下载路径,包括 TFTP Server 的 IP 地址和端口等。
  4. 远程主机到 TFTP Server 下载 OS 引导文件。
  5. 远程主机执行 OS 引导文件,加载信息和 menu.c32,启动选择菜单,选择要安装的 OS,然后向 Cobbler Server 请求 kickstart 文件和OS 镜像文件。
  6. 远程主机加载 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:

  1. 启动 Cobbler 服务进程。
  2. 执行 cobbler check 错误检查。
  3. 执行 cobbler sync 同步更新。
  4. 复制 OS 相关启动文件文件到 TFTP 目录中。
  5. 启动 DHCP 服务。
  6. DHCP 服务分配 IP 地址。
  7. TFTP 服务传输 OS 启动文件。
  8. Server 接收到 OS 安装请求。
  9. Server 发送 ISO 镜像与 Kickstart 文件。

Client:

  1. Client 以 PXE 方式启动。
  2. DHCP Client 获取到 IP 地址。
  3. TFTP Client 获取启动 OS 文件。
  4. 进入 Cobbler 安装选择界面。
  5. Client 确定加载信息。
  6. 根据配置信息准备安装 OS。
  7. 加载 Kickstart 文件。
  8. 传输 OS 安装的相关文件。
  9. 进行安装系统。

安装 Cobbler

# 关闭防火墙
$ 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 来管理 RSYNC
$ sed -i 's%manage_rsync: 0%manage_rsync: 1%g' /etc/cobbler/settings 


# 编辑 Cobbler 的 DHCP 配置模版
$ 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;
...


# 编辑 XINETD 服务
$ vim /etc/xinetd.d/tftp
...
disable=no
$ 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


# 检查目前的环境中是否还缺少哪些东西
$ 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, 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. 
$ yum install syslinux -y
$ cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
$ cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/                  
$ ls /var/lib/cobbler/loaders/
 menu.c32  pxelinux.0

# 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

$ 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

$ cobbler import --path=/mnt/centos7 --name=centos7 --arch=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 420 2020 CentOS_BuildTag
drwxr-xr-x. 3 root root    35 420 2020 EFI
-rw-rw-r--. 1 root root   227 830 2017 EULA
-rw-rw-r--. 1 root root 18009 129 2015 GPL
drwxr-xr-x. 3 root root    57 420 2020 images
drwxr-xr-x. 2 root root   198 420 2020 isolinux
drwxr-xr-x. 2 root root    43 420 2020 LiveOS
drwxr-xr-x. 2 root root 28672 421 2020 Packages
drwxrwxr-x. 2 root root  4096 421 2020 repodata
-rw-rw-r--. 1 root root  1690 129 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root  1690 129 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root  2883 421 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 文件:
$ cd /var/lib/cobbler/kickstarts/
$ cp /root/anaconda-ks.cfg  centos7.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


# 查看已经导入的系统
$ cobbler distro list
   centos7-x86_64
   
# 关联应答文件
$ 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 list
   centos7-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 环境来进行测试。

在这里插入图片描述

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-21 21:33:29  更:2022-06-21 21:33:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:21:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码