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. 自定义vue的loading插件

    在一般的vue项目中,都会用到Loading或者Alert之类的弹窗浮层,而他们是一种比较高频率出现的组件. 一般情况下,我们都会去直接import该组件,然后直接以标签的形式引用进去当前页面组件中, ...

  2. 6、zabbix自定义监控

    一.概述 为什么需要自定义监控呢? 虽然zabbix已经给我们准备好了很多的模板,但是有的东西还是无法监控,这时候就要我们自定义监控了. 自定义监控的思路? 比如我们现在想要监控这个值,如下所示,模板 ...

  3. Pwnable-mistake

    先看看c的源码 #include <stdio.h> #include <fcntl.h> #define PW_LEN 10 #define XORKEY 1 void xo ...

  4. lua 7 运算符

    转自:http://www.runoob.com/lua/lua-miscellaneous-operator.html Lua提供了以下几种运算符类型: 算术运算符 关系运算符 逻辑运算符 其他运算 ...

  5. python27期python连接数据库:

    import pymysql创建connectinon对象:con = pymysql.connect(host = "localhost",user = "root&q ...

  6. Win10安装 oracle11g 出现INS-13001环境不满足最低要求解决方法

    Win10安装 oracle11g 出现INS-13001环境不满足最低要求 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找到cvu_prereq.xml文件,用note ...

  7. MySQL实战45讲学习笔记:第四十四讲

    一.引子 这是我们专栏的最后一篇答疑文章,今天我们来说说一些好问题. 在我看来,能够帮我们扩展一个逻辑的边界的问题,就是好问题.因为通过解决这样的问题,能够加深我们对这个逻辑的理解,或者帮我们关联到另 ...

  8. Paper | Noise2Noise: Learning Image Restoration without Clean Data

    目录 故事背景 算法原理 点估计 神经网络算法与点估计的关系 核心思想 回头品味 实验 高斯 其他生成噪声 发表在2018 ICML. 摘要 We apply basic statistical re ...

  9. vue 使用localstorage实现面包屑

    mutation.js代码: changeRoute(state, val) { let routeList = state.routeList; let isFind = false; let fi ...

  10. (四十一)golang--goroutine

    首先得了解: 进程 线程 并发 并行 Go协程和Go主线程: 主线程:相当于进程:直接作用于cpu上,是重量级的,是物理态的: 协程:相当于轻量级的线程:由主协程开启,是逻辑态的: Go协程的特点: ...