Cobbler 无人值守安装系统 CentOS 7

1、实验描述

1.1 概述

作为运维,在公司经常遇到一些机械性重复工作要做,例如:为新机器装系统,一台两台机器装系统,可以用光盘、U盘等介质安装,1小时也完成了,但是如果有成百台的服务器还要用光盘、U盘去安装,就显得有些力不从心了。PXE技术就能很好的解决这个问题,本文将会对PXE的工作原理有所介绍,而cobbler则是基于PXE技术的工作原理的二次封装,通过命令的方式简化了PXE配置过程。

Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。

Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。

Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。

【Cobbler官网】点我快速打开文章

1.2 PXE原理

1. 原理与概念

事实上把PXE称作是一种引导方式而不是安装方式似乎更加准确,PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动,但是有一个前提条件是计算机的网卡必须具有引导功能,这个网卡中要有一个PXE客户端。当计算机POST自检成功以后,BIOS把网卡中ROM的PXE客户端调入内存执行,PXE客户端通过网络中的DHCP服务器获取一个IP地址,拿到IP地址以后PXE继续引导计算机与网络中的TFTP客户端建立连接,从而从TFTP服务器中获取开机引导文件之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。

2. 工作步骤

原理介绍
  • Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
  • Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
  • Client执行接收到的pxelinux.0文件
  • Client向TFTP Server发送针对本机的配置信息文件(在TFTP服务的pxelinux.cfg目录下,这是系统菜单文件,格式和isolinux.cfg格式一样,功能也是类似),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
  • Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client
  • Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
  • Client启动Linux内核
  • Client下载安装源文件,读取自动化安装脚本

1.3 Cobbler

1. 简单介绍

Cobbler是一个Linux服务器快速网络安装的服务,由python开发,小巧轻便(15k行python代码),可以通过PXE的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS,TFTP、RSYNC以及yum仓库、构造系统ISO镜像。

Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

2. 工作流程

  • client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器 (cobbler server)发送其分配好的一个IP
  • DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
  • client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
  • cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和 port
  • client裸机通过上面告知的TFTP server地址通信,下载引导文件
  • client裸机执行执行该引导文件,确定加载信息,选择要安装的os, 期间会再向cobbler server请求kickstart文件和os image
  • cobbler server发送请求的kickstart和os iamge
  • client裸机加载kickstart文件
  • client裸机接收os image,安装该os image

3. 集成服务

  • PXE服务支持
  • DHCP服务管理
  • DNS服务管理(可选bind,dnsmasq)
  • 电源管理
  • Kickstart服务支持
  • YUM仓库管理
  • TFTP(PXE启动时需要)
  • Apache(提供kickstart的安装源,并提供定制化的kickstart配置)

4. 配置目录

配置文件目录:
/etc/cobbler
/etc/cobbler/settings : cobbler 主配置文件
/etc/cobbler/iso/: iso模板配置文件
/etc/cobbler/pxe: pxe模板文件
/etc/cobbler/power: 电源配置文件
/etc/cobbler/user.conf: web服务授权配置文件
/etc/cobbler/users.digest: web访问的用户名密码配置文件
/etc/cobbler/dhcp.template : dhcp服务器的的配置末班
/etc/cobbler/dnsmasq.template : dns服务器的配置模板
/etc/cobbler/tftpd.template : tftp服务的配置模板
/etc/cobbler/modules.conf : 模块的配置文件
数据目录:
/var/lib/cobbler/config/: 用于存放distros,system,profiles 等信 息配置文件
/var/lib/cobbler/triggers/: 用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstart/: 默认存放kickstart文件
/var/lib/cobbler/loaders/: 存放各种引导程序  镜像目录
/var/www/cobbler/ks_mirror/: 导入的发行版系统的所有数据
/var/www/cobbler/images/ : 导入发行版的kernel和initrd镜像用于 远程网络启动
/var/www/cobbler/repo_mirror/: yum 仓库存储目录
日志目录:
/var/log/cobbler/installing: 客户端安装日志
/var/log/cobbler/cobbler.log : cobbler日志

5. 命令介绍

cobbler commands介绍
cobbler check 核对当前设置是否有问题
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息

6. 参数介绍

/etc/cobbler/settings中重要的参数设置

default_password_crypted: "$1$gEc7ilpP$pg5iSOj/mlxTxEslhRvyp/"  # 新装系统的默认root密码
manage_dhcp:1  # 用Cobbler管理DHCP
manage_tftpd:1
pxe_just_once:1  # 防止循环装系统,适用于服务器第一启动项是PXE启动。
next_server:< tftp服务器的 IP 地址>
server:  # server,Cobbler服务器的IP

2、实验环境

【你可能需要】【CentOS 7 搭建模板机】点我快速打开文章

【你可能需要】【VMware 从模板机快速克隆多台】点我快速打开文章

【你可能需要】【CentOS 7 命令行显示优化】点我快速打开文章

【你可看需要】【CentOS 7 配置yum源】点我快速打开文章

虚拟机

  • 系统:CenOS 7.6
  • 内存:1G+
  • 数量:2台
  • 硬盘:20G+
  • 备注:一台有系统,一台无系统

使用软件的版本:VMware 15 Pro

3、实验工具

【VMware12&15】【001-VMware 12&15】点我快速打开分享(若异常,请私信,万分感谢) 【提取码:0rb9 】

【CentOS7.6】【002-CentOS 7.6】点我快速打开分享(若异常,请私信,万分感谢) 【提取码:9tri 】

4、实验步骤

4.1 部署

1. 安装相关软件

yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd xinetd &>/dev/null

echo $?

2. 启动与自启动

systemctl enable httpd
systemctl start httpd

systemctl start cobblerd.service
systemctl enable cobblerd.service

3. 核对当前设置

cobbler check

4. 解决相关问题

备份文件
cp /etc/cobbler/settings{,.bak}

设置变量
ifconfig eth0|awk 'NR==2{print $2}'

IP=$(ifconfig eth0|awk 'NR==2{print $2}')

修改配置
sed -i "s/server: 127.0.0.1/server: $IP/" /etc/cobbler/settings
grep "$IP" /etc/cobbler/settings

sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
grep "manage_dhcp: 1" /etc/cobbler/settings

sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
grep "pxe_just_once: 1" /etc/cobbler/settings

openssl passwd -1 -salt 'mine' '123456'
SSL=$(openssl passwd -1 -salt 'mine' '123456')

sed -i "s/default_password_crypted.*/default_password_crypted: "$SSL"/" /etc/cobbler/settings
grep "$SSL" /etc/cobbler/settings

cp /etc/xinetd.d/tftp{,.bak}
sed -i '/disable/s#yes#no#' /etc/xinetd.d/tftp
grep disable /etc/xinetd.d/tftp

下载文件
cobbler get-loaders

ls /var/lib/cobbler/loaders/

添加服务
systemctl enable rsyncd

systemctl start rsyncd

5. 再次核对设置

systemctl restart cobblerd.service

cobbler check

以上两个问题暂时可以忽略

6. 配置相关模板

修改cobbler的dhcp模版,不要直接修改dhcp本身的配置文件,因为cobbler会覆盖。

备份与查看
cp /etc/cobbler/dhcp.template{,.bak}

sed -n '21,25p' /etc/cobbler/dhcp.template

修改与确认
sed -i 's#192.168.1.0#10.0.0.0#' /etc/cobbler/dhcp.template
sed -i 's#192.168.1.5#10.0.0.254#' /etc/cobbler/dhcp.template
sed -i 's#192.168.1.100 192.168.1.254#10.0.0.150 10.0.0.190#' \
  /etc/cobbler/dhcp.template
sed -i 's#192.168.1.1#223.5.5.5#' /etc/cobbler/dhcp.template

sed -n '21,25p' /etc/cobbler/dhcp.template

重启与同步

重启服务并同步配置,改完dhcp必须要sync同步配置

systemctl restart cobblerd.service

cobbler sync

检查与确认
netstat -lnup|grep dhcp

sed -n '19,23p' /etc/dhcp/dhcpd.conf

6. 导入相应镜像

根据需求导入不同的镜像,这里用 CentOS 7.6 的镜像为演示

检查与确认

挂载与导入

时间会比较久,请耐心等待

mount /dev/cdrom /mnt

cobbler import --path=/mnt --name=Centos-7.6 --arch=x86_64

# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.6-x86_64,
   如果重复,系统会提示导入失败。

查看与确认
cobbler distro list

cobbler list

6. 查看相关信息

查看镜像存放的目录

镜像存放目录,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-7.1-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间。

ls /var/www/cobbler/ks_mirror

ls /var/www/cobbler/ks_mirror/Centos-7.6-x86_64

du -smh /var/www/cobbler/ks_mirror/Centos-7.6-x86_64/

查看所有的profile设置
cobbler profile report

查看指定的profile设置
cobbler profile report --name=CentOS-7.6-x86_64

查看安装镜像文件信息
cobbler distro report --name=CentOS-7.6-x86_64

7. 编写相关配置

kickstarts 配置文件

kickstarts 配置文件自带很多,不过一般都是根据需求定制的

ls /var/lib/cobbler/kickstarts/

这里就简单演示一下
vim /var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.cfg

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$m1pE0DG6$vALBphGGynqvUzfJaWZ6U1
# Use network installation
url --url="$tree"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network  --bootproto=dhcp --device=eth0
network  --bootproto=dhcp --device=eth1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=200
part swap --fstype="swap" --size=1024
part / --fstype="ext4" --grow --size=1
%packages
@base
@core
@compat-libraries
@debugging
@development
@gnome-desktop
@X Window System
%end

cat /var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.cfg

指定ks.cfg文件及调整内核参数

修改安装系统的内核参数,在CentOS7系统有一个地方变了,就是网卡名变成eno xxx这种形式,但是为了运维标准化,我们需要将它变成我们常用的 eth0,因此使用下面的参数。但要注意是CentOS7才需要下面的步骤,CentOS6 不需要。

cobbler profile edit --name=CentOS-7.6-x86_64 \
  --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.cfg

cobbler profile edit --name=CentOS-7.6-x86_64 \
  --kopts='net.ifnames=0 biosdevname=0'

cobbler profile report|sed -n '9,11p'

写完 ks 文件之后,先通过 validateks 测试一下有没有语法错误
cobbler validateks

同步 cobbler,每次修改完都要同步一次
cobbler sync

为避免发生未知问题,先把服务端所有服务重启
systemctl restart xinetd.service

systemctl restart cobblerd.service

systemctl restart httpd.service

4.2 验证

1. 新建

内存稍微给大一些

2. 测试

用户:root,密码:123456

3. 删除

【本文图片下载地址】【022-cobbler】点我快速打开分享(若异常,请私信,万分感谢) 【提取码:i7c1 】

今天你学习了吗?若有疑问,请留言、私信或加QQ群:647033350,大家一起进步吧!

其他综合-Cobbler无人值守安装系统 CentOS 7的更多相关文章

  1. 其他综合-Kickstart无人值守安装系统CentOS 7

    Kickstart无人值守安装系统CentOS 7 1.概述 1.1 关于PXE Preboot Execution Environment 翻译过来就是预启动执行环境:简称 PXE :传统安装操作系 ...

  2. CentOS7.x安装cobbler无人值守安装系统

    CentOS7.x cobbler无人值守安装 cobbler介绍 自打若干年前 Red Hat,推出了 Kickstart,不再需要刻了光盘一台一台地安装 Linux,只要搞定 PXE.DHCP.T ...

  3. Cobbler无人值守安装系统

    环境说明 系统版本    CentOS 6.9 x86_64 Cobbler是一款Linux安装服务器,可以快速设置网络安装环境.它粘合在一起并自动执行许多相关的Linux任务,因此部署新系统时不必在 ...

  4. (转)COBBLER无人值守安装

    COBBLER无人值守安装 说在最前面的话 在看Cobbler之前请大家先看一下Kickstart无人值守安装,了解一下Cobbler的实现原理.但是Cobbler是独立的,不需要先安装Kicksta ...

  5. PXE+Kickstart无人值守安装系统re

    PXE(Preboot Excute Environment)预启动执行环境,可以让计算机通过网络启动系统,主要用于无人值守安装系统中引导客户端主机安装Linux操作系统. 由于之前有过使用cobbl ...

  6. 使用PXE+Kickstart无人值守安装系统

    PXE预启动执行环境(即Preboot execute environment) 是一种能够让计算机通过网络启动的引导方式,只要网卡支持PXE协议即可使用,用于在无人值守安装系统服务中引导客户机安装服 ...

  7. cobbler PXE 安装系统时出现的问题

    cobbler PXE 安装系统时出现的问题 1.安装包未找到.解决方法:ios镜像里没有软件包,换掉该软件包的ios镜像,或者在ks.cfg 文件里删去或注释掉%packages 里指定安装的软件包 ...

  8. PXE+DHCP+TFTP+Cobbler 无人值守安装centos 7

    Cobbler(补鞋匠)是通过将DHCP.TFTP.DNS.HTTP等服务进行集成,创建一个中央管理节点,其可以实现的功能有配置服务,创建存储库,解压缩操作系统媒介,代理或集成一个配置管理系统,控制电 ...

  9. Cobbler批量安装Ubuntu/CentOS系统

    2013-07-25    一.安装和修改cobbler配置 1. Cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包, 确保epel-release包的版本为最新,当前最新版本为 ...

随机推荐

  1. softmax求导、cross-entropy求导及label smoothing

    softmax求导 softmax层的输出为 其中,表示第L层第j个神经元的输入,表示第L层第j个神经元的输出,e表示自然常数. 现在求对的导数, 如果j=i,   1 如果ji, 2 cross-e ...

  2. 常用的架包对应的maven配置

    <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <grou ...

  3. day73_10_18视图家族与序列化的传参。

    一.序列化传参 在视图类中实例化序列对象时,还有一个参数为context,这个参数是存放字典,将所有从前端传来的数据传输到序列化中,比如需要在序列化中校验当前用户. 传入的request参数也是一个对 ...

  4. LeetCode236. 二叉树的最近公共祖先

    * @lc app=leetcode.cn id=236 lang=cpp  *  * [236] 二叉树的最近公共祖先  *  * https://leetcode-cn.com/problems/ ...

  5. C 函数与指针(function & pointer)

    C 函数与指针(function & pointer) /* * function.c * 函数在C中的使用 * */ #include <stdio.h> int noswap( ...

  6. 【day08】PHP

    一. 函数 1.函数:封装的,可以重复使用的完成特定功能的代码段. 2.函数分类:   (1)系统函数   (2)自定义函数 3.自定义函数   (1)格式   function 函数名称([参数[= ...

  7. 【CF280D】k-Maximum Subsequence Sum(大码量多细节线段树)

    点此看题面 大致题意: 给你一个序列,让你支持单点修改以及询问给定区间内选出至多\(k\)个不相交子区间和的最大值. 题意转换 这道题看似很不可做,实际上可以通过一个简单转换让其变可做. 考虑每次选出 ...

  8. Spring Cloud和Spring Boot的版本问题

    很多人在使用springboot和springcloud,但是对于这两者之间的版本关系不是很清楚,特别是在面临升级的时候不知道该如何操作.本文简要摘录的官方文档的部分内容作为依据,供广大同行参考. 问 ...

  9. 性能对比:aelf智能合约运行环境性能是evm的1000倍

    测试用例及代码库 机器配置 测试结果 3.1 EVM 3.2 AElf 3.2.1 LoopDivAdd10M 3.2.2 LoopExpNop1M 测试结论 近期对标以太坊做了一系列针对测试,在此次 ...

  10. JavaScript(这里主要侧重于 JavaScript HTML DOM)杂项

    JavaScript基础 ------学习网站https://www.runoob.com/js/js-tutorial.html Javascript语言的特点: 安全性:2.易用性:3.动态交互性 ...