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

简介:
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
Linux 持续交付 调度
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
1307 9
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
机器学习/深度学习 运维 Prometheus
构建高效运维体系:从自动化部署到智能监控的全方位实践
在当今数字化时代,企业对运维效率和稳定性的要求越来越高。本文将探讨如何构建一个高效的运维体系,从自动化部署、持续集成与持续交付(CI/CD)、智能监控、故障管理以及数据驱动决策等方面进行深入分析和实践指导。通过这些方法,企业可以实现更快速、更可靠的软件发布和问题解决,提升整体运营效率。
|
运维 监控 jenkins
打造高效运维:自动化部署与监控实践
【8月更文挑战第31天】 在数字化浪潮中,运维工作如同航船的舵手,决定着企业信息系统的稳定性和效率。本文将通过浅显易懂的语言,带你了解如何利用自动化工具简化日常运维任务,提升工作效率,并确保系统健康运行。从代码示例到操作流程,我们将一步步构建起你的自动化运维体系。
|
Web App开发 编解码 Linux
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
这篇文章介绍了使用Selenium自动化测试解决报告生成失败问题的方法,包括Linux环境下的部署指南和代码实现。
472 1
使用Selenium自动化测试解决报告生成失败问题及Linux部署指南
|
存储 监控 Linux
|
存储 运维 监控
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
470 2
|
NoSQL 编译器 Linux
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
547 0