-----------*********帮助链接*****************--------------------
https://www.cnblogs.com/nulige/p/6796593.html
https://www.cnblogs.com/xred/p/4285579.html
----------**********************************---------------------
一、Cobbler自动化安装系统
(一)概述
1.个人见解
Cobbler就是一个可以简化PXE无人值守安装的工具!该工具具体实现了的功能有:配置dhcp(让局域网内的主机找到TFTP服务器在哪)、配置httpd(用于共享ks.cfg应答文件、镜像文件)、配置tftp(提供初始化镜像、内核等)等!
Cobbler主要帮助运维人员减少了手动编写default菜单文件、ks.cfg文件的编写。
如果你没有Cobbler的话,也可以选择自己搭建TFTP、dhcp、httpd等服务,然后手动修改dhcp的配置文件、手动从镜像中复制内核、初始化镜像等文件、手动编写default文件和ks.cfg应答文件。相关链接:https://blog.csdn.net/yingqianmeng/article/details/101107441
我建议大家使用Cobbler,毕竟手动编写default文件和ks.cfg应答文件会出现许多奇奇怪怪的问题。如果你很熟悉default文件、ks.cfg文件的编写的话,也可以不使用cobbler。
2.Cobbler介绍
Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS、TFTP、RSYNC以及yum仓库、构造系统ISO镜像。
Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用,Cobbler客户端Koan支持虚拟机安装和操作系统重新安装。
3.Cobbler原理图
4.软件说明
cobbler #cobbler程序包
cobbler-web #cobbler的web服务包
pykickstart #cobbler检查kickstart语法错误
httpd #Apache web服务
/etc/cobbler # 配置文件目录
/etc/cobbler/settings # cobbler主配置文件
/etc/cobbler/dhcp.template # DHCP服务的配置模板
/etc/cobbler/tftpd.template # tftp服务的配置模板
/etc/cobbler/rsync.template # rsync服务的配置模板
/etc/cobbler/iso # iso模板配置文件目录
/etc/cobbler/pxe # pxe模板文件目录
/etc/cobbler/power # 电源的配置文件目录
/etc/cobbler/users.conf # Web服务授权配置文件
/etc/cobbler/users.digest # web访问的用户名密码配置文件
/etc/cobbler/dnsmasq.template # DNS服务的配置模板
/etc/cobbler/modules.conf # Cobbler模块配置文件
/var/lib/cobbler # Cobbler数据目录
/var/lib/cobbler/config # 配置文件
/var/lib/cobbler/kickstarts # 默认存放kickstart文件
/var/lib/cobbler/loaders # 存放的各种引导程序
/var/www/cobbler # 系统安装镜像目录
/var/www/cobbler/ks_mirror # 导入的系统镜像列表
/var/www/cobbler/images # 导入的系统镜像启动文件
/var/www/cobbler/repo_mirror # yum源存储目录
/var/log/cobbler # 日志目录
/var/log/cobbler/install.log # 客户端系统安装日志
/var/log/cobbler/cobbler.log # cobbler日志
(二)实验
1.更换yum源
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
更新yum缓存
yum clean all
yum makecache
2.关闭防火墙与selinux
setenforce 0
service iptables stop
3.安装Cobbler及需要的服务
安装Cobbler需要的服务
yum -y install dhcp tftp rsync xinetd httpd
安装Cobbler
yum install cobbler -y
4.启动Cobbler
/etc/init.d/cobblerd start
/etc/init.d/httpd start
5.下载Cobbler相关的文件
[root@sutang yum.repos.d]# cobbler get-loaders
task started: 2019-09-24_145118_get_loaders
task started (id=Download Bootloader Content, time=Tue Sep 24 14:51:18 2019)
downloading http://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
downloading http://cobbler.github.io/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
downloading http://cobbler.github.io/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
downloading http://cobbler.github.io/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
downloading http://cobbler.github.io/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
downloading http://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloading http://cobbler.github.io/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
downloading http://cobbler.github.io/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
downloading http://cobbler.github.io/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
downloading http://cobbler.github.io/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
*** TASK COMPLETE ***
[root@sutang yum.repos.d]#
6.检查Cobbler并纠错
-----------***********-----------------
[root@sutang yum.repos.d]# cobbler check
The following are potential configuration items that you may want to fix:
1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : change 'disable' to 'no' in /etc/xinetd.d/rsync
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
5 : ksvalidator was not found, install pykickstart
6 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Restart cobblerd and then run 'cobbler sync' to apply changes.
[root@sutang yum.repos.d]#
上面这段信息大意就是:
1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,即修改为本机IP
2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,即修改为本机IP
3,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no
4,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装,下载地址为:
http://rpmfind.net/linux/rpm2html/search.php?query=debmirror
5,ksvalidator没有被发现,安装pykickstart
yum -y install pykickstart
6,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令: 其中“random-phrase-here”为干扰码
openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'
用你的用户名和密码,生成一段加密后的密码:
[root@sutang yum.repos.d]# openssl passwd -1 -salt 'root' '123456'
$1$root$j0bp.KLPyr.u9kgQ428D10
修改配置文件/etc/cobbler/settings:
7:fencing tools为找到安装
yum install fence-agents -y
重启cobbler并执行cobbler sync,改变才会生效。
--------------**********-----------------
7.重启服务cobbler并检查
[root@sutang yum.repos.d]# /etc/init.d/cobblerd restart
Stopping cobbler daemon: [确定]
Starting cobbler daemon: [确定]
[root@sutang yum.repos.d]# cobbler check
The following are potential configuration items that you may want to fix:
1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
Restart cobblerd and then run 'cobbler sync' to apply changes.
8.挂载ISO
mkdir /mnt/Centos6.5
mount -o loop 镜像的位置 /mnt/Centos6.5/
9. 导入安装源 到Cobbler中
通过这个环节, Cobbler 会把安装的镜像ISO 拷贝到 源安装镜像目录下: /var/www/cobbler/ks_mirror/
操作命令如下:
[root@sutang ~]# cobbler import --path=/mnt/Centos6.5 --name=CentOS6.5 --arch=x86_64
task started: 2019-09-24_152759_import
task started (id=Media import, time=Tue Sep 24 15:27:59 2019) #执行到这步后会有几分钟的拷贝时间,而且不会有任何反应,不要担心,这不是卡了,这是正常情况。
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS6.5-x86_64:
creating new distro: CentOS6.5-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS6.5-x86_64 -> /var/www/cobbler/links/CentOS6.5-x86_64
creating new profile: CentOS6.5-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
starting descent into /var/www/cobbler/ks_mirror/CentOS6.5-x86_64 for CentOS6.5-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS6.5-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS6.5-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS6.5-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS6.5-x86_64/repodata
*** TASK COMPLETE ***
[root@sutang ~]#
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64
注意: 这个安装源的唯一标示 就是根据这两个参数来定义
本例导入成功后,安装源的唯一标示就是:centos6.3-x86_64 ,如果重复,系统会提示导入失败
更多用法,可以查看官方文档: man cobbler ,然后查找 import 的配置
查看导入源库列表
[root@sutang ~]# cobbler distro list
CentOS6.5-x86_64
[root@sutang ~]#
10.配置dhcp服务
(1)利用cobbler管理dhcp服务(可选)
如果利用cobbler管理不行的话,采用手动配置dhcp,我利用cobbler管理dhcp不行,我采用的手动模式。
首先修改cobbler配置,让cobbler来管理dhcp服务,编辑文件/etc/cobbler/settings
manage_dhcp: 1 #利用vim命令模式下输入/manage_dhcp 查找
接下来修改/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板
subnet 192.168.88.0 netmask 255.255.255.0 {
option routers 192.168.88.2;
option domain-name-servers 114.114.114.114;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.88.10 192.168.88.50;
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 {
filename "pxelinux.0";
}
}
}
红色标注出来的根据你实际环境中的给定。
其他不用改。
(2)手动写配置文件
vim /etc/dhcp/dhcpd.conf
subnet 192.168.88.0 netmask 255.255.255.0{
range 192.168.88.10 192.168.88.50;
option subnet-mask 255.255.255.0;
ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;
option routers 192.168.88.2;
option broadcast-address 192.168.88.255;
option domain-name-servers 114.114.114.114,223.5.5.5;
next-server $next_server;
filename "/pxelinux.0";
}
11.重启xinetd
[root@sutang ~]# /etc/init.d/xinetd restart
停止 xinetd: [失败]
正在启动 xinetd: [确定]
12.同步cobbler配置
[root@sutang ~]# cobbler sync
task started: 2019-09-24_163301_sync
task started (id=Sync, time=Tue Sep 24 16:33:01 2019)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS6.5-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/grub-x86_64.efi
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/grub/grub-x86.efi
removing: /var/lib/tftpboot/images/CentOS6.5-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
copying distros to tftpboot
copying files for distro: CentOS6.5-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.5-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS6.5-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.5-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS6.5-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS6.5-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.5-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS6.5-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.5-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS6.5-x86_64/initrd.img
Writing template files for CentOS6.5-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS6.5-x86_64
cleaning link caches
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: 正在启动 dhcpd:[确定]
received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
[root@sutang ~]# service dhcpd status
dhcpd (pid 9617) 正在运行...
cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。
至此,就可以使用虚拟机来测试cobbler安装了。
13.主机安装测试
OK开启真机或者虚拟机来测试注意开启网络引导 网卡要开启PXE 引导程序
虚拟机选nat模式,安装完成后账户为前面设置的那个(使用这命令openssl passwd -1 -salt 'root' '123456'生成的那个。)
(我的账户是root 123456)
如果你认为它自动生成的ks文件不合你意。
可以手写一份ks文件(/var/www/http下写),然后改default文件(/var/lib/tftpboot/pxelinux.cfg/default),将ks的参数指向你手写的那个ks文件。然后不要cobbler sync同步(同步后,cobbler会自动给你删掉,然后重新生成它创建的default文件。)