基于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 || 查看配置信息

开始部署

  1. 环境准备 centos7一台服务器 服务器ip:192.168.79.137
    esxi镜像6.7
  2. 关闭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报错如图不用解决 继续往下操作即可

批量esxi改精简置备 esxi批量安装_批量esxi改精简置备

配置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

批量esxi改精简置备 esxi批量安装_apache_02

/etc/cobbler/pxe/pxesystem_esxi.template append 后添加段 $img_path/boot.cfg

批量esxi改精简置备 esxi批量安装_服务器_03

同步

12. cobbler sync

此处为查看ks文件的网页路径,点进去然后复制URL就可以

批量esxi改精简置备 esxi批量安装_linux_04


13. 新建机器选择其他 其他64位 通过dhcp安装esxi

#######################################################################################

导入镜像失败如下解决

1.5: vim /var/lib/cobbler/distro_signatures.json
我们发现这里面很多esxi的配置,我们将json中esxi51配置中的
“version_file_regex”:“^.ESXi 5\.1\.(.)build-([\d]+).*批量esxi改精简置备 esxi批量安装_apache_05”,

需要注意的是,只将其中的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]+).*批量esxi改精简置备 esxi批量安装_服务器_06”,

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

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

cobbler signature update