运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk。本文重点介绍Cobbler。


Cobbler介绍


Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。

运维自动化之Cobbler安装部署_第1张图片

Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用。


和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。


cobbler的安装部署配置


cobbler安装环境准备


对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.163.com或mirrors.sohu.com


1、安装epel

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm


2、安装其它相关软件

yum install dhcp cobbler httpd xinetdtftp-server  cman debmirror rsyncpykickstart -y


3、关闭selinux,关闭iptables

   关闭后最好重启一下,让selinux的设置生效


4、设置http服务

vi/etc/httpd/conf.d/wsgi.conf

LoadModule wsgi_modulemodules/mod_wsgi.so  #取消前面的注释


5、修改参数

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

    sed -i -e 's/\=\ yes/\=\ no/g'/etc/xinetd.d/rsync

    

    重启xinetd服务(xinetd负责管理rsync,tftp服务)

    service xinetd restart

    

    修改debmirror.conf配置文件

     sed-i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf

     sed-i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf

    

    openssl passwd -1 -salt '任意字符串' '123456'  #生成默认模板下系统安完后root账号

    登录密码为123456


    $1$osyunwei$sEV8iwXXuR4CqzLXyLnzm0  #记录下这行,下面会用到

    vim /etc/cobbler/settings  #编辑,修改以下几项目配置

    default_password_crypted:"$1$osyunwei$sEV8iwXXuR4CqzLXyLnzm0"此处原来为默认密码


    next_server:192.168.1.2 本机IP

    server: 192.168.1.2  本机IP

    manage_dhcp: 1 使用cobbler来管理dhcp


    配置dhcp服务器

    vi /etc/cobbler/dhcp.template   #编辑,修改

    subnet 192.168.1.0 netmask 255.255.255.0 { #设置网段

    optionrouters            192.168.1.2; #设置网关(可为本机IP)

    option domain-name-servers202.106.0.20,114.114.114.114; #设置dns服务器地址

    optionsubnet-mask        255.255.255.0; #设置子网掩码

    rangedynamic-bootp       192.168.1.100 192.168.1.200; #设置dhcp服务器IP地址租用范围

    default-lease-time        21600;  #默认租约时间

    max-lease-time            43200;  #最大租约时间

    next-server                       #本机IP;


    下载引导文件  cobbler get-loaders

    挂载镜像

    本地光盘

      mount/dev/cdrom /mnt

    导入到cobbler

      cobblerimport --path=/mnt/ --name=CentOS_6.6_Final

    网络镜像

    cobbler import--path=rsync://centos.ustc.edu.cn/centos/6.6/os/i386/ --name=centos-6.6-i386


    本次安装脚本使用系统默认脚本  位置/var/lib/cobbler/kickstarts默认模版目录


   扩展阅读部分

   在第一次导入系统镜像时,cobbler会给安装镜像指定一个默认的kickstart自动安装文件

    通过cobbler profile report 命令可查看当前默认的ks文件

    cobbler distro report --nameCentOS-5.10-x86_64 #查看安装镜像文件信息

    cobbler profile remove--name=CentOS-5.10-x86_64  #移除profile

    cobbler profile add --name=CentOS-5.10-x86_64 --distro=CentOS-5.10-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-5.10-x86_64.ks  #添加                                  

    cobbler profile edit --name=CentOS-5.10-x86_64 --distro=CentOS-5.10-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-5.10-x86_64.ks  #编辑     

                       

    命令:cobbler profile add|edit|remove --name=安装引导名--distro=系统镜像名 --kickstart=kickstart自动安装文件路径

    --name:自定义的安装引导名,注意不能重复

    --distro:系统安装镜像名,用cobbler distro list可以查看

    --kickstart:与系统镜像文件相关联的kickstart自动安装文件


    #查看Cobbler列表命令

    cobbler list

    cobbler report

    cobbler profile report

    cobbler distro list


   #通过profile查找对应的kickstart自动安装文件文件

    例如:

    ksfile=$( cobbler profile report --name CentOS-5.10-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );cat$ksfile;

    重复上面的操作,把其他的系统镜像文件和kickstart自动安装文件关联起来

     

    注意:

    1、kickstart自动安装文件需要预先配置好

    2、每次修改完配置文件,需要执行一次同步操作:cobbler sync 配置才能生效

    3、kickstart自动安装文件可以用工具生成(需要用到图形界面操作)

    yum  installsystem-config-kickstart #安装

    yum groupinstall "X WindowSystem" #安装X Window图形界面

    system-config-kickstart #运行kickstart配置

    service  cobbler  sync  #与cobbler sync作用相同

    service  cobbler restart  #重启cobbler


6、设置开机启动

    chkconfig httpd on

    chkconfig cobblerd on

    chkconfig xinted on

    chkconfig dhcpd on

    

7、启动服务

    servicehttpd restart 如果报错

    打开/etc/httpd/conf/httpd.conf

    将ServerNamewww.example.com:80前面的#号去掉

    servicexinetd restart

    service cobblerd restart


8、同步cobbler配置

   执行 cobbler sync


cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。

至此,就可以使用虚拟机来测试cobbler安装了。


9、Cobbler测试安装


使用vmware虚拟机,将服务器新增一块网卡,模式设置为虚拟网卡VMnet,并配置IP地址,客户端网卡也必须使用此模式与服务器在同一网络,并且VMnet的名字要一致。


否则客户端将无法dhcp分配到地址。


以下是Linuxkvm虚拟机中的测试

在启动的时候选择PXE的模式。

运维自动化之Cobbler安装部署_第2张图片


然后就能看到下面的图示内容。虚拟机通过dhcp获得了122段的ip,然后通过tftp获得到pxe的启动文件。

运维自动化之Cobbler安装部署_第3张图片


下图是cobbler的pxe安装启动菜单,这里有我们刚刚创建好的CentOS版本。

运维自动化之Cobbler安装部署_第4张图片


系统安装使用默认的ks文件,经过短暂的等待,系统就自动被安装好了。

运维自动化之Cobbler安装部署_第5张图片


安装好的系统如下图所示。

运维自动化之Cobbler安装部署_第6张图片



安装使用心得


以上所有内容虽然是在kvm虚拟机上测试的,但完全可以直接使用于生产环境中,不会给现有环境带来任何影响。唯一需要做的就是规划好现有网络。


对于很多人担心的生成环境开启DHCP服务问题,我认为不会对现有生产环境产生任何影响,理由有二:


1、没有人会在装好系统后让网卡使用dhcp模式,通常都是为网卡配置静态ip


2、从测试过程中看到,就算是服务器默认设置成了通过pxe启动,而且也顺利的通过pxe启动了,但之后会收到cobbler的引导菜单。如果默认没有任何选择的话,20秒后会使用local方式加载,也就是启动硬盘上的系统。


综上所述,cobbler还是很安全的。


 

 

 

 

 

扩展阅读:

Cobbler目录说明:

1、Cobbler配置文件目录:/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模块配置文件

2、Cobbler数据目录:/var/lib/cobbler

/var/lib/cobbler/config #配置文件

/var/lib/cobbler/triggers  #Cobbler命令

/var/lib/cobbler/kickstarts  #默认存放kickstart文件

/var/lib/cobbler/loaders  #存放的各种引导程序

3、系统安装镜像目录:/var/www/cobbler

/var/www/cobbler/ks_mirror #导入的系统镜像列表

/var/www/cobbler/p_w_picpaths  #导入的系统镜像启动文件

/var/www/cobbler/repo_mirror #yum源存储目录

4、日志目录:/var/log/cobbler

/var/log/cobbler/install.log  #客户端系统安装日志

/var/log/cobbler/cobbler.log  #cobbler日志