最早使用过centos5安装过cobbler,挺好用的,现在centos已经到7了,与时俱进,试着这centos7中安装一下cobbler,安装在自己的笔记本虚拟机中,方便后面工作中有可能需要装机的时候使用。

环境介绍:

    本机操作系统:win10 64位 

    虚拟机软件: VirtualBox5.0.20(注意,老版本4.3.26不能使用桥接模式网络,这个问题花了我一个小时,后面升级到5版本就ok了)

    cobbler虚拟机操作系统: centos7  单核,内存2G,硬盘30G

安装准备:

     1、找参考安装步骤,参考网上的资料:http://www.olindata.com/blog/2015/07/cobbler-setup-centos7 ,《Cobbler Setup on CentOS7》。

    2、准备centos7安装镜像,自行到网上找镜像下载;

    3、安装centos7 的虚拟机,单核,内存2G,硬盘100G,安装的时候选择web server,将相应的包都勾上,其中主要有python环境、java环境等等,具体不记得了,反正尽量觉得能用上的都勾上,省得后面单独安装。当然,还有其他的时区、网络配置、分区等等,时区选择shanghai,其他的自己爱怎么配置就怎么配置。网络配置可以后面配置,也可以安装的时候配置,需要配置为实际物理网络的网段,方便后面cobbler通过局域网装机。我这里配置的IP地址是192.168.1.201,注意不要和现有网络地址冲突。分区的时候,注意不要采用默认的分区方式,默认的分区会有两个主要的分区,一个是根分区/,一个是/home分区,各占大概一半的空间,建议直接将/home分区去掉,直接将绝大部分空间分配给/,因为cobbler主要用到的空间是/var/www/cobbler 这个目录,放镜像的目录。

    4、将虚拟机的网络设置为桥接模式,在虚拟机里面ping www.baidu.com 确认能够访问外网。


    

(一)安装cobbler软件,配置YUM仓库、防火墙、安装包

   1、下载yum源安装包:

    wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

    rpm -ivh epel-release-7-8.noarch.rpm

2.配置防火墙

    #systemctl stop firewalld
    #chkconfig firewalld off

3.配置selinux

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  

    setenforce 0  

     

    如果不关闭selinux也可以  

    #getsebool -a|grep cobbler  

    #setsebool -P cobbler_can_network_connect 1 

    4、安装cobbler以及cobbler-web:
    yum install cobbler cobbler-web dnsmasq syslinux pykickstart tftp tftp-server xinetd

    5、开启cobbler和httpd应用:

[root@cobbler ~]# systemctl enable cobblerd

[root@cobbler ~]# systemctl start cobblerd

[root@cobbler ~]# 

[root@cobbler ~]# systemctl enable httpd

[root@cobbler ~]# systemctl start httpd


[root@cobbler ~]# systemctl enable xinetd

[root@cobbler ~]# systemctl start xinetd




    6、cobbler-web提供了漂亮的web界面,到现在为止,就可以通过下面的网址访问web管理界面了:

    https://192.168.1.201/cobbler_web


(二)配置cobbler

    配置主要是对cobbler的配置文件/etc/cobbler/settings 进行配置。主要有以下的配置项目:


/etc/cobbler/settings:

default_password_crypted: "{今后装新机的root密码,可以使用这个命令获取: openssl passwd -1}"

manage_dhcp: 1

manage_dns: 1

pxe_just_once: 1

next_server: 192.168.1.201

server: 192.168.1.201



可以使用下面的语句直接进行修改配置:

     /etc/cobbler/settings #Cobbler 主配置文件

sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings

sed -i 's/manage_dns: 0/manage_dns: 1/g' /etc/cobbler/settings

sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings

sed -i 's/^next_server: 127.0.0.1/next_server: 192.168.1.201/g' /etc/cobbler/settings

sed -i 's/^server: 127.0.0.1/server: 192.168.1.201/g' /etc/cobbler/settings


接下来需要修改的配置文件是:/etc/cobbler/modules.conf  ,需要修改的配置项如下:

[dns]

module = manage_dnsmasq

 

[dhcp]

module = manage_dnsmasq


基于你的网络配置,dhcp模板配置文件也需要修改:/etc/cobbler/dhcp.template,需要修改的配置项如下(注意range dynamic-bootp参数选项是设置的dhcp地址范围):

 

subnet 192.168.1.0 netmask 255.255.255.0 {

     option routers             192.168.1.1;

     option domain-name-servers 192.168.1.1;

     option subnet-mask         255.255.255.0;

     range dynamic-bootp        192.168.1.210 192.168.1.220;

     default-lease-time         21600;

     max-lease-time             43200;

     next-server                $next_server;

}


编辑这个配置文件:/etc/cobbler/dnsmasq.template,(注意dhcp-range参数选项是设置的dhcp地址范围)

...

...

dhcp-range=192.168.1.210,192.168.1.220

...

开启tftp服务:

sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp

下载boot-loader包: 

cobbler get-loaders

使能 rsyncd 服务,开机自启动:

systemctl enable rsyncd


最后请注意,装机的默认密码是:  "cobbler",如果需要修改,请通过"openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'"命令,修改settings配置文件的default_password_crypted参数。


重启应用

systemctl restart cobblerd

cobbler check

cobbler sync



【2016年11月22日补充】

    重新做了该实验,想验证一下如何适应不同的局域网,基本思路是安装完成基本的cobbler安装包之后,修改虚拟机的IP地址,和相应的cobbler配置文件参数,使之适应新的安装环境。

    虚拟机的配置有点调整,配置两块网卡,一块设置为hostonly,在虚拟化环境内部模拟局域网,是后面部署的网络,一块设置为bridge,直接桥接到物理网卡,能够上网,方便用yum进行安装。


    安装配置cobbler完成之后,就要开始上传操作系统镜像,制作软件源,上传操作系统镜像可以省略,可以通过直接在虚拟机上挂载ISO文件,相当与插入光驱DVD。首先在虚拟机的存储IDE的DVD中加载ISO文件,然后运行命令如下:

    mount -o loop /dev/cdrom /media/

    这样,就可以在系统中访问/media/ 中ISO镜像内的文件了。下一步是制作软件安装源。

导入镜像,我放的是centos7 的安装盘:

cobbler import --path=/media/ --name=centos7 --arch=x86_64

    这个命令需要执行一段时间,会在/var/www/cobbler/ks_mirror这个目录下生成相应的centos7的安装软件源。可以在这个目录下执行 du -m查看空间增长情况,最后完成的时候空间是4.15G。

    导入完成之后,可以在web界面的Distros菜单上看到对应的软件源centos7-x86_64 ,以及Profiles菜单中看到centos7-x86_64 ,

    将kickstart脚本拷贝到这个目录/var/lib/cobbler/kickstarts/,比如,我将cobbler虚拟机的kickstart脚本拷贝进去:

    cp anaconda-ks.cfg /var/lib/cobbler/kickstarts/centos7-1122.ks

    然后在web界面的 “Kickstart Templates” 菜单中就能够看到相应的模板,并且后面安装系统的时候可以选择这个模板进行安装。

    不想搞得太复杂,其实到这一步,很多工作都可以直接在web界面中完成。web界面有几个菜单,分别介绍一下:

Configuration 菜单:

Distros  安装镜像,导入镜像后会生成相应的安装镜像。

Profiles   特性模板,这里可以绑定kickstart

Systems   需要安装的系统,可以针对每一台不同的机器提前配置,这里可以绑定kickstart

Repos     软件源

Kickstart Templates   非常重要,Kickstart 模板,决定了安装的系统里面的所有特性参数,比如分区,IP地址,安装包等


Actions 菜单:

Import DVD 导入生成镜像

Sync ?      配置同步


其实上面的cobbler import --path=/media/ --name=centos7 --arch=x86_64 这个命令也可以用 Actions菜单的“Import DVD”来完成。


    为了节约篇幅,我简单描述一下如何使用cobbler来自动化部署新的机器:

1、导入镜像,首先挂载DVD到虚拟机的/media目录,然后使用命令或者web界面的“Import DVD”完成;

2、生成“Kickstart Templates”,根据需要生成,在新的模板里面配置好相应的参数,比如分区、IP、安装包、甚至相关安装后的相关配置修改,都可以一次性在模板里面配置,大大节约人力成本。

3、在Configuration 菜单的“systems”中配置目标安装配置主机。主要配置主机名、MAC地址等等,绑定Kickstart Templates 。


    如果用虚拟机测试,创建虚拟机,并且将系统启动方式中将网络启动方式选中。


【2017年2月12日补充】

制作ubuntu16.04模板,参考官网的指导文档: https://help.ubuntu.com/community/Cobbler/Preseed

总结如下:

  1. 从unbuntu官网下载ISO镜像:http://releases.ubuntu.com/16.04/  

  2. import DVD

  3. 制作ubuntu的Distros

  4. 准备preseed文件,制作profile

  5. 直接启动目标主机,目标主机通过PXE识别到可用的profile,选择ubuntu的profile进行安装。