基于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]+).*

"

,

改成

"

v

e

r

s

i

o

n

f

i

l

e

r

e

g

e

x

"

:

"

.

E

S

X

i

5

.

5

.

(

.

)

b

u

i

l

d

(

[

d

]

+

)

.

", 改成 "version_file_regex":"^.*ESXi 5\\.5\\.(.*)build-([\\d]+).*

",改成"versionf​iler​egex":".∗ESXi5.5.(.∗)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]+).*

"

,

改成

"

v

e

r

s

i

o

n

f

i

l

e

r

e

g

e

x

"

:

"

.

E

S

X

i

5

.

5

.

(

.

)

b

u

i

l

d

(

[

d

]

+

)

.

", 改成"version_file_regex":"^.*ESXi 5\\.5\\.(.*)build-([\\d]+).*

",改成"versionf​iler​egex":".∗ESXi5.5.(.∗)build−([d]+).∗”,

需要注意的是,只将其中的1改成5,注意是改,而不是拷贝整个段落,不然导入还会报错,如果要导入ESXI5.1的时候改回1即可。

不会修改可以执行此命令会自动更新json文件

cobbler signature update

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。