基于centos7安装cobbler(pxe)批量装机esxi6.7
注意: 只适合批量安装esxi6.x以及以前的版本,不支持安装esxi7.x;需要安装esxi7以上的版本需要cobbler更高版本,比如3.x(建议使用centos8部署,后续会写,原因因centos7源最高cobbler2.8.5)
Cobbler 介绍
Cobbler 是一个 Linux 服务器安装的服务,可以通过网络启动 (PXE) 的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理 DHCP,DNS 等
Cobbler提供以下服务集成:
PXE服务支持
DHCP服务管理
DNS服务管理
电源管理
Kickstart服务支持
yum仓库管理
TFTP (PXE启动时需要)
Apache(提供kickstart 的安装源,并提供定制化的kickstart配置)
同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统。
注1:通过pxe+kickstart已可简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解决此问题而设计的。
注2:这是对pxe的二次封装,在pxe当中,我们还需要手动的去部署dhcp和tftp等相关服务。在cobbler中,相关的配置、软件、服务等都被集成在了一起,管理起来能够更简单。
注3:cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和 Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有
些机器因为默认从pxe启动在重启服务器后加载tftp内容导 致启动终止。通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。
Cobbler 命令帮助
|| 命令 || 说明 ||
cobbler check || 核对当前设置是否有问题
cobbler list || 列出所有的cobbler元素
cobbler report || 列出元素的详细信息
cobbler sync || 同步配置到数据目录,更改配置最好都执行一下
cobbler reposync || 同步yum仓库
cobbler distro || 查看导入的发行版系统信息
cobbler system || 查看添加的系统信息
cobbler profile || 查看配置信息
开始部署
- 环境准备 centos7一台服务器 服务器ip:192.168.79.137
esxi镜像6.7 - 关闭firewalld、selinux
3.替换为阿里源 (可以不替换 直接安装epel源)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y update && yum upgrade 可不更新
yum install -y epel-release
上传 esxi 镜像到 /mnt 目录
下载地址自己去官网查找
安装cobbler及其依赖包
yum install -y cobbler cobbler-web dhcp* tftp-server pykickstart httpd xinetd python-ctypes
# 服务自启动:
systemctl enable httpd
systemctl enable xinetd
systemctl enable rsyncd
systemctl enable tftp
systemctl enable dhcpd
systemctl enable cobblerd
# 启动服务:
systemctl start httpd
systemctl start xinetd
systemctl start rsyncd
systemctl start tftp
systemctl start cobblerd
访问一下
https://192.168.79.137/cobbler_web
默认账号密码:cobbler
配置cobbler
cp /etc/cobbler/settings{,.bak}
修改 /etc/cobbler/settings文件
1) sed -i 's%^server: 127.0.0.1%server: 192.168.79.137%g' /etc/cobbler/settings (ip改为自己机器的IP)
[root@cobbler ~] grep "^server: " /etc/cobbler/settings
2) sed -i "s#pxe_just_once: 0#pxe_just_once: 1#" /etc/cobbler/settings
[root@cobbler ~] grep "^pxe_just_once: " /etc/cobbler/settings
3) sed -i 's%manage_dhcp: 0%manage_dhcp: 1%g' /etc/cobbler/settings
[root@cobbler ~] grep "^manage_dhcp: " /etc/cobbler/settings
4) 修改 /etc/cobbler/settings 文件中的 next_server 参数的值为提供 PXE 服务的主机相应的 IP 地址
sed -i "s#next_server: 127.0.0.1#next_server: 192.168.79.137#" /etc/cobbler/settings
[root@cobbler ~] grep "^next_server: " /etc/cobbler/settings
####################################################################################################
5) ## 修改默认密码 即:/etc/cobbler/settings 文件中的 default_password_crypted 参数的值为上面生成的密码串
注:此处可以不配置
sed -i 's%^default_password_crypted.*%default_password_crypted: "$1$bBB1GeSf$25JtWFpTAqGdCLf0/KlsO0"%g' /etc/cobbler/settings
grep "^default_password_crypted: " /etc/cobbler/settings
default_password_crypted: "$1$bBB1GeSf$25JtWFpTAqGdCLf0/KlsO0"
##################################################################################################
6) 修改 /etc/xinetd.d/tftp 文件中的 disable 参数修改为 disable = no
sed -i "/disable/ {s#yes#no#}" /etc/xinetd.d/tftp
grep "disable" /etc/xinetd.d/tftp
disable = no
7) # 设置可以动态的配置文件
sed -i '/allow_dynamic_settings:/c\allow_dynamic_settings: 1' /etc/cobbler/settings
grep "allow_dynamic_settings" /etc/cobbler/settings
#重启
8) systemctl restart cobblerd
##配置修改以下字段 /etc/cobbler/settings
manage_dhcp: 1
manage_dns: 1
next_server: 192.168.79.137
server: 192.168.79.137
check报错如图不用解决 继续往下操作即可
配置cobbler的DHCP模版
vim /etc/cobbler/dhcp.template (按照需求修改)# 修改这里后, /etc/dhcp/dhcpd.conf 文件会自动生成
subnet 192.168.79.0 netmask 255.255.255.0 {
option routers 192.168.79.254;
option domain-name-servers 192.168.79.2;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.79.120 192.168.79.150;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
if option pxe-system-type = 00:02 {
filename "ia64/elilo.efi";
} else if option pxe-system-type = 00:06 {
filename "grub/grub-x86.efi";
} else if option pxe-system-type = 00:07 {
filename "grub/grub-x86_64.efi";
} else if option pxe-system-type = 00:09 {
filename "grub/grub-x86_64.efi";
} else {
filename "pxelinux.0";
}
##
配置xinetd管理tftp
6. vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes #此处修改为no-可选
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #修改此处值为no-必须
no per_source = 11
cps = 100 2
flags = IPv4
}
systemctl restart xinetd
导入镜像
使用rz或者ftp工具把本地镜像传到服务器上
mv VMware-VMvisor-Installer-6.7.0-8169922.x86_64-Customized-A01.iso /mnt/
mount -o loop -t iso9660 /mnt/VMware-VMvisor-Installer-6.7.0-8169922.x86_64-Customized-A01.iso /media
cobbler import --path=/media/ --name=esxi6.7 --arch=x86_64
同步
cobbler sync
编辑ks文件
vim /var/lib/cobbler/kickstarts/sample_esxi6.ks
vmaccepteula
reboot --noeject
#rootpw redhat123456 此处的密码没生效,安装esxi成功之后root可以不用密码登陆
rootpw --iscrypted sig4tDHKf47GvNee
install --firstdisk --overwritevmfs
clearpart --firstdisk --overwritevmfs
#$SNIPPET('network_config')
network --bootproto=dhcp
%pre --interpreter=busybox
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
%post --interpreter=busybox
r=busybox
$SNIPPET('kickstart_done')
2)cobbler list (检车导入的镜像文件)
3) cobbler profile report (检查配置文件 查看使用的文件是不是我们配置的)
###如果不是可以执行下边命令
修改EXSI6.0-x86_64默认的kickstarts配置文件
cobbler profile edit --name=esxi6.7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/sample_esxi6.ks
修改boot.cfg
vim /var/www/cobbler/ks_mirror/esxi6.7-x86_64/boot.cfg
kernelopt=https://192.168.79.137/cblr/svc/op/ks/profile/esxi6.7-x86_64 (网页上的ks文件)
#去掉默认文件中的”/”符号: 关键
sed -i 's@/@@g' /var/www/cobbler/ks_mirror/esxi6.7-x86_64/boot.cfg
11.修改两个文件
/etc/cobbler/pxe/pxeprofile_esxi.template cobbler-bootcfg 改成 boot.cfg
/etc/cobbler/pxe/pxesystem_esxi.template append 后添加段 $img_path/boot.cfg
同步
12. cobbler sync
此处为查看ks文件的网页路径,点进去然后复制URL就可以
13. 新建机器选择其他 其他64位 通过dhcp安装esxi
#######################################################################################
导入镜像失败如下解决
1.5: vim /var/lib/cobbler/distro_signatures.json
我们发现这里面很多esxi的配置,我们将json中esxi51配置中的
“version_file_regex”:“^.ESXi 5\.1\.(.)build-([\d]+).*”,
需要注意的是,只将其中的1改成5,注意是改,而不是拷贝整个段落,不然导入还会报错,如果要导入ESXI5.1的时候改回1即可。
1.5: vim /var/lib/cobbler/distro_signatures.json
我们发现这里面很多esxi的配置,我们将json中esxi51配置中的
“version_file_regex”:“^.ESXi 5\.1\.(.)build-([\d]+).*”,
需要注意的是,只将其中的1改成5,注意是改,而不是拷贝整个段落,不然导入还会报错,如果要导入ESXI5.1的时候改回1即可。
不会修改可以执行此命令会自动更新json文件
cobbler signature update