运维自动化之使用Cobbler自动化部署Linux操作系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://dgd2010.blog.51cto.com/1539422/1672569

1.Cobbler是什么?

Cobbler是一个Linux安装服务器,能够快速设置好网络安装环境。它实现了许多与Linux相关的任务的自动化和组合,因此你在部署新的(操作)系统或更改已经存在的操作系统时不需要在繁多的命令和应用程序之间来回切换。Cobbler能帮助(用户、管理者)置备和管理DNS、DHCP、软件包更新、电源管理、配置管理以及更多。

“Cobbler is a Linux installation server that allows for rapid setup of network installation environments. It glues together and automates many associated Linux tasks so you do not have to hop between many various commands and applications when deploying new systems, and, in some cases, changing existing ones. Cobbler can help with provisioning, managing DNS and DHCP, package updates, power management, configuration management orchestration, and much more.” --http://cobbler.github.io/

更多介绍:

1)Wiki:https://fedorahosted.org/cobbler/ 

2)其他:https://github.com/cobbler/cobbler/wiki

3)Kickstart:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/index.html

4)PXE:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/index.html

2.为什么使用Cobbler?

Cobbler之所以存在一定是有道理的,如果在这之前,想实现通过网络自动安装操作系统,就必须使用手动使用kickstart+PXE,而Cobbler将这两者封装在自己软件中,通过编译安装或者yum的方式就能将这些功能集成在一起,因此假如你想实现网络安装多个操作系统,相比手动去做kickstart+PXE来说,Cobbler是一个更好的选择。

除此之外Cobbler还能在虚拟化环境中进行安装,支持 Xen, qemu, KVM, 部分VMware相类似的虚拟化类型,由一个名字叫做“koan(kickstart-over-a-network)”实现。

在配置管理方面除了内置的轻量级配置管理系统外,还能集成其他配置管理系统,如Puppet。

Cobbler是由Python语言所编写,在管理方面除了命令行界面还支持Web管理以及API支持,除此之外还有其他高级功能,如制作安装镜像(image)、fence电源管理等。

3.如何使用Cobbler ?

1)安装Cobbler

要想使用Cobbler当然要先安装它。在Ubuntu系统中安装Cobbler只需要执行安装命令,而在CentOS系统中要安装Cobbler只要有了epel那一切也并不复杂,当然也可以像fuel一样,将Cobbler装入docker容器中。

Ubuntu:

1
sudo  apt-get  install  cobbler cobbler-web

CentOS:

1
2
3
4
# install epel repo   
yum  install  http: //dl .fedoraproject.org /pub/epel/6/x86_64/epel-release-6-8 .noarch.rpm    
# cobbler    
yum  install  cobbler cobbler-web -y

2)配置Cobbler

接下来需要配置Cobbler的配置文件,主要根据“cobbler check”命令的结果按照提示去做,还是比较轻松的。

步骤如下:

a.主要修改/etc/cobbler/settings,将/etc/cobbler/settings配置文件中的next_server和server设置成Cobbler服务器的IP地址。

1
2
3
4
5
6
7
8
ipaddr=$(ip addr show to 0.0.0.0 /0  scope global |  awk  '/[[:space:]]inet / { print gensub("/.*","","g",$2) }' )   
operationfile= /etc/cobbler/settings    
bakoperationfile=$operationfile$( date  +-%F-%H-%M-%S) "~"    
cp  $operationfile $bakoperationfile    
chown  -R --reference=$operationfile $bakoperationfile    
chcon -R --reference=$operationfile $bakoperationfile    
sed  -i  "s/next_server: 127.0.0.1/next_server: $ipaddr/g"   $operationfile    
sed  -i  "s/server: 127.0.0.1/server: $ipaddr/g"  $operationfile

将/etc/xinetd.d/rsync和/etc/xinetd.d/tftp中的disable = yes改为disable=no。

b.获取boot loader

尽管Cobbler提供了“cobbler get-loaders ”命令来从网络上自动下载最新可用的loader,但因为Cobbler网址变更的原因变得不再可用,因此只能从github或早期已经安装好了的Cobbler服务器(例如fuel)上获取。

github地址:https://github.com/cobbler/cobbler.github.io/tree/master/loaders

转换方法:

1
2
3
4
5
6
7
8
9
10
http: //www .cobblerd.org /loaders/README  to  /var/lib/cobbler/loaders/README     
http: //www .cobblerd.org /loaders/COPYING .elilo to  /var/lib/cobbler/loaders/COPYING .elilo     
http: //www .cobblerd.org /loaders/COPYING .yaboot to  /var/lib/cobbler/loaders/COPYING .yaboot     
http: //www .cobblerd.org /loaders/COPYING .syslinux to  /var/lib/cobbler/loaders/COPYING .syslinux     
http: //www .cobblerd.org /loaders/elilo-3 .8-ia64.efi to  /var/lib/cobbler/loaders/elilo-ia64 .efi     
http: //www .cobblerd.org /loaders/yaboot-1 .3.14-12 to  /var/lib/cobbler/loaders/yaboot     
http: //www .cobblerd.org /loaders/pxelinux .0-3.86 to  /var/lib/cobbler/loaders/pxelinux .0     
http: //www .cobblerd.org /loaders/menu .c32-3.86 to  /var/lib/cobbler/loaders/menu .c32     
http: //www .cobblerd.org /loaders/grub-0 .97-x86.efi to  /var/lib/cobbler/loaders/grub-x86 .efi     
http: //www .cobblerd.org /loaders/grub-0 .97-x86_64.efi to  /var/lib/cobbler/loaders/grub-x86_64 .efi

通常用到的就是pxelinux.0。

c.安装其他的一些必要的组件

1
2
3
yum  install  debmirror pykickstart fence-agents cman -y   
yum  install  dhcp dhcp-devel -y    
yum  install  syslinux

d.修改模板

如果用Cobbler管理DHCP就编辑/etc/cobbler/dhcp.template,同时将/etc/cobbler/settings中manage_dhcp: 0的设置为manage_dhcp: 1,建议修改

示例:

1
2
3
4
5
6
7
8
subnet 10.20.0.0 netmask 255.255.255.0 {   
      option routers             10.20.0.2;    
      option domain-name-servers 114.114.114.114, 8.8.4.4;    
      option subnet-mask         255.255.255.0;    
      range dynamic-bootp        10.20.0.200 10.20.0.210;    
      default-lease- time          21600;    
      max-lease- time              43200;    
      next-server                $next_server;

如果用Cobbler管理tftp就编辑/etc/cobbler/tftpd.template,同时将/etc/cobbler/settings中manage_tftp: 0的设置为manage_tftp: 1,建议修改

如果用Cobbler管理rsync就编辑/etc/cobbler/rsync.template,同时将/etc/cobbler/settings中manage_rsync: 0的设置为manage_rsync: 1

如果用Cobbler管理dns就编辑 /etc/cobbler/dnsmasq.template,同时将/etc/cobbler/settings中manage_dns: 0的设置为manage_dns: 1,此项也能管理DHCP

e.启用、关闭相关服务并留意结果

1
2
3
4
5
6
7
8
9
setenforce 0   
service httpd start    
service cobblerd start    
service xinetd start    
service iptables stop    
ps  -ef |  grep  $( lsof  grep  tftp |  grep  xinetd |  awk  '{print $2}' )    
ps  -ef |  grep  dhcp |  grep  - v  grep    
cobbler check    
cobbler  sync

f.导入操作系统安装镜像

1
2
mount  -t iso9660 CentOS-6.6-x86_64-minimal.iso  /mnt  -o loop,ro   
cobbler  import  --path= /mnt  --name=CentOS-6.6-x86_64-minimal

如果有做好的kickstart文件,则可以执行cobbler import --path=/mnt --name=CentOS-6.6-x86_64-minimal --kickstart=KICKSTART_FILE

如果没有做好的kickstart文件也不要紧,只需要知道密码是什么即可,默认kickstart和密码是在/etc/cobbler/settings中定义的:

default_kickstart: /var/lib/cobbler/kickstarts/default.ks

在CentOS系统中,每次手动安装完一个操作系统后都会在用户家目录下生成一个ks文件,可以以此参考。

default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."

密码可以由命令生成或者使用默认的“cobber”密码。

1
2
cobbler distro list   
cobbler  sync

注释:cobbler的命令帮助系统是cobbler –help,如cobbler import –help

g.测试cobbler

条件:

a).网络中没有其他DHCP服务器,例如在VMware Workstation中进行测试,可以将VMware Workstation的DHCP服务关闭。

b).要安装操作系统的客户机要与Cobbler同一个网络,且客户机支持PXE网络启动,这通常需要客户机的BIOS支持。

h.调试

相关命令

cobbler check

相关日志:

跟DHCP、tftp相关的日志,/var/log/messages

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

以下是一些成功的截图

2015-07-09_120345

图1 客户机安装过程中Cobbler主机上的一些成功日志

2015-07-09_115935

图2 客户机在自动无人干预安装过程中

2015-07-09_120323

图3 客户机完成自动安装,已可以登录

image

图4 Cobbler的Web管理界面,其地址一般是http://cobbler_ip_address/cobbler_web/,用户名cobbler,密码cobbler。

附 其他不错的可参考资料

运维自动化之 Cobbler 系统安装使用详解 http://os.51cto.com/art/201405/439670.htm

使用Cobbler自动化和管理系统安装 http://www.ibm.com/developerworks/cn/linux/l-cobbler/

运维自动化之Cobbler系统安装详解 http://os.51cto.com/art/201109/288604_all.htm

end

本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1672569

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
27天前
|
人工智能 分布式计算 大数据
Linux操作系统:开源力量的崛起与影响###
一场技术革命的火种,如何燎原? 本文将带您深入探索Linux操作系统的诞生背景、核心特性及其对现代科技世界的深远影响。从1991年芬兰学生Linus Torvalds的一个小众项目,到如今成为支撑全球无数服务器、超级计算机及物联网设备的基石,Linux的发展既是一部技术创新史,也是开源文化胜利的见证。通过剖析其设计哲学、安全性、灵活性等关键优势,结合实例展示Linux在云计算、大数据处理等领域的广泛应用,本文旨在揭示Linux为何能在众多操作系统中脱颖而出,以及它如何塑造了我们今天的数字生活。 ###
|
25天前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
7天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
28 9
|
23天前
|
运维 监控 网络协议
|
7天前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
24 2
|
9天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
28 3
|
11天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
33 4
|
10天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
30 1
|
13天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
18天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###