欢迎访问linux宝典,请记住本站唯一域名:www.linuxbaodian.com

Cobbler自动化部署安装操作系统

来源:原创    更新时间:2018-10-02 23:49:03    编辑:管理员    浏览:2246

Cobbler概述:


  Cobbler可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。


  在生产环境中,经常批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装工作量是不可预估的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解决此问题而设计的。


  经过以上概述我了解到Cobbler操作使用没有想象中那么困难,接下来我们对Cobbler应用进行剖析如下:



Cobbler简介:


  Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统。Cobbler 集成了 DNS, DHCP, 软件包更新,带外管理以及配置管理,方便操作系统安装自动化。Cobbler 可以支持PXE启动, 操作系统重新安装,以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如建立在链路聚合以太网的桥接环境。


Cobbler组件架构如下:

image.png

Cobbler服务集成以下:

    *1* PXE服务

    *2* DHCP服务管理

    *3* TFTP服务管理

    *4* Rsync服务(系统镜像可导入发行版镜像,也可以从互联网中通过rsync工具导入)

    *5* HTTP服务管理

    *6* DNS服务管理

    *7* Kickstart服务

    *8* IPMI电源管理

Cobbler设计模式:

    *1* 发行版(distro) : 表示一个操作系统。它承载了内核和initrd的信息,以及内核参数等其他数据。

    *2* 存储库(repository) : 保存一个yum或rsync存储库镜像信息。

    *3* 配置文件(profile) : 包含一个发行版(distro)、一个kickstart文件以及可能的存储库(repository)

    还包含更多特定的内核参数及其他数据。

    *4* 系统(system) : 表示要配给的机器,它包含一个配置文件或一个镜像,还包含IP和MAC地址、

    电源管理(地址、凭据、类型)以及更专业的数据等信息。

    *5* 镜像(image) : 可替换一个包含不属于此类别的文件发行版对象,(例如: 无法分为内核和initrd的对象)

Cobbler运行流程:

    *1* DHCP服务分配IP地址

    *2* Client(获取IP地址、Next_server IP地址)

    *3* Next_server(获取启动内核、initrd等文件)

    *4* tftp (PXE引导文件、启动Cobbler选择界面)

    *5* kickstart (确定加载项,根据NFS,httpd,ftp等共享)

Cobbler Units 软件包:

    * cobbler

    * cobbler-web

Cobbler Units 配置:

    *1* 安装cobbler,依据cobbler check检查结果,对settings主配置文件,进行相关修正设置;

    *2* 启动依赖服务:httpd、cobbler服务,使用cobbler sync同步配置;

    *3* 配置cobbler所依赖的服务:

        ** dhcp : ISC dhcpd dnsmasq(必需服务,选其中一种管理即可)

        ** dns : bind dnsmqsq(可选)

        ** rsync : rsync(必需服务)

        ** tftp : in.tftpd(tftp-server) cobbler自带的tftp(必需服务,选其中一种管理即可)

    *4* 配置cobbler组件

针对步骤3:

(1)确定要使用的程序,选其中一种管理即可;

(2)确定要独立管理这些服务,还是由cobbler代为管理。

确定以上要求,配置安装过程如下:

(1)安装EPEL源

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 
# rpm -Uvh remi-release-6.rpm epel-release-6-8.noarch.rpm

(2)安装cobbler及相关依赖包

# yum -y install httpd dhcp tftp-server xinetd rsync
# yum -y groupinstall "Development Tools"
# yum -y install syslinux python-simplejson python-cheetah PyYAML Django openssl-devel genisoimage createrepo mod_wsgi mod_ssl
# yum -y install dnsmasq bind  --保证后期cobbler管理dns环境通过检测
# yum -y install cobbler cobbler-web

(3)配置启动httpd、cobbler等服务

# chkconfig --level 35 httpd on
# chkconfig --level 35 cobblerd on
# chkconfig --level 35 tftp on
# chkconfig --level 35 rsync on
# service xinetd start
# service httpd start
# service cobblerd start

检查服务监听端口:

blob.png

(4)Cobbler目录使用说明:


  配置文件目录:/etc/cobbler


    * * /etc/cobbler/settings : cobbler 主配置文件


    * * /etc/cobbler/iso/ : iso模板配置文件


    * * /etc/cobbler/pxe : pxe模板文件


    * * /etc/cobbler/power : 电源配置文件


    * * /etc/cobbler/users.conf : Web服务配置文件


    * * /etc/cobbler/users.digest : 用于web访问的用户名密码配置文件


    * * /etc/cobbler/dhcp.template : DHCP服务配置模板文件


    * * /etc/cobbler/dnsmasq.template : DNS服务配置模板文件


    * * /etc/cobbler/tftpd.template : tftp服务配置模板文件


    * * /etc/cobbler/modules.conf : Cobbler模块配置文件


  数据目录:/var/lib/cobbler


    * * /var/lib/cobbler/config : 用于存放distros systems profiles等信息配置文件


    * * /var/lib/cobbler/triggers : 用于存放用户自定义的cobbler命令


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


    * * /var/lib/cobbler/loaders : 存放各种引导程序


  镜像数据目录: /var/www/cobbler


    * * /var/www/cobbler/ks_mirror : 导入的发行版系统的所有数据


    * * /var/www/cobbler/images : 导入发行版的kernel和initrd镜像用于远程网络启动


    * * /var/www/cobbler/repo_mirror/ :yum仓库存储目录


  日志目录:/var/log/cobbler


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


    * * /var/log/cobbler/cobbler.log : cobbler日志


Cobbler Commands(常用使用命令参数)


    * * Import


    * * Sync


    * * Reposync 


    * * Build ISO (使用发行版、配置文件、制作出系统镜像)


    * * Command Line Search


    * * Replication


    * * Validata Kickstart


    * * ACL Setup

blob.png

(5)检查配置Cobbler

blob.png

动态更新配置:


下面根据cobbler配置信息的检查结果,逐个修复相关问题项。从Cobbler 2.4开始,有一个重要的功能,就是让你不需要手工编辑配置setting配置文件,直接使用命令修改相关配置,默认这个功能是不启用,启用需要进行一下配置:


**建议采用修改/etc/cobbler/settings配置文件的方式修改配置选项。


**在采用命令方式动态更新配置时,Cobbler会将配置文件中带"#"注释的行全部删除

# cd /etc/cobbler/
# cp -af settings{,.default}
# sed -i '/^allow_dynamic_settings:/ s/0/1/' settings
# service cobblerd restart

解决问题项1和2,设置cobbler服务器地址

# cobbler setting edit --name=server --value=172.16.100.7
# cobbler setting edit --name=next_server --value=172.16.100.7

如果selinux未禁用,也会提示报错,解决方法如下:

# setenforce 0
# sed -i '/\(^SELINUX=\).*/ s//\1disabled/' /etc/selinux/config

解决问题项3,下载启动菜单(可以选择不修复,x86/x86_64平台上,如果本地有syslinux包的最新版本,直接拷贝引导所需文件即可)

---Cobbler引导文件目录为: /var/lib/cobbler/loaders

# cobbler get-loaders

PXE引导所需的引导文件:

--pxelinux.0、menu.c32、vesamenu.c32和memdisk四个文件有syslinux或者syslinux-nolinux RPM包提供

--其中menu.c32为文本模式背景,vesamenu.c32为图形模式背景

--memdisk文件,引导IMG映像,如果你要引导IMG/IMA的映像文件,必须加载此文件。

# rpm -qf /usr/share/syslinux/pxelinux.0 
syslinux-4.02-8.el6.x86_64
# for file in `rpm -ql syslinux-nolinux | grep -E '/(pxelinux.0|menu.c32|vesamenu.c32)'`;do cp -af $file /var/lib/cobbler/loaders;done

解决问题项4,配置rsync服务

# sed -i '/disable/ s/yes/no/' /etc/xinetd.d/rsync
# chkconfig rsync on

如果提示rsync文件不存在,可以不用理他,应该是程序bug,不影响cobbler使用


解决问题项5 

# yum -y install debmirror

--安装debmirror包后,会衍生出一下错误提示,根据提示,注释选项即可

2 : comment out 'dists' on /etc/debmirror.conf for proper debian support

3 : comment out 'arches' on /etc/debmirror.conf for proper debian support

 

--处理如下:

# sed -i '/^@dists="sid";/ s/^/#/' /etc/debmirror.conf 
# sed -i '/^@arches="i386";/ s/^/#/' /etc/debmirror.conf

解决问题项6 安装ks文件验证支持包

# yum -y install pykickstart

解决问题项7,修改cobbler用户的默认密码

# openssl passwd -1 -salt `openssl rand -hex 4` 'redhat'
$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.
# cobbler setting edit --name=default_password_crypted --value='$1$fe4c277f$tbAmxXGSIA7cc/AXLsQVd.'

解决问题项8,如果需要电源管理特性的话,则需要安装cman及fence-agents包

# yum -y install cman fence-agents

如果cobbler服务器启用防火墙功能,需要开启以下端口:

# iptables -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443,25151 -j ACCEPT
# iptables -A INPUT -m state --state NEW -m udp -p udp -m multiport --dports 53,67:69,25151 -j ACCEPT

重启依赖服务,同步cobbler数据

# service httpd restart                                                
# service cobblerd restart                   
# cobbler sync

blob.png

配置cobbler依赖服务由cobbler进行管理:


--虽然cobbler可用于管理依赖的服务;


--默认情况下,若开机未将相关的服务设置成开启启动,即使cobblerd服务启动时,相关服务也是未启动状态。


--因此,需要确认dhcp、tftp、rsync等服务是否设置为开启自启动。


--tftp、rsync服务由xinetd管理

blob.png

--配置dhcp\dns由cobbler管理

# cobbler setting edit --name=manage_dhcp --value=1
# cobbler setting edit --name=manage_dns --value=1

防止误重装系统,选项:pxe_just_once

# cobbler setting edit --name=pxe_just_once --value=1

该选项作用:


--防止机器循环安装配置始终从网络引导


--激活此选项,机器回传Cobbler安装完成


--Cobbler将系统对象的netboot标志更改为false,强制要求机器从本地磁盘引导。


 


配置rsync、tftp服务,由cobbler管理,选项:manage_rsync、manage_tftp 、managed_tftpd


--默认情况下,Cobbler安装完成后,会自己去管理tftp服务,因manage_tftp和managed_tftpd的值默认为1


--要想让Cobbler来管理rsync、tftp服务,只要保证各自服务已安装,并设置为开机自启动即可。


--此外,需要保证xinetd服务为开机自启动状态,因rsync、tftp服务由xinetd服务统一管理。

# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/rsync
# sed -i '/diable/ s/yes/no/' /etc/xinetd.d/tftp 
# chkconfig --level 35 xinetd on

配置dhcp服务,模板文件/etc/cobbler/dhcp.template 选项:manage_dhcp


--使用dnsmasq来管理dhcp、dns 会更方便。对应的,你需要安装dnsmasq RPM包;


--由dnsmasq来管理dhcp dns 服务时,需要修改modules.conf配置文件,指定module设置值为manage_dnsmasq.


--相关的模板配置文件为/etc/cobbler/dnsmasq.template.

Cobbler自动化部署安装操作系统

这里我们采用默认方式配置使用DHCP服务

blob.png

# chkconfig --level 35 dhcpd on

配置web管理认证:

添加、修改默认用户(cobbler)

# sed -i 's/^cobbler/admin/' /etc/cobbler/users.digest
# htdigest /etc/cobbler/users.digest 'Cobbler' admin
Changing password for user admin in realm Cobbler
New password: 
Re-type new password

重启Cobbler,同步cobbler数据:

# service cobblerd restart
# cobbler sync

Cobbler自动化部署安装操作系统

Web相关访问地址:

* http://172.16.100.7/cobbler_web
* http://172.16.100.7/cobbler

配置cobbler组件


* distro:可使用distro命令或者import导入发行版镜像


Cobbler上,distro可以有多个;同一个distor之上可定义同个profile,每个profile使用不同的kicstart文件。

挂载发行版镜像源

# mkdir -p /mnt/CentOS/6.5
# mount -o loop /root/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/CentOS/6.5/

导入发行版镜像源

blob.png

# cobbler import --name=CentOS-6.5-x86_64 --path=/mnt/CentOS/6.5

blob.png

Cobbler Web导入后的镜像地址为:http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/

blob.png

准备kisckstart文件

# vim /var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
#platform=x86,AMD64, or Intel EM64T
#version=DEVEL
#Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/"
# Root password
rootpw --iscrypted $1$redhat$9yxjZID8FYVlQzHGhasqW/
# System authrization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info --host=172.16.0.1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --append="rhgb crashkernel=auto quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitiong infomation
part /boot --fstype="ext4" --size=200
part pv.008 --size=61440
 
volgroup vg0 --pesize=8192 pv.008
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=20480
logvol swap --name=swap --vgname=vg0 --size=2048
logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=10240
logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=20480
 
repo --name="local repo" --baseurl=http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/ --cost=1000
 
%post
echo -e 'Samlee LTD Services\n http://gzsamlee.blog.51cto.com\n' >> /etc/issue
 
sed -i '1,$s@id:[0-9]:initdefault:@id3:initdefault:@g' /etc/inittab
 
[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod og=--- /root/.ssh
 
%end
 
%packages
@base
@basic-desktop
@client-mgmt-tools
@core
@desktop-platform
@fonts
@general-desktop
@graphical-admin-tools
@legacy-x
@network-file-system-client
@perl-runtime
@remote-desktop-clients
@x11
lftp
 
%end

添加profile

# cobbler profile add --name=CentOS-6.5-basic --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/cetos6.x86_64.cfg
# cobbler profile list

配置本地yum仓库

#配置本地yum仓库
# mkdir /tmp/rpms
# createrepo /tmp/rpms  #放入rpm包,执行此步骤
# cobbler repo add --mirror=/tmp/rpms --name=local
# cobbler reposync
#配置本地epel仓库
# cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel
# cobbler reposync --tries=3 --no-fail  #同步epel仓库到本地,需要较长时间
#查看已添加的repo
# cobbler repo list
epel
local
#添加repo到profile
# cobbler profile edit --name==CentOS-6.5-basic --repos="epel local"
# cobbler sync

客户端安装测试如下:

blob.png

blob.png

客户端验证,可以看到生成了一个repo文件,指向cobbler服务器

# cat /etc/yum.repos.d/cobbler-config.repo 
[core-0]
name=core-0
baseurl=http://172.16.100.7/cobbler/ks_mirror/CentOS-6.5-x86_64/
enabled=1
gpgcheck=0
priority=1
  
[local]
name=local
baseurl=http://172.16.100.7/cobbler/repo_mirror/local
enabled=1
priority=99
gpgcheck=0

web管理访问:

blob.png

blob.png

blob.png

评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻

评论排行榜