cobbler(补鞋匠)
一、介绍
Cobbler是一个使用Python开发的开源项目,通过将部署系统所涉及的所有服务集中在一起,来提供一个全自动批量快速建立linux系统的网络环境。
Cobbler提供了DHCP管理,YUM管理,电源管理等功能,除此之外还支持命令行管理,WEB界面管理,cobbler相关软件包由EPEL源提供,EPEL(Extra Pavkages for Enterprise Linux,企业版Linux的额外软件包)是Fedora小组维护的一个软件仓库项目。为RHEL/CentOS提供默认不提供的软件包,安装Cobbler除了EPEL源还需要CentOS自带的网络yum源以提供相关的依赖包。
二、实验环境
1、VMware Workstation虚拟机环境
2、CentOS7系统的虚拟PC作为Cobbler服务端,网卡使用NAT连接方式,IP为192.168.11.11
3、需要epel源,可去阿里镜像站下载基础源和epel源[https://opsx.alibaba.com/mirror]
4、修改主机名,建议按生产环境操作
[root@localhost ~]# hostnamectl --static set-hostname cobbler
三、实验部署
#安装相关的软件包
[root@cobbler ~]# yum install -y httpd tftp dhcp cobbler cobbler-web pykickstart xinetd
#查看cobbler配置文件,查出来很多,主要是下图两个
[root@cobbler ~]# rpm -qc cobbler
#启动apache服务
[root@cobbler ~]# systemctl start httpd.service
#查看httpd端口
[root@cobbler ~]# ss -anput | grep 80
#启动cobbler
[root@cobbler ~]# systemctl start cobblerd.service
#检查cobbler
[root@cobbler ~]# cobbler check
从上图可以看到,使用cobbler需要完成8个步骤
#编辑/etc/cobbler/settings文件
[root@cobbler ~]# vim /etc/cobbler/settings
1) 找到next_server这行,将ip地址修改,next_server参数的值为提供PXE服务的主机相应的IP地址
2) 找到server这行,将ip地址修改,server参数的值为提供cobbler服务的主机相应的IP地址或主机名
3)编辑/etc/xinetd/tftp文件,将文件中的disable字段的配置由yes改为no
[root@cobbler ~]# vim /etc/xinetd.d/tftp
4)执行“cobbler get-loaders”命令即可,即下载引导操作系统
[root@cobbler ~]# cobbler get-loaders
5) 启动rsyncd服务
[root@cobbler ~]# systemctl start rsyncd
6)设置新系统默认的root密码,执行“openssl passwd -1 -salt $(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数的值
[root@cobbler ~]# openssl passwd -1 -salt 'hanjie' 'hanjie'
[root@cobbler ~]# vim /etc/cobbler/settings 将生成的密码写入default_password_crypted
7) 安装相应的程序包
[root@cobbler ~]# yum -y install cman fence-agents
8) 重启cobbler并同步检查
[root@cobbler ~]# systemctl restart cobblerd.service
[root@cobbler ~]# cobbler sync
上图发现还有两个错误,我们依次执行:
[root@cobbler ~]# systemctl enable rsyncd
[root@cobbler ~]# yum -y install debmirror
重启之后我们发现debmirror有错误,我们需修改:
重启cobbler服务,再次cobbler check
上图出现no configuration problens found 说明没有问题了
#设置cobbler管理DHCP服务
[root@cobbler ~]# vim /etc/cobbler/settings 将manage_dhcp的值改成1
#修改dhcp的模板文件
[root@cobbler ~]# vim /etc/cobbler/dhcp.template
#重新启动cobbler和tftp
[root@cobbler ~]# systemctl restart cobblerd.service
[root@cobbler ~]# systemctl start xinetd.service
#同步cobbler
[root@cobbler ~]# cobbler sync
#查看生成dhcp配置文件
[root@cobbler ~]# cat /etc/dhcp/dhcpd.conf
#挂载镜像;我直接将镜像传到了服务器上
#[root@cobbler ~]# mount /dev/sr0 /mnt/
[root@cobbler ~]# mount CentOS-7-x86_64-DVD-1810.iso /mnt/
#导入镜像
[root@cobbler ~]# cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64
使用cobbler的import命令从ISO安装镜像中导入安装所需要的程序包。数据文件较大,需等待。
命令格式;cobbler import --path=镜像路径 --name=安装引导名 --arch=32位或64位
--path表示镜像所挂载的目录
--name表示为安装源定义的名字
--arch表示指定安装源是32位还是64位,目前支持的选项:x86,x86_64,ia64
cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间,如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。
导入镜像后可通过cobbler list来查看导入的结果
其中distro表示一个发行版
profile表示kickstart配置文件
此时tftp服务器的共享目录也有了启动linux所需的文件,因为从OS安装光盘导入时,同时会把内核vmlinuz和初始化镜像文件initrd.img复制到tftp共享目录下,
可以使用tree命令查看(系统默认没有这个命令,需要单独安装相应软件包)
[root@cobbler ~]# yum -y install tree
[root@cobbler ~]# tree /var/lib/tftpboot/
四、cobbler装机
vmware新建一台虚拟机PC进行验证,不使用镜像,网络连接方式选择NAT,注意内存选择2G以上(否则会因内存不够而安装失败)。然后开启新建的虚拟机会出现cobbler画面,选择第二种回车继续等待
等待一会系统就会自动安装好了,案后输入root用户和之前设好的密码进行登录
五、自定义kickstart文件
在上面的实验中,我们没有进行任何的安装配置,全部都是Cobbler帮助我们完成的。可是在实际生产中,我们对每台主机的硬盘分区,安装的软件都有相应的要求,所以我们需要自己来定制KickStart文件,这样我们就能够定制地批量安装操作系统了。我们就利用实验环境(CentOS 7.6)中的KickStart文件来定制我们自己的KickStart文件。
1)Cobbler的ks.cfg文件存放位置
[root@cobbler ~]# cd /var/lib/cobbler/kickstarts/
提供两种配置ks的方法:
方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL5/6/7)
# yum install system-config-kickstart #安装
# yum groupinstall "X Window System" #安装X Window图形界面
# system-config-kickstart #运行kickstart配置
#本人不喜欢使用Linux运行图形化界面,浪费资源,有兴趣的伙伴可以研究一下
实例:centos7.6 ks #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts # old format: keyboard us # new format: keyboard --vckeymap=us --xlayouts='us' # Root password rootpw --iscrypted $1$ljohn$yBMDpKkntQ9jfV1ZAWKpU1 # Use network installation url --url="http://192.168.11.11/cobbler/ks_mirror/CentOS-7.6-x86_64/" # System language lang en_US.UTF-8 # Firewall configuration firewall --disabled # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System services services --disabled="chronyd" ignoredisk --only-use=sda # Network information network --bootproto=dhcp --device=eth0 --onboot=on #network --bootproto=static --device=eth0 --gateway=192.168.11.1 --ip=192.168.11.11 --nameserver=8.8.8.8 --netmask=255.255.255.0 --activate # Reboot after installation reboot # System timezone timezone Asia/Shanghai # System bootloader configuration bootloader --location=mbr --boot-drive=sda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --asprimary --fstype="xfs" --size=1024 part swap --fstype="swap" --size=2048 part / --fstype="xfs" --grow --size=1 %packages @^minimal @core %end
这个实例使用了core的最小化版本安装,可以大大缩短系统部署时间,毕竟时间就是金钱。如果有需要的,可以在packages后面添加一些常用的工具,这里不再赘述。
2)关联镜像与kickstart 文件,修改kickstart文件为自定义的CentOS-7.6-x86_64.cfg
[root@cobbler ~]# cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.cfg
# --name 我们需要添加的启动菜单的名字
# --distro 我们自定制的ks文件关联的yum库
# --kickstart 我们自定制的ks文件的路径
[root@cobbler ~]# cobbler profile report --name CentOS-7-x86_64#查看镜像是否存在
#这里还原centos7网卡名为“eth0”
[root@cobbler ~]# cobbler profile edit name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'
#关联ks文件与对应的CentOS7.6镜像
[root@cobbler ~]# cobbler profile edit --name=CentOS-7-x86_64 --distro=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.cfg
#与cobbler sync作用相同,同步配置,每次对cobbler更改都要执行同步
[root@cobbler ~]# cobbler sync
六、cobbler的web管理
cobbler web支持多种认证方式,下面介绍两种用户认证登录cobbler web的方式
1)使用cobbler默认的authn_configfile模块认证方式
cobbler web界面的身份认证和授权配置位于文件/etc/cobbler/modules.conf中,cobbler默认这种方式的认证可以直接使用htdigest命令添加cobbler用户和密码
[root@cobbler ~]# htdigest -c /etc/cobbler/users.digest Cobbler han
#重启apache服务,重启cobbler服务
[root@cobbler ~]# systemctl restart cobblerd.service
[root@cobbler ~]# systemctl restart httpd.service
2)使用authn_pam模块认证方式
首先需要在配置文件/etc/cobbler/modules.conf里修改认证方式
[root@cobbler ~]# vim /etc/cobbler/modules.conf
#添加系统用户,并设密码
[root@cobbler ~]# useradd webuser
[root@cobbler ~]# passwd webuser
#在文件/etc/cobbler/users.conf中,将新添加的webuser用户添加到admins组中,该组具有完整访问权限
[root@cobbler ~]# vim /etc/cobbler/users.conf
#配置完成后重启cobbler,apache服务,就可以用webuser的身份登录到cobbler web页面了
[root@cobbler ~]# systemctl restart httpd.service
[root@cobbler ~]# systemctl restart cobblerd.service
#使用https://192.168.11.11/cobbler_web地址访问cobbler web页面,使用设定的用户和密码就可以进行登录,在web页面进行相关配置
#附录:
Cobbler 命令介绍: cobbler get-loaders #加载部分缺失的网络boot-loaders cobbler check #检查cobbler配置 cobbler sync #同步配置到dhcp pxe和数据目录 cobbler list #列出所有的cobbler元素 cobbler import #导入安装的系统光盘镜像 cobbler report #列出各元素的详细信息 cobbler distro #查看导入的发行版系统信息 cobbler profile #查看配置信息 cobbler system #查看添加的系统信息 cobbler reposync #同步yum仓库到本地 cobbler signature update cobbler --help #获得cobbler的帮助 cobbler distro --help #获得cobbler子命令的帮助 获取帮助: #cobbler import --help