shell脚本自动安装cobbler(改进+填坑)

author author     2022-12-21     757

关键词:

前言:

在这一篇博客写完后,虽然那个shell脚本可以成功安装cobbler服务,但是2个脚本毕竟不方便,而且在写脚本的过程中,出现的好多问题都没有找到原因。但我没有放弃,在我的不断摸索中,终于找到了原因和解决办法,现在分享给大家,希望对大家能有所帮助!

脚本环境

1.linux centos 7 系统
2.系统可连接外网
3.网络模式:NAT模式

实验步骤

1.上传cobbler脚本到Linux系统/root目录下

chmod +x *.sh 添加执行权限

技术图片

2.脚本cobbler.sh详解

#!/bin/bash

下载相关软件包

down_cobbler()

#关闭防火墙,安全性
systemctl stop firewalld
setenforce 0
echo -e "\033\t[34m 正在下载cobbler相关软件包 ... \033[0m" && sleep 1
rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm &&yum makecache && yum install cobbler cobbler-web dhcp tftp-server pykickstart httpd rsync xinetd tree -y

修改cobble,fttpr配置文件

setup_file()

echo -e "\033\t[34m 正在修改cobbler相关配置文件 ... \033[0m" && sleep 1
net=`ifconfig ens33 | grep "netmask" | awk ‘print $2‘ | cut -c 1-10`
ip=`ifconfig ens33 | grep "netmask" | awk ‘print $2‘`
pass=`openssl passwd -1 -salt ‘abc123‘ ‘abc123‘ `
sed -i "101c default_password_crypted: \"$pass\"" /etc/cobbler/settings
sed -i "s/^server: 127.0.0.1/server: $ip/" /etc/cobbler/settings
sed -i "s/^next_server: 127.0.0.1/next_server: $ip/" /etc/cobbler/settings
sed -i "s/manage_dhcp: 0/manage_dhcp: 1/" /etc/cobbler/settings
sed -i "14s/yes/no/" /etc/xinetd.d/tftp
#修改dhcp模板
sed -i "21s/192.168.1/$net/g" /etc/cobbler/dhcp.template
sed -i "22s/192.168.1.5/$net.1/g" /etc/cobbler/dhcp.template
sed -i "23s/192.168.1.1/$net.2/g" /etc/cobbler/dhcp.template
sed -i "25s/192.168.1.100 192.168.1.254/$net.100 $net.200/" /etc/cobbler/dhcp.template
#启动服务
systemctl enable rsyncd
systemctl start rsyncd
systemctl start xinetd

cobbler 同步

cobbler_sync()

echo -e "\033\t[34m cobbler 正在同步 ... \033[0m" && sleep 1
systemctl start httpd && systemctl start cobblerd &&sleep 2 && cobbler sync && systemctl restart dhcpd

下载引导操作系统文件和导入系统镜像

loader_images()

echo -e "\033\t[34m 正在下载引导操作系统文件和导入系统镜像 ... \033[0m" && sleep 1
cobbler get-loaders && sleep 2 && mount /dev/sr0 /mnt &&cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64

检查所有服务状态

check_service()

echo -e "\033\t[34m 正在检查所有服务状态 ... \033[0m" && sleep 1
echo -e "\033\t[34m 正在检查所有服务状态 ... \033[0m" && sleep 1
http=`netstat -ntap | grep :80 | wc -l`
cob=`systemctl status cobblerd | grep "active (running)" | wc -l `
os=`cobbler distro list | wc -l `
syn=`cobbler sync |wc -l`
dhcp=`systemctl status dhcpd | grep "active (running)" | wc -l `
load=`cobbler get-loaders | grep "already exists" | wc -l`
tftp=`systemctl status xinetd | grep "active (running)" | wc -l`
if [ $http -ne 0 ] && [ $cob -eq 1 ] && [ $os -eq 1 ] && [ $syn -gt 1 ] && [ $dhcp -eq 1 ] && [ $load -gt 1 ] && [ $tftp -eq 1 ];then
echo -e "\033\t[34m 所有服务运行正常! \033[0m"
else echo -e "\033\t[31m error,check ! \033[0m"
exit 0
fi

函数汇总

main()

down_cobbler && setup_file && cobbler_sync &&loader_images &&check_service

#执行函数
main

坑点及解决过程

1. cobbler相关包重复下载,如下图:

技术图片

出错原因:由于我取得函数名字(yum)和其中命令(yum)相同 ,使得脚本运行函数yum后读取到yum命令时误以为是yum函数,于是再次执行函数yum内容,当读取到yum命令,再次执行函数yum...如此陷入了死循环!

技术图片

解决方法:修改函数名,不要和任何命令相同即可解决!

技术图片

2.命令" systemctl start httpd && systemctl start cobblerd && cobbler sync && systemctl restart dhcpd "脚本执行报错,但单独执行或分开到另一个脚本执行成功,报错信息如下图:

技术图片

报错原因分析:在cobbler sync这一条命令执行失败,是因为前面命令没执行完成,就执行了cobbler sync命令。那为什么单独复制,粘贴这些命令执行就没问题,或者把这些命令分开到其他脚本中执行就能成功呢?

个人猜测:可能是脚本执行速度过快,是一条命令没执行完成,就执行了cobbler sync命令,自然会报错。但是,分开脚本执行或单独复制执行,这样操作,给了系统一个缓冲时间,成功运行这些命令!

技术大牛答案:带着疑问,我请教了技术大牛,给出了回答:进程不可并发执行!(就是进程不能同时执行太多命令,和我的猜测差不多。这是Linux 内核知识)

解决方法:1.分开脚本 (上一篇博客采用的!)2.添加sleep 命令,使系统停顿一会,命令是 :
systemctl start httpd && systemctl start cobblerd &&sleep 2 && cobbler sync && systemctl restart dhcpd

执行结果:完美解决问题

3.运行脚本cobbler.sh

技术图片技术图片
技术图片
技术图片

4.验证脚本

技术图片
技术图片
技术图片
技术图片

总结:

1.这篇博客是在之前博客基础上再次改进了,这次找出了上次入坑的原因和解决方法,知识点部分可参考 https://blog.51cto.com/13760351/2397130
2.坑点2中,涉及到了Linux内核知识,这方面知识,我不懂,没写出来,以后学习内核知识,再详细补充到博客上面,如有大牛精通这个,请不吝赐教!
3.博客脚本仅供参考,如有需要可去我的资料下载原文件

cobbler自动化安装系统

  网络安装服务器套件Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业。自打若干年前RedHat推出了Kickstart,此后我们顿觉身价倍增。不再需要刻了光盘一台一台地安装Linux,只要搞定PXE、DHCP、TFTP,还有那... 查看详情

自动化部署之cobbler的安装

概述   cobbler作为物理机操作系统批量部署工具,应用非常广泛,可以实现从系统安装到配置几乎无认为干涉的全自动化部署,他使用dnsmasq作为内部的dhcp和dns服务器。可以自定义其snippets脚本来实现更复杂的安装配置... 查看详情

cobbler批量自动装机

网络安装服务器套件Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业。自打若干年前RedHat推出了Kickstart,此后我们顿觉身价倍增。不再需要刻了光盘一台一台地安装Linux,只要搞定PXE、DHCP、TFTP,还有那满屏眼花... 查看详情

cobbler2.x安装与配置

软件环境Centos7.3Cobbler2.8.11、下载、编译和安装创建自动安装脚本cobbler-install.sh #!/bin/bash#FileName:/data/srcipts/cobbler-install.sh#cd/data/scriptsLOGFILE="/data/scripts/install.log"COBBLERSERVER=192.168.1.242PASSWO 查看详情

cobbler之自动化部署ubuntu14

概述    本例主要实现通过cobbler,配合seed脚本文件,来自动化安装部署ubunut环境,并安装相应的软件并作相应的基本配置,可以通过此方法来为ceph等大规模集群基础部署。  seed文件:Debianubuntu平台的一种... 查看详情

cobbler自动化安装

#Cobbler自动化安装[Cobbler官网](http://cobbler.github.io)![](/Users/wanyongzhen/Library/Containers/com.tencent.qq/Data/Library/ApplicationSupport/QQ/Users/1041282946/QQ/Temp.db/D673EB33-01F1-4571-8236-77E70B 查看详情

cobbler自动化安装操作系统

Cobbler安装与部署目录Cobbler安装与部署...1理论部分:Cobbler简介...1Collber对象关系图...1工作流程...2部署安装cobbler4一、系统环境...4二、部署阶段...5三、配置部分...5四、后续部署...13  理论部分:Cobbler简介  Cobbler由p... 查看详情

centos7安装cobbler自动部署ubuntu

CentOS7安装cobbler自动部署ubuntu 一、简介二、安装CentOS7调整配置及安装相关软件1、调整配置2、安装epel包3、安装cobbler、cobbler-web以及相关依赖软件4、设置开机启动三、Cobbler、tftp、dhcp、rsync配置1、TFTP配置2、配置rsync3、配置/e... 查看详情

cobbler自动化安装平台(代码片段)

cobbler自动安装cobbler简介  Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具... 查看详情

基于cobbler实现自动化安装系统

基于cobbler实现自动化安装系统环境介绍centos6.8为centos6.8提供两块网卡(非必要)一块为桥接,方便xshell连接和测试一块为vmnet3:用来搭建dhcp,tftp,和为客户端提供cobbler服务前提,(确保安装TFTP,dhcp,rsync)# yum install httpd cobbl... 查看详情

cobbler自动化安装系统

Kickstart概述Kickstart安装选项,包含语言选择、防火墙、密码、网络、分区设置等2.安装Cobbler所需要的服务yuminstallcobblercobbler-webdhcptftp-serverpykickstarthttpdxinetd-yThefollowingarepotentialconfigurationitemsthatyoumaywanttofix:3:chang 查看详情

cobbler+pxe实现系统自动化安装

cobbler简介 Cobbler是一个自动化和简化系统安装的工具,通过使用网络引导来实现系统自动化安装。Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。cobbler构成组件650)this.width=650;"src="https:/... 查看详情

cobbler系统自动安装运维工具(代码片段)

cobbler系统自动安装运维工具1.1Cobbler简介????Cobbler通过将设置和管理一个安装服务所涉及的任务集中在一起,从而简化了系统配置,相当于Cobbler封装了DHCP、TFTP、XINTED等服务,结合了PXE、kickstart等安装方法,可以实现自动化安装... 查看详情

cobbler自动安装rhel7.3

1.实验环境cobbler服务器:CentOS7.064位IP地址:192.168.126.120?子网掩码:255.255.255.02.Cobbler安装配置2.1安装CentOS7(略)2.2关闭SELinux[[email protected]~]#vim/etc/selinux/configSELINUX=disabled或者[[email protected]~]# 查看详情

自动化之cobbler部署

运维自动化之cobbler部署cobbler介绍Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,... 查看详情

自动化运维之cobbler自动化部署安装操作系统

Cobbler概述: Cobbler可以用来快速建立Linux网络安装环境,它已将Linux网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。 在生产环境中,经常批量部署几十甚至上百台服务器时,实现自... 查看详情

cobbler-自动化部署神器

Cobbler-自动化部署神器Cobbler介绍Cobbler是一个Linux服务器快速网络安装的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行python代码),可以通过网络启动(PXE)的方式来快速安装、重装物理... 查看详情

自动化-cobbler

cobbler功能安装环境centos7安装步骤[[email protected]~]#systemctlstopfirewalld.service[[email protected]yum.repos.d]#rpm-ivhhttp://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm  安装 查看详情