文章目录
- 一、基本了解
- 1.1 配置文件
- 1.2 数据目录
- 1.3 日志文件
- 1.4 常用命令
- 二、普通安装
- 2.1 服务端操作
- 2.2 客户端操作
- 三、定制安装
- 3.1 手动安装
- 3.2 脚本安装(推荐)
一、基本了解
cobbler简介:
- Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
- Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
- Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
- Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
cobbler集成的服务:
- PXE服务支持。
- DHCP服务管理。
- DNS服务管理(可选bind,dnsmasq)
- 电源管理
- Kickstart服务支持
- YUM仓库管理
- TFTP(PXE启动时需要)
- Apache(提供kickstart的安装源,并提供定制化的kickstart配置)
1.1 配置文件
- cobbler配置文件目录在/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 | 模块的配置文件 |
1.2 数据目录
目录 | 作用 |
---|---|
/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仓库存储目录 |
1.3 日志文件
日志文件路径 | 说明 |
---|---|
/var/log/cobbler/installing | 客户端安装日志 |
/var/log/cobbler/cobbler.log | cobbler日志 |
1.4 常用命令
命令 | 释义 |
---|---|
cobbler check | 核对当前设置是否有问题 |
cobbler list | 列出所有的cobbler元素 |
cobbler report | 列出元素的详细信息 |
cobbler sync | 同步配置到数据目录,更改配置最好都要执行下 |
cobbler reposync | 同步yum仓库 |
cobbler distro | 查看导入的发行版系统信息 |
cobbler system | 查看添加的系统信息 |
cobbler profile | 查看配置信息 |
二、普通安装
2.1 服务端操作
1.配置yum源。
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
//配置epel源。
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
2.安装cabbor和依赖包,并设置服务开机自启。
yum -y install httpd dhcp tftp python-ctypes cobbler xinetd cobbler-web pykickstart
//设置开机自启。
systemctl enable --now httpd cobblerd
3.修改配置文件,指定服务端IP。
//将以下两个地址ip改成服务端ip。
vim /etc/cobbler/settings
server: 192.168.130.160
next_server: 192.168.130.160
4.开启tftp。
vim /etc/xinetd.d/tftp
......
disable = no //将该参数修改成no。
5.关闭防火墙和selinux,重启服务器。
//关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
//关闭selinux,并重启服务器。
vim /etc/selinux/config
setenforce 0
reboot
6.启动rsyncd服务。
systemctl enable --now rsyncd
7.配置cobbler dhcp。
//修改cobbler配置文件,让cobbler控制dhcp。
vim /etc/cobbler/settings
manage_dhcp: 1 //将0改为1
//vim /etc/cobbler/dhcp.template
subnet 192.168.130.0 netmask 255.255.255.0 { /修改成服务端同网段。
option routers 192.168.130.160; //服务端ip。
option domain-name-servers 192.168.130.2; ##服务端网关。
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.130.170 192.168.130.180; ## 这里指要分配的ip,这里指从10~20之间有10个。
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
//重启服务并同步配置,改完dhcp必须要sync同步配置。
systemctl restart cobblerd
cobbler sync
//检查dhcp是否正常,查看67端口。
ss -anulp|grep 67
8.导入安装光盘的镜像。
//挂载光盘。
mount /dev/cdrom /mnt
//--path指定镜像路径,--name表示安装源名称,自定义。--arch指定安装源平台
cobbler import --path=/mnt --name=centos-7 --arch=x86_64
9.查看cobbler镜像列表。
cobbler list
10.创建kickstarts自动安装脚本。
cat > /var/lib/cobbler/kickstarts/centos-7-x86_64.ks <<'EOF'
auth --enableshadow --passalgo=sha512
bootloader --location=mbr
clearpart --all --initlabel
part /boot --asprimary --fstype="ext4" --size=500
part swap --fstype="swap" --size=4096
part / --fstype="ext4" --grow --size=15000
text
firewall --disabled
firstboot --disable
keyboard us
lang en_US
url --url=http://192.168.130.160/cobbler/ks_mirror/rhel-7-x86_64
$yum_repo_stanza
reboot
rootpw --iscrypted $6$2WTFvfNvAMgCUPuC$MJgWGzhakgxrRObcEbAwSe8vkz0s//xyiTllGwxRsHHruQhcskO69u2LVTU9u0eemHXH2pzcGawyAJ54R2E/x0
selinux --disabled
skipx
timezone Asia/Shanghai --isUtc --nontp
install
zerombr
%packages
@^minimal
@core
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
EOF
//生成一个centos-7-x86_64.ks文件,修改配置文件。
vim /var/lib/cobbler/kickstarts/centos-7-x86_64.ks
......
url --url=http://192.168.130.160/cobbler/ks_mirror/centos-7-x86_64 //改成本机IP,安装的什么系统就改成什么系统,这里安装的centos系统。
rootpw --iscrypted $6$h09o.6iB/6AOlbI4... //将anaconda-ks.cfg里的加密密码复制过来。
11.检查ks文件语法是否有误。
cobbler validateks
12.查看当前cobbler有哪些配置文件。
cobbler profile list
13.修改profile,将我们新建的ks文件设为默认的kickstarts安装文件。
cobbler profile edit --name centos-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos-7-x86_64.ks
14.配置网卡名称为传统网卡名称eth0。
cobbler profile edit --name centos-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'
15.检查当前系统cobbler配置文件信息。
cobbler report centos-7-x86_64
16.同步cobbler。
cobbler sync
17.为避免发生未知问题,先把服务端所有服务重启。
systemctl restart cobblerd httpd xinetd
2.2 客户端操作
1.新建一台虚拟机,内存至少2G,不需要选择镜像,且网卡需要与主机网卡一致。
2.开启新建虚拟机从pxe启动,若出现以下界面则表示成功,选择centos-7-x86_64回车自动安装。
3.使用服务端虚拟机的用户/密码,登录进去查看自动分配的ip。
三、定制安装
3.1 手动安装
1.访问https://ip/cobler_web,账号/密码:cobbler/cobbler。
2.系统配置工作。
net.ifnames=0 biosdevname=0
3.准备MAC地址。
4.服务端同步配置,并重启相关服务。
//同步配置。
cobbler sync
//重启服务。
systemctl restart cobblerd httpd xinetd
6.开启新虚拟机,自动开始安装系统。
3.2 脚本安装(推荐)
- 在网页配置的参数会在服务端机器上生成一个文件,里面记录了所有的配置项。此时可以通过脚本生成这种配置文件就可以达到一次性装多台主机。
- 配置文件存放目录/var/lib/cobbler/config/systems.d。
1.编写脚本。
//准备要安装机器的mac地址。
cat /opt/scripts/client_info
mysql1 00:50:56:31:A2:F5 192.168.130.175
mysql2 00:50:56:23:F4:89 192.168.130.176
//运行脚本。
cat /opt/scripts/cobbler_centos_install.sh
#!/bin/bash
ip_server=`ip a |grep global|awk -F " +|/" '{print $3}'`
# 逐行读取客户机清单,获得相应参数,清单路径:/script/client_info
while read line
do
client_hostname=`echo $line | awk '{print $1}'`
client_MAC=`echo $line | awk '{print $2}'`
client_IPADDR=`echo $line | awk '{print $3}'`
cat > /var/lib/cobbler/config/systems.d/${client_hostname}.json << EOF
{
"comment": "",
"status": "production",
"kickstart": "/var/lib/cobbler/kickstarts/centos-7-x86_64.ks",
"name_servers_search": [ ],
"ks_meta": { },
"kernel_options_post": { },
"image": "",
"redhat_management_key": "<<inherit>>",
"virt_path": "<<inherit>>",
"power_user": "",
"kernel_options": {
"biosdevname": "0",
"net.ifnames": "0"
},
"ctime": 1606183288.613767,
"name_servers": [
"$ip_server"
],
"mtime": 1606183288.613767,
"enable_gpxe": false,
"template_files": { },
"gateway": "$ip_server",
"uid": "MTYwNjE4MzI4OC42MTI4MjI4NzAuMTcyNzY",
"virt_auto_boot": 0,
"power_type": "ipmitool",
"virt_cpus": "<<inherit>>",
"mgmt_parameters": "<<inherit>>",
"boot_files": { },
"hostname": "$client_hostname",
"repos_enabled": false,
"mgmt_classes": [ ],
"power_pass": "",
"netboot_enabled": true,
"ipv6_autoconfiguration": false,
"profile": "centos-7-x86_64",
"virt_type": "xenpv",
"interfaces": {
"eth0": {
"ipv6_address": "",
"interface_type": "",
"static": true,
"cnames": [ ],
"mtu": "",
"management": false,
"interface_master": "",
"mac_address": "$client_MAC",
"ipv6_prefix": "",
"virt_bridge": "xenbr0",
"netmask": "255.255.255.0",
"bonding_opts": "",
"ip_address": "$client_IPADDR",
"dhcp_tag": "",
"static_routes": [ ],
"ipv6_mtu": "",
"ipv6_static_routes": [ ],
"if_gateway": "",
"dns_name": "",
"bridge_opts": "",
"connected_mode": false,
"ipv6_secondaries": [ ],
"ipv6_default_gateway": ""
}
},
"power_address": "",
"proxy": "<<inherit>>",
"fetchable_files": { },
"virt_file_size": "<<inherit>>",
"ldap_enabled": false,
"monit_enabled": false,
"ipv6_default_device": "",
"virt_pxe_boot": 0,
"virt_disk_driver": "<<inherit>>",
"owners": "<<inherit>>",
"name": "$client_hostname",
"virt_ram": "<<inherit>>",
"power_id": "",
"server": "<<inherit>>",
"redhat_management_server": "<<inherit>>",
"depth": 2,
"ldap_type": "authconfig",
"template_remote_kickstarts": 0
}
EOF
echo "-------------成功生成${client_hostname}.json------------"
echo "-------------客户机MAC地址:$client_MAC-------------"
echo "-------------客户机IP地址为:$client_IPADDR------------"
done < client_info
2.执行脚本,查看生成的装机文件。
3.重启服务,同步配置,网页查看配置项。
systemctl restart cobblerd httpd
cobbler sync
4.以此打开虚拟机,此时开始自动装机,查看装机后的IP验证结果。