运维自动化之中级进阶—Cobbler实战,实现批量多版本os自动部署。

简介:

Cobbler简介

   Cobbler由python语言开发,是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。适用场景:需要大批量的部署操作系统。


Collber 对象关系图

wKiom1P8LieApkJMAACq4Zg-hmw940.jpg

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

profile:定义Kickstart文件

repos:安装源

system表示要配给的机器。它包含一个配置文件或一个镜像,还包含 IP 和 MAC 地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息。

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

集成的服务

  • PXE 服务

  • DHCP服务管理

  • DNS服务管理

  • HTTP服务管理

  • TFTP服务管理

  • Kickstart服务

  • yum仓库管理

  • 电源管理

工作流程

(1).需要安装系统的客户端主机的网卡支持网络安装,也就是支持以PXE模式启动。

(2).客户端主机需要有一个IP地址来与Cobbler Server进行通信,这时网络中必须要有一个主机能自动分配IP。DHCP就是一个能为客户端主机自动分配IP地址的服务,DHCP就是安装在Cobbler Server主机上。

(3).客户端得到IP地址后,需要提供一个引导程序pxelinux.0(类似于grub) 此文件由syslinux程序提供,所以需要安装syslinux并且能加载内核及内核镜像文件(vmlinuz与initrd.img),客户端可以通过TFTP协议到TFTP Server上下载内核及内核镜像文件(vmlinuz与initrd.img),所以需要一个TFTP 服务,TFTP也是安装在Cobbler Server主机上,客户端只是知道可以用TFTP协议下载文件,但是TFTP Server的IP是那个,这个还得需要DHCP服务器指名告诉客户端那个是TFTP Server(注,所以我们在配置DHCP模板时指定next-server,同时指定了filename,这里的filename就是指定的pxelinux.0引导程序),而TFTP服务需要超级进程进行管理,此进程是xinetd,因此需要在Cobbler Server上安装xinet服务。

(4).然后通过distro找到安装的发行版,通过设置的profile找到kickstart文件,完成自动安装。

安装cobbler

  • yum install cobbler httpd cobbler-web pykickstart debmirror dhcp -y

  • yum install -y ed patch perl perl-Compress-Zlib perl-Digest-SHA1 perl-LockFile-Simple perl-libwww-perl  //Cobbler环境支持包

cobbler配置文件目录介绍:

wKiom1P8P4nDqHH_AAG4moa4goM988.jpg

  • /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模块配置文件

开始配置

1、编辑/etc/cobbler/settings 定义server 指定提供服务的ip地址,不能使用localhost。

2、编辑/etc/cobbler/settings定义next_server 指定TFTP服务器地址。

3、运行cobbler get-loaders 下载需要的程序,需要访问互联网。 如果访问不了互联网可以自行安装,syslinux 

自行复制文件pxelinux.0 menu.c32 到 /var/lib/cobbler/loaders

如:

#yum install syslinux -y

#cd /usr/share/syslinux/

#cp pxelinux.0 menu.c32 /var/lib/cobbler/loaders

4、启动rsync  chkconfig rsync on

5、编辑/etc/debmirror.conf  注释 ’dists‘ 和 ‘arches’

wKioL1P8QtGiEqYSAAFGcDCbrA4484.jpg

6、修改默认密码,编辑文件/etc/cobbler/settings,找到字段default_password_crypted,将生成的密码串替换掉默认的。

openssl passwd -1 -salt `openssl rand -hex 5`


7、安装fencing 设备 cman fence-agents //这一项无关紧要,很少用上。

配置tftp-server

首先启用tftp,可以编辑配置文件/etc/xinetd.d/tftp修改disable那一项。 或者用命令。

chkconfig tftp on

service xinetd start

也可以在settings文件中启用manage_tftpd: 1 ,使用cobbler管理tftp。

配置DHCP服务

在settings文件中启用 manage_dhcp: 1

编辑cobbler管理dhcp服务的模版文件/etc/cobbler/dhcp.template

wKiom1P8UVaxukPaAALRnus722c612.jpg


导入RHEL6.4镜像文件

cobbler import --name="rhel6.4-i386" --path=/mnt/dvd

导入的文件保存在/var/www/cobbler/ks_mirror/

我们可以通过浏览器访问到

wKiom1P8Ul6gU5EbAAGeyDWBkpo497.jpg

制作kickstart文件(略)

导入profile

cobbler profile add --name=rhel6.4-i386-basic --distro=rhel6.4-i386 --kickstart=/root/rhel6-basic.cfg 

删除默认生成的profile

cobbler profile remove --name=rhel6.4-i386

配置完成后记得执行 cobbler sync 同步配置到数据目录。

cobbler会自动给/var/lib/tftpboot/pxelinux.cfg/default 添加lable

来看看里面的信息:


DEFAULT menu

PROMPT 0

MENU TITLE Cobbler | http://www.cobblerd.org/

TIMEOUT 200

TOTALTIMEOUT 6000

ONTIMEOUT local


LABEL local

        MENU LABEL (local)

        MENU DEFAULT

        LOCALBOOT -1


LABEL rhel6.4-i386-basic

        kernel /images/rhel6.4-i386/vmlinuz

        MENU LABEL rhel6.4-i386-basic

        append initrd=/images/rhel6.4-i386/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.201/cblr/svc/op/ks/profile/rhel6.4-i386-basic

        ipappend 2


MENU end

这样我们的cobbler就配置完成了,开启另一台虚拟机,设置网卡启动。

wKioL1P8VZ_C1EesAADq_0ECVwE434.jpg


wKiom1P8VT-gDkUrAAFVAS4srm8894.jpg


配置认证,通过Web接口导入centos6.5,实现一键安装。

编辑/etc/cobbler/modules.conf

[authentication]

module = authn_pam  //设置使用系统用户认证机制。

创建一个用户。

useradd tuchao;echo 123456 |passwd --stdin tuchao

编辑/etc/cobbler/users.conf 设置cobbler认证用户。

[admins]

admin = "tuchao"

使用浏览器进入Web管理接口。

wKiom1P938vC-1xlAADkIwV7HZI451.jpg

通过web接口导入镜像文件,生成distro。

wKiom1P_ANTz0W_KAAMCa2JVpZw612.jpg

填好后点击“Run”即可开始复制文件,系统会自动在/var/log/cobbler/tasks/目录下生成以当前时间命名的日志文件如:2014-08-28_165922_import.log。

相应的cobbler sync操作也会被记录日志。如 2014-08-28_171540_sync.log

wKiom1P-9qfSv2NDAAJ26I19lSo530.jpg

然后我们可以通过cobbler distro 命令查看是否添加成功了。 通过web接口的distro按钮也可以。

创建ks文件:


#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --enabled --service=ssh

# Install OS instead of upgrade

install

# Use network installation

url --url="http://192.168.1.201/cobbler/ks_mirror/centos6.5-x86_64/"

# Root password

rootpw --iscrypted $1$hnJSXM6C$gt3.CTocsJz4Kg/tV3Udl0

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# SELinux configuration

selinux --enforcing

# Installation logging level

logging --level=info


# System timezone

timezone  Asia/Shanghai

# Network information

#network  --bootproto=dhcp --device=eth0 --onboot=on

# System bootloader configuration

bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

part /boot --fstype=ext4 --size=500

part pv.008002 --grow --size=1


volgroup vg_server1 --pesize=4096 pv.008002

logvol / --fstype=ext4 --name=lv_root --vgname=vg_server1 --grow --size=1024 --maxsize=51200

logvol swap --name=lv_swap --vgname=vg_server1 --grow --size=2016 --maxsize=2016

%packages

@additional-devel

@base

@basic-desktop

@chinese-support

@core

@debugging

@desktop-debugging    后面的软件包由于太长,我就省略了,软件包大家可以自行定义。

注意:如果是拿系统的ks文件来修改的,一定要删除下面一行:

repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

这是代表从光盘找安装源的意思

不然就会出现如下错误:

wKiom1P--jmg1qltAAGEOwxll7E671.jpg

定义profile文件

wKioL1P--XqgfldiAALSMcYZD24151.jpg

配置完成后记得sync,可以用命令cobbler sync,在web接口也有sync按钮。


导入Centos5.3镜像,配置一键安装。

挂载好光盘,这里我们用命令导入。

cobbler import --name=centos5.3-i386 --path=/mnt/dvd/

待命令行界面出现"*** TASK COMPLETE ***"表示导入完成了,也可以去查看日志确认。

创建Kickstart文件:

#platform=x86, AMD64, or Intel EM64T

# System authorization information

auth  --useshadow  --enablemd5

# System bootloader configuration

bootloader --append="rhgb quiet" --location=mbr --driveorder=sda

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

part /boot --fstype ext3 --size=100 --ondisk=sda

part pv.2 --size=0 --grow --ondisk=sda

volgroup VolGroup00 --pesize=32768 pv.2

logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=2048


# Use graphical install

graphical

# Firewall configuration

firewall --enabled --ssh

# Run the Setup Agent on first boot

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# Installation logging level

logging --level=info

# Use network installation

url --url=http://192.168.1.201/cobbler/ks_mirror/centos5.3-i386/

# Network information

network --bootproto=dhcp --device=eth0 --onboot=on

#Root password

rootpw --iscrypted $1$OKFwyttn$.BUnf8M4cA7aU8ffQDJx2.


# SELinux configuration

selinux --enforcing

# System timezone

timezone --isUtc Asia/Shanghai

# Install OS instead of upgrade

install

# X Window System configuration information

xconfig  --defaultdesktop=GNOME --depth=8 --resolution=640x480 --startxonboot


%packages

@office

@development-libs

@editors

@gnome-software-development

@text-internet

@x-software-development

@gnome-desktop


定义profile过程和上面一样(略),执行cobbler sync。

我们再来查看 /var/lib/tftpboot/pxelinux.cfg/default 文件,cobbler会自动生成lable。

MENU TITLE Cobbler | http://www.cobblerd.org/

TIMEOUT 200

TOTALTIMEOUT 6000

ONTIMEOUT local


LABEL local

        MENU LABEL (local)

        MENU DEFAULT

        LOCALBOOT -1


LABEL centos5.3-i386-common

        kernel /images/centos5.3-i386/vmlinuz

        MENU LABEL centos5.3-i386-common

        append initrd=/images/centos5.3-i386/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.201/cblr/svc/op/ks/profile/centos5.3-i386-common

        ipappend 2


LABEL centos6.5-x86-64

        kernel /images/centos6.5-x86_64/vmlinuz

        MENU LABEL centos6.5-x86-64

        append initrd=/images/centos6.5-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.201/cblr/svc/op/ks/profile/centos6.5-x86-64

        ipappend 2


LABEL rhel6.4-i386-basic

        kernel /images/rhel6.4-i386/vmlinuz

        MENU LABEL rhel6.4-i386-basic

        append initrd=/images/rhel6.4-i386/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.1.201/cblr/svc/op/ks/profile/rhel6.4-i386-basic

        ipappend 2




MENU end

开启一台虚拟机配置网卡启动,测试效果。

wKiom1P-_ciye1NdAAETasnglbQ919.jpg


wKioL1P-_vWQ2ud6AAG7RB-gV0k679.jpg


这篇写到这里也就完了,请大家多多指点,共同进步。



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1545323

相关文章
|
6天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
106 64
|
15天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
1月前
|
运维 监控 应用服务中间件
自动化运维的新篇章:Ansible Playbooks入门与实战
【9月更文挑战第1天】在追求效率和稳定性的今天,自动化运维已经成为IT行业的必修课。本文将带你走进自动化工具Ansible的世界,通过实战案例深入理解Ansible Playbooks的编写和应用。文章不仅介绍基础概念,更通过具体代码示例,展示如何利用Ansible简化日常运维任务,提升工作效率。无论你是运维新手还是希望深化自动化技能的资深人士,本指南都将为你开启一段新的学习旅程。
|
2月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
125 0
|
2月前
|
运维 Linux Apache
自动化运维工具:Ansible入门与实战
【8月更文挑战第31天】 本文将引导读者理解自动化运维的重要性,并通过介绍Ansible这一强大的自动化工具,展示如何简化和加速IT管理任务。文章不仅讲解了Ansible的基础概念,还通过实例展示了如何配置和使用Ansible进行日常的运维工作,包括部署、配置管理和任务自动化等。无论你是运维新手还是希望提高现有工作流程的效率,这篇文章都会为你提供实用的知识和技能。
|
1月前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
70 36
|
10天前
|
机器学习/深度学习 运维 Cloud Native
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为信息技术的重要支柱,其效率与创新能力直接关系到企业信息系统的稳定性和业务连续性。本文将探讨如何通过技术手段,实现运维从传统手工操作向自动化、智能化的转变,进而构建一个高效、可靠的运维体系。我们将从自动化工具的应用开始,逐步深入到智能运维的实践,最终展望云原生架构下的运维未来趋势。
|
14天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
27 1
|
1月前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
24天前
|
机器学习/深度学习 运维 安全
构建高效运维体系:从自动化到智能化的演进之路
在数字化转型的浪潮中,运维管理作为信息技术基础设施的重要支柱,正经历着从传统手工操作向自动化、智能化的深刻变革。本文将探讨如何通过引入自动化工具和平台,实现运维流程的标准化与效率提升;进而利用大数据分析和人工智能技术,迈向预测性维护和智能决策支持的高级阶段。通过案例分析,揭示成功转型的关键因素,为运维专业人士提供一套可借鉴的升级路径。