Linux 运维手册之 COBBLER 系统自动化部署工具
后知后觉 暂无评论

Cobbler 是一款常用的实现自动化无人值守网络批量安装部署 Linux 系统工具。

软件概述

在企业环境中,建设新机房时会进行部署多台机器,手动安装不现实,硬盘对拷还需要修改配置文件。此时就可以使用 COBBLER 进行自动化部署。

COBBLER 是一个系统启动服务(BOOT SERVER),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。

该工具使用 Python 开发,使用简单的命令即可完成 PXE 网络安装环境的配置,同时还可以管理 DHCP、DNS 以及 yum 包镜像。

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

预制环境

KeyValues
服务器系统CentOS 7 x86_64
服务器IP地址192.168.2.10
客户机IP地址起始192.168.2.20
客户机IP地址终止192.168.2.100
子网掩码255.255.255.0
网关192.168.2.1
DNS192.168.2.1

安装 Cobbler 及其依赖

# yum install cobbler cobbler-web pykickstart debmirror rsync httpd dhcp tftp xinetd -y

启动 Cobbler 服务

# systemctl start cobblerd
# systemctl start httpd

服务状态检查

# cobbler check
小贴士:可以看到存在大量错误提示。

启用 cobbler 动态配置,如不启动则可以通过手动或 sed 命令替换配置。

#  sed -ri '/allow_dynamic_settings:/c \allow_dynamic_settings: 1' /etc/cobbler/settings

重启服务

# systemctl restart cobblerd

配置 Cobbler 服务

修改 Cobbler 服务器地址

请选择一个未占用的内网地址,本文以 192.168.2.10 为例。

选项 server 用于为 cobbler 服务器指定内网地址

# cobbler setting edit --name=server --value=192.168.2.10

修改 DHCP/PXE 网络引导地址

选项 next_server 是 DHCP/PXE 网络引导文件被下载的 TFTP 服务器的IP,在本例中它将和 server 设为相同的值。

# cobbler setting edit --name=next_server --value=192.168.2.10

配置 TFTP 服务

修改配置

# sed -ri '/disable/c\disable = no' /etc/xinetd.d/tftp

重启服务

# systemctl enable xinetd
# systemctl restart xinetd

启动 RSYNC 服务

# systemctl start rsyncd
# systemctl enable rsyncd

下载网络安装引导文件

# cobbler get-loaders

配置 DEBMIRROR

# sed -ri '/@dists=/c#@dists="sid";' /etc/debmirror.conf
# sed -ri '/@arches=/c#@arches="i386";' /etc/debmirror.conf

配置系统登录密码

# openssl passwd -1 -salt 'cobbler' 'Google.com'
$1$cobbler$/H/UPtchwN93I7u.VimeW0
# cobbler setting edit --name=default_password_crypted --value='$1$cobbler$/H/UPtchwN93I7u.VimeW0'

安装电源控制模块[可选]

[root@cobbler ~]# yum -y install cman fence-agents

开启 DHCP 地址分配

启用 COBBLER 的 DHCP 分配

# cobbler setting edit --name=manage_dhcp --value=1

修改 DHCP 模板

# vim /etc/cobbler/dhcp.template
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers             192.168.2.1;
option domain-name-servers 192.168.2.1;
option subnet-mask         255.255.255.0;
range dynamic-bootp        192.168.2.20 192.168.2.100;
default-lease-time         21600;
max-lease-time             43200;
next-server                $next_server;

重启并同步所有配置

# systemctl restart xinetd
# systemctl restart cobblerd
# cobbler sync

COBBLER 命令解析

cobbler check            # 检查配置
cobbler sync             # 同步配置到DHCP PXE和数据目录
cobbler list             # 列出所有的元素
cobbler import           # 导入安装的系统光盘镜像
cobbler report           # 列出各元素的详细信息
cobbler distro           # 查看导入的发行版系统信息
cobbler profile          # 查看配置信息
cobbler system           # 查看添加的系统信息
cobbler reposync         # 同步 YUM 仓库到本地
cobbler signature update # 更新标记的包
cobbler --help           # 获得命令帮助
cobbler distro --help    # 获得子命令的帮助

基础应用实例

COBBLER 能指定多套操作系统,而每个系统又能指定多个配置文件。

构建装机镜像

以 CentOS 7 为例,挂载 CentOS 7.5 系统 ISO 光盘。

# mount /dev/cdrom /mnt/

导入系统镜像,并指定名称与平台。

# cobbler import --path=/mnt/ --name=centos7u5 --arch=x86_64

移除默认的配置文件(默认配置文件无法使用)

# cobbler profile remove --name="centos7u5-x86_64"

配置自定义profile,并指定对应的kickstart文件

# cobbler profile add --name=centos7u5-web \
--distro=centos7u5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.cfg

快速重装

安装 EPEL 源

# yum install epel-release -y

安装 KOAN

# yum install -y koan

查询服务端存在的系统配置

# koan --server=192.168.2.10 --list=profiles

指定配置文件开始重装

# koan --replace-self --server=192.168.2.10 --profile=centos7u5-web

附件:配置文件

一个实测可用的 CentOS 7 配置文件

# cat /var/lib/cobbler/kickstarts/centos7.cfg
#CentOS7
#Kickstart Configurator by xuliangwei
#platform=x86, AMD64, or Intel EM64T
#System  language
lang en_US
#System keyboard
keyboard us
#Sytem timezone
timezone Asia/Shanghai
#Root password
rootpw --iscrypted $default_password_crypted
#Use text mode install
text
#Install OS instead of upgrade
install
#Use NFS installation Media
url --url=$tree
#System bootloader configuration
bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
#Clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype xfs --size 1024 --ondisk sda
part swap --size 1024 --ondisk sda
part / --fstype xfs --size 1 --grow --ondisk sda
#System authorization infomation
auth  --useshadow  --enablemd5
#Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Firewall configuration
firewall --disabled
#SELinux configuration
selinux --disabled
#Do not configure XWindows
skipx

%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

#Package install information
%packages
@base
@core
sysstat
iptraf
ntp
lrzsz
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
tree
nmap
screen
wget
%end

%post

systemctl disable postfix.service

# Firewalld
systemctl disable firewalld.service
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

# SSH Config
sed -ri '/#UseDNS/cUseDNS no' /etc/ssh/sshd_config
systemctl restart sshd

%end

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。