Cobbler 是一款常用的实现自动化无人值守网络批量安装部署 Linux 系统工具。
软件概述
在企业环境中,建设新机房时会进行部署多台机器,手动安装不现实,硬盘对拷还需要修改配置文件。此时就可以使用 COBBLER 进行自动化部署。
COBBLER 是一个系统启动服务(BOOT SERVER),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。
该工具使用 Python 开发,使用简单的命令即可完成 PXE 网络安装环境的配置,同时还可以管理 DHCP、DNS 以及 yum 包镜像。
COBBLER 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
预制环境
Key | Values |
---|---|
服务器系统 | 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 |
DNS | 192.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
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2018-08-15 10:46 AM