Cobbler自动化批量安装Linux操作系统 - 运维总结
一、Cobbler简述
Cobbler是一个自动化和简化系统安装的工具,通过使用网络引导来控制和启动安装。Cobbler的特性包括存储库镜像、Kickstart模板和连接电源管理系统。Cobbler通过将设置和管理一个安装服务器所涉及的任务集中在一起,从而简化了系统配置。相当于Cobbler封装了DHCP、TFTP、XINTED等服务,结合了PXE、kickstart等安装方法,可以实现自动化安装操作系统,并且可以同时提供多种版本,以实现在线安装不同版本的系统。
Cobbler提供快速网络安装linux操作系统的服务,而且在经过调整也可以支持网络安装windows。Cobbler是用Python开发的,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS、TFTP、RSYNC以及yum仓库、构造系统ISO镜像。Cobbler支持命令行管理,web界面管理,还提供了API接口,可以方便二次开发使用。Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷。使用Cobbler之前最好是先了解下PXE和Kickstart的基本原理。
1.1 Cobbler相关服务
DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有服务器作中央管理的手段。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做"双机热备"的。
TFTP
TFTP是一种比较特殊的文件传输协议。相对于FTP和目前经常使用的SFTP,TFTP是基于TCP/IP协议簇,用于进行简单文件传输,提供简单、低开销的传输服务。TFTP的端口设置为69。
相对于常见的FTP,TFTP有两个比较好的优势: 1) TFTP基于UDP协议,如果环境中没有TCP协议,是比较合适的; 2) TFTP执行和代码占用内存量比较小;
PXE
预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让服务器通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1)[1]。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。至于更深层次的东西先不用去管,下面直接上个图,看下它的工作原理:
- PXE Client发送广播包请求DHCP分配IP地址DHCP
- Server回复请求,给出IP地址以及Boot
- Server的地址PXE下载引导文件执行引导程序
总结来说,PXE主要是通过广播的方式发送一个包,并请注获取一个地址,而后交给TFTP程序下载一个引导文件。
PXE工作模式:基于C/S的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。PXE 技术的实现流程概括如下:
- 客户端的网卡要支持网络引导机制;如果有操作系统的话,应该调整为第一引导设备;在主机被唤醒之后,开始加载网络引导应用时,此网卡会通过在本地局域网中广播一个rarp协议,第一步获得一个ip地址;
- 获得ip地址的同时还会从dhcp那里获得引导文件名称和文件服务器地址;随后会去找文件服务器主机,加载对应的文件,所需要的文件加载完成后,在内存中展开,而后基于此文件,可以实现去加载一个内核文件,此内核文件也一样通过tftp文件服务器获取,内核通常依赖于initrd虚根来完成对于真实根所在设备的驱动加载;
- 加载完成以后,这个内核文件通常是专用于为系统安装所设定的,因此,如果配置了网络属性,这个内核文件还需要基于网络配置在内核上的ip地址,基于网络把自己扮演成某种协议的客户端,加载一个能够启动安装程序的程序包,在本地完成安装并启动这个应用程序,而此程序在已经不再tftp文件服务器上面;
- 网络引导安装方式中,依赖于网络上应该存在一个基础程序包镜像仓库,因此,此时还依赖于外部有一个基于ftp或http再或者nfs服务所提供的yum仓库;还要通过这个yum仓库加载安装程序,以及安装程序启动完后,很可能要读取kickstart文件,可以根据kickstart文件内容,解决依赖关系以后,基于这个yum仓库,完成后续的所有安装过程;
因此,对于centos系列服务器而言,整个pxe技术大概要依赖以上所提到的服务: dhcp服务, tftp服务, 能够提供yum仓库的服务;还要提供:kickstart文件 (如果不想使用自动化可以不用提供此文件) 。
Kickstart
Kickstart 是Red红帽折腾出来的一个工具,可以简单理解为一个自动安装应答配置管理程序。通过读取这个配置文件,系统知道怎么去分区,要安装什么包,配什么IP,优化什么内核参数等等,其主要有以下部分组成:
- Kickstart 安装选项,包含语言的选择,防火墙,密码,网络,分区的设置等;
- %Pre 部分,安装前解析的脚本,通常用来生成特殊的ks配置,比如由一段程序决定磁盘分区等;
- %Package 部分,安装包的选择,可以是 @core 这样的group的形式,也可以是这样 vim-* 包的形式;
- %Post 部分,安装后执行的脚本,通常用来做系统的初始化设置。比如启动的服务,相关的设定等。
简单来说,就是将手动安装操作系统的所有详细步骤记录到一个文件中(ks 文件),然后kickstart工具通过读取这个文件就可以实现自动化安装系统。Cobbler是对kickstart的所有组件的封装,本质上就是网页版本的kickstart。
1.2 Cobbler设计方式
Cobbler 的配置结构基于一组注册的对象。每个对象表示一个与另一个实体相关联的实体(该对象指向另一个对象,或者另一个对象指向该对象)。当一个对象指向另一个对象时,它就继承了被指向对象的数据,并可覆盖或添加更多特定信息。以下对象类型的定义为:
- 发行版:表示一个操作系统。它承载了内核和 initrd 的信息,以及内核参数等其他数据。
- 配置文件:包含一个发行版、一个 kickstart 文件以及可能的存储库,还包含更多特定的内核参数等其他数据。
- 系统:表示要配给的机器。它包含一个配置文件或一个镜像,还包含 IP 和 MAC 地址、电源管理(地址、凭据、类型)以及更为专业的数据等信息。
- 存储库:保存一个 yum 或 rsync 存储库的镜像信息。
- 镜像:可替换一个包含不属于此类别的文件的发行版对象(例如,无法分为内核和 initrd 的对象)。
基于注册的对象以及各个对象之间的关联,Cobbler 知道如何更改文件系统以反映具体配置。因为系统配置的内部是抽象的,所以您可以仅关注想要执行的操作。Cobbler 对象关系图如下:
1.3 Cobbler工作原理
Cobbler由python语言开发,小巧轻便(才15k行python代码),是对PXE和Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。同时,Cobbler也提供了API接口,使用其它语言也很容易做扩展。它不紧可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理。
Cobbler 支持众多的发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。当添加一个操作系统(通常通过使用 ISO 文件)时,Cobbler 知道如何解压缩合适的文件并调整网络服务,以正确引导机器。Cobbler 使用命令行方式管理,也提供了基于Web的图形化配置管理工具(cobbler-web)。通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。
Server服务端工作流程:
第一步,启动Cobbler服务 第二步,进行Cobbler错误检查,执行cobbler check命令 第三步,进行配置同步,执行cobbler sync命令 第四步,复制相关启动文件文件到TFTP目录中 第五步,启动DHCP服务,提供地址分配 第六步,DHCP服务分配IP地址 第七步,TFTP传输启动文件 第八步,Server端接收安装信息 第九步,Server端发送ISO镜像与Kickstart文件
Client客户端工程流程:
第一步,客户端以PXE模式启动 第二步,客户端获取IP地址 第三步,通过TFTP服务器获取启动文件 第四步,进入Cobbler安装选择界面 第五步,客户端确定加载信息 第六步,根据配置信息准备安装系统 第七步,加载Kickstart文件 第八步,传输系统安装的其它文件
Cobbler的Server服务端与Client客户端 (即裸机, PXE client) 交互过程分析
- 裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP;
- DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址;
- 裸机拿到ip后再向cobbler server发送请求OS引导文件的请求;
- cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port;
- 裸机通过上面告知的TFTP server地址和port通信,下载引导文件;
- 裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image;
- cobbler server发送请求的kickstart和os iamge;
- 裸机加载kickstart文件;
- 裸机接收os image,安装该os image;
之后,裸机就不"裸"了,有了自己的os和dhcp分配给其的ip;可以通过查看cobbler server所在机器的dhcp服务的相关文件,来查看分配出去的ip和对应的mac地址:
[root@Cobbler-node ~ ]# cat /var/lib/dhcpd/dhcpd.leases
1.4 Cobbler工作流程
Cobbler是PXE的二次封装,将多种参数封装到一个菜单,是用python语言编写。
- client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个ip
- DHCP收到请求后发送responese,包括其ip
- client拿到ip后再向cobbler server发送请求OS引导文件的请求
- cobbler server告诉client 裸机OS引导文件的名字和TFTP server的ip和port
- client通过上面告知的tftp server地址通信,下载引导文件
- client执行该引导文件,确定加载的信息,选择要按住的os,期间会在想cobbler server请求kickstart文件和 os image
- cobbler server发送请求的kickstart 和 os image
- celient加载kickstart文件
- client接收os image,安装该os image
1.5 Cobbler功能
1) 使用Cobbler,可以做到无需进行人工干预即可安装机器;
2) Cobbler设置一个PXE引导环境(它还可使用yaboot支持PowerPC),并控制与安装相关的所有方面,比如网络引导服务(DHCP和TFTP)与存储库镜像。
3) 当希望安装一台新机器时,Cobbler可以:
- 使用一个以前定义的模板来配置DHCP服务(如果启用了管理 DHCP)将一个存储库(yum或rsync)建立镜像或解压缩一个媒介,以注册一个新操作系统
- 在DHCP配置文件中为需要安装的机器创建一个条目,并使用您指定的参数(IP和MAC地址);
- 在TFTFP服务目录下创建适当的PXE文件;
- 重新启动DHCP服务以反映更改;
- 重新启动机器以开始安装(如果电源管理已启用)。
二、Cobbler自动化部署
2.1 注意几个重要前提条件
- Server服务端要和Client客户机在一个VLAN网络内 (即走的是同一个交换机网络口,网段是同一个);
- Server服务端要准备iso系统镜像;
- Client客户机网卡要支持PXE协议 (目前服务器的网卡基本都默认支持PXE协议);
2.2 Cobbler集成的服务
- PXE服务支持
- DHCP服务管理
- DNS服务管理 (可选bind,dnsmasq)
- 电源管理
- Kickstart服务支持
- YUM仓库管理
- TFTP (PXE启动时需要)
- Apache (提供kickstart的安装源,并提供定制化的kickstart配置)
Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
2.3 Cobbler的各主要组件间的关系如下图所示
2.4 Cobbler自动化安装操作系统 - 部署过程记录 (服务端为Centos7)
1) Cobbler安装前准备
系统版本 [root@cobbler-node ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 内核版本 [root@cobbler-node ~]# uname -r 3.10.0-862.el7.x86_64 主机名 [root@cobbler-node ~]# hostnamectl --static set-hostname cobbler-node [root@cobbler-node ~]# hostname cobbler-node selinux必须要关闭 [root@cobbler-node ~]# setenforce 0 [root@cobbler-node ~]# getenforce [root@cobbler-node ~]# vim /etc/sysconfig/selinux SELINUX=disabled 关闭iptables防火墙 [root@cobbler-node ~]# iptables -F [root@cobbler-node ~]# systemctl stop firewalld [root@cobbler-node ~]# systemctl disable firewalld [root@cobbler-node ~]# firewall-cmd --state not running [root@cobbler-node ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (0 references) target prot opt source destination Chain DOCKER-ISOLATION (0 references) target prot opt source destination ==================================================================== 温馨提示: 如果开启iptables防火墙,则需要开启TCP: 80端口、TCP: 25151端口、UDP: 69端口 # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #http服务需要此端口 # iptables -A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT #tftp服务需要此端口 # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25151 -j ACCEPT #cobbler需要此端口 重启iptables服务 # systemctl restart firewalld ==================================================================== 查看本机ip地址 [root@cobbler-node ~]# ifconfig |grep 172.16.60.222 inet 172.16.60.222 netmask 255.255.255.0 broadcast 172.16.60.255 [root@cobbler-node ~]# hostname -I 172.16.60.222
2) Cobbler安装
在线安装,则需要使用到epel源,yum源替换成阿里源或是网易源也比较快点。 [root@cobbler-node ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@cobbler-node ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@cobbler-node ~]# ll /etc/yum.repos.d/epel.repo -rw-r--r-- 1 root root 664 Jan 20 23:33 /etc/yum.repos.d/epel.repo [root@cobbler-node ~]# yum install -y httpd dhcp tftp python-ctypes cobbler xinetd cobbler-web Cobbler的配置说明 =================================================================== cobbler #cobbler程序包 cobbler-web #cobbler的web服务包 pykickstart #cobbler检查kickstart语法错误 httpd #Apache web服务 dhcp #Dhcp服务 tftp #tftp服务 /etc/cobbler #配置文件目录 /etc/cobbler/settings #cobbler主配置文件 /etc/cobbler/dhcp.template #DHCP服务的配置模板 /etc/cobbler/tftpd.template #tftp服务的配置模板 /etc/cobbler/rsync.template #rsync服务的配置模板 /etc/cobbler/iso #iso模板配置文件目录 /etc/cobbler/pxe #pxe模板文件目录 /etc/cobbler/power #电源的配置文件目录 /etc/cobbler/users.conf #web服务授权配置文件 /etc/cobbler/users.digest #web访问的用户名密码配置文件 /etc/cobbler/dnsmasq.template #DNS服务的配置模板 /etc/cobbler/modules.conf #Cobbler模块配置文件 /var/lib/cobbler #Cobbler数据目录 /var/lib/cobbler/config #配置文件 /var/lib/cobbler/kickstarts #默认存放kickstart文件 /var/lib/cobbler/loaders #存放的各种引导程序 /var/www/cobbler #系统安装镜像目录 /var/www/cobbler/ks_mirror #导入的系统镜像列表 /var/www/cobbler/images #导入的系统镜像启动文件 /var/www/cobbler/repo_mirror #yum源存储目录 /var/log/cobbler #日志目录 /var/log/cobbler/install.log #客户端系统安装日志 /var/log/cobbler/cobbler.log #cobbler日志
3) 检测Cobbler
先启动xinetd、apache和cobbler服务,且设为开机启动: [root@cobbler-node ~]# systemctl enable xinetd [root@cobbler-node ~]# systemctl start xinetd [root@cobbler-node ~]# systemctl enable httpd.service [root@cobbler-node ~]# systemctl start httpd.service [root@cobbler-node ~]# systemctl enable cobblerd.service [root@cobbler-node ~]# systemctl start cobblerd.service 查看xinetd、apache和cobbler服务是否正确启动 (如下查看status都为runing状态即可) [root@cobbler-node ~]# systemctl status xinetd httpd.service cobblerd.service ......... ● xinetd.service - Xinetd A Powerful Replacement For Inetd Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2019-01-20 23:47:11 CST; 2min 29s ago ......... ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2019-01-20 23:47:50 CST; 1min 50s ago ......... ● cobblerd.service - Cobbler Helper Daemon Loaded: loaded (/usr/lib/systemd/system/cobblerd.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2019-01-20 23:48:17 CST; 1min 23s ago ......... [root@cobbler-node ~]# ps -ef|grep xinetd root 794 27381 0 23:50 pts/1 00:00:00 grep --color=auto xinetd root 32674 1 0 23:47 ? 00:00:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid [root@cobbler-node ~]# ps -ef|grep httpd root 321 1 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 324 321 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 326 321 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 327 321 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 328 321 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 329 321 0 23:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 812 27381 0 23:50 pts/1 00:00:00 grep --color=auto httpd [root@cobbler-node ~]# ps -ef|grep cobbler apache 322 321 0 23:47 ? 00:00:00 (wsgi:cobbler_w -DFOREGROUND root 450 1 0 23:48 ? 00:00:00 /usr/bin/python2 -s /usr/bin/cobblerd -F root 823 27381 0 23:50 pts/1 00:00:00 grep --color=auto cobbler 确定都启动了,不存在假启动的话,下面可以进行cobbler检测: [root@cobbler-node ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. 2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. 3 : change 'disable' to 'no' in /etc/xinetd.d/tftp 4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements. 5 : enable and start rsyncd.service with systemctl 6 : debmirror package is not installed, it will be required to manage debian deployments and repositories 7 : ksvalidator was not found, install pykickstart 8 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one 9 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them Restart cobblerd and then run 'cobbler sync' to apply changes. 针对以上检测出来的问题,解决如下: 1) The 'server' field in/etc/cobbler/settings must be set to something other than localhost, orkickstarting features will not work. This should be a resolvable hostname or IP for the boot server asreachable by all machines that will use it. 解决方法:修改/etc/cobbler/settings,将server对应的IP改为cobbler安装主机的IP,即将server: 127.0.0.1改成server: 172.16.60.222, 切记切记,server: 后面有空格!! [root@cobbler-node ~]# cp /etc/cobbler/settings /etc/cobbler/settings.bak [root@cobbler-node ~]# vim /etc/cobbler/settings ......... server: 172.16.60.222 2) For PXE to be functional,the 'next_server' field in /etc/cobbler/settings must be set to something otherthan 127.0.0.1, and should match the IP of the boot server on the PXE network. 解决方法:修改/etc/cobbler/settings,将next_server对应的IP改为cobbler安装主机的IP,即将server: 127.0.0.1改成server: 172.16.60.222 [root@cobbler-node ~]# vim /etc/cobbler/settings ......... next_server: 172.16.60.222 3) change 'disable' to 'no'in /etc/xinetd.d/tftp 解决方法:将/etc/xinetd.d/tftp中disable对应值改成no。 [root@cobbler-node ~]# vim /etc/xinetd.d/tftp .......... disable = no 4) some network boot-loadersare missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' todownload them, or, if you only want to handle x86/x86_64 netbooting, you mayensure that you have installed a *recent* version of the syslinux packageinstalled and can ignore this message entirely. Files in this directory, should you want to support all architectures,should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobblerget-loaders' command is the easiest way to resolve these requirements. 解决方法: [root@cobbler-node ~]# cobbler get-loaders 5) enable and startrsyncd.service with systemctl 解决方法: [root@cobbler-node ~]# systemctl enable rsyncd [root@cobbler-node ~]# systemctl start rsyncd 6) debmirror package is notinstalled, it will be required to manage debian deployments and repositories 解决方法:debian的包,可以不下载,不影响使用cobbler。 7) ksvalidator was not found, install pykickstart 解决方法: [root@cobbler-node ~]# yum install pykickstart -y 8) The default password usedby the sample templates for newly installed machines (default_password_cryptedin /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try:"openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'"to generate new one 解决方法:给密码加密,把生成的密码串添加到/etc/cobbler/settings里. 生成加密的密码, 这里设置了密码为"cobbler",此处就是按装系统完的密码 [root@cobbler-node ~]# openssl passwd -1 -salt 'cobbler' 'cobbler' $1$cobbler$M6SE55xZodWc9.vAKLJs6. 将该加密的密码全复制拷贝到settings文件default_password_crypted处: [root@cobbler-node ~]# vim /etc/cobbler/settings ....... default_password_crypted: "$1$cobbler$M6SE55xZodWc9.vAKLJs6." 9) fencing tools were notfound, and are required to use the (optional) power management features.install cman or fence-agents to use them 解决办法:电源管理工具,下载fence-agents (这个就算暂时不安装,也不影响cobbler的使用) [root@cobbler-node ~]# yum -y install fence-agents 以上检测出来的问题,除了第6和第9个问题不做处理,其他的问题都要如上进行解决。 接着继续修改Cobbler其他配置 [root@cobbler-node ~]# sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings #管理dhcp [root@cobbler-node ~]# sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings #防止系统重装.即只针对新机器(空系统)情况下进行自动化安装 下面修改cobbler配置的dhcp模板 [root@cobbler-node ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.60.1 0.0.0.0 UG 100 0 0 ens192 172.16.60.0 0.0.0.0 255.255.255.0 U 100 0 0 ens192 ........... ........... [root@cobbler-node ~]# cp /etc/cobbler/dhcp.template /etc/cobbler/dhcp.template.bak [root@cobbler-node ~]# vim /etc/cobbler/dhcp.template ........... subnet 172.16.60.0 netmask 255.255.255.0 { option routers 172.16.60.1; option domain-name-servers 172.16.60.1; option subnet-mask 255.255.255.0; range dynamic-bootp 172.16.60.160 172.16.60.190; default-lease-time 21600; max-lease-time 43200; next-server $next_server; 上面配置修改完成后,依次重启下面服务,然后再检测一次 [root@cobbler-node ~]# systemctl restart tftp.socket [root@cobbler-node ~]# systemctl restart xinetd.service [root@cobbler-node ~]# systemctl restart httpd.service [root@cobbler-node ~]# systemctl restart cobblerd.service [root@cobbler-node ~]# systemctl restart rsyncd 运行cobbler再次监测: [root@cobbler-node ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : debmirror package is not installed, it will be required to manage debian deployments and repositories Restart cobblerd and then run 'cobbler sync' to apply changes.
4) cobbler同步. 修改完成后,一定要镜像 "cobbler sync" 同步,否则不会生效!
[root@cobbler-node ~]# cobbler sync task started: 2019-01-21_003507_sync task started (id=Sync, time=Mon Jan 21 00:35:07 2019) running pre-sync triggers cleaning trees removing: /var/lib/tftpboot/grub/images copying bootloaders trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0 trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32 trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi copying distros to tftpboot copying images generating PXE configuration files generating PXE menu structure rendering DHCP files generating /etc/dhcp/dhcpd.conf rendering TFTPD files generating /etc/xinetd.d/tftp cleaning link caches running post-sync triggers running python triggers from /var/lib/cobbler/triggers/sync/post/* running python trigger cobbler.modules.sync_post_restart_services running: dhcpd -t -q received on stdout: received on stderr: running: service dhcpd restart received on stdout: received on stderr: Redirecting to /bin/systemctl restart dhcpd.service running shell triggers from /var/lib/cobbler/triggers/sync/post/* running python triggers from /var/lib/cobbler/triggers/change/* running python trigger cobbler.modules.manage_genders running python trigger cobbler.modules.scm_track running shell triggers from /var/lib/cobbler/triggers/change/* *** TASK COMPLETE *** 同步之后,无任何问题,最后显示"***TASK COMPLETE****"。
5) Cobbler的系统镜像文件的挂载和系统的导入
先将要安装的操作系统的镜像文件拷贝到Cobbler服务器上的/mnt目录下 (镜像的存放路径可以自己随意起) 这里我上传了centos6.9和centos7.5的系统镜像文件 [root@cobbler-node ~]# cd /mnt/ [root@cobbler-node mnt]# du -sh * 3.7G CentOS-6.9-x86_64-bin-DVD1.iso 4.2G CentOS-7.5-x86_64-DVD-1804.iso 然后将该镜像文件进行挂载,这里挂载目录为/iso [root@cobbler-node ~]# mkdir /iso [root@cobbler-node ~]# mount -t iso9660 -o loop /mnt/CentOS-7.5-x86_64-DVD-1804.iso /iso/ mount: /dev/loop0 is write-protected, mounting read-only 查看挂载 [root@cobbler-node ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 12G 39G 24% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 385M 3.5G 10% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot /dev/mapper/centos-home 42G 33M 42G 1% /home tmpfs 783M 0 783M 0% /run/user/0 /dev/loop0 4.2G 4.2G 0 100% /iso 如上说明已经挂载成功了系统镜像 接着进行系统数据导入 (这个导入操作需要执行一段时间,耐心等待~) [root@cobbler-node ~]# cobbler import --path=/iso/ --name=centos7.5 --arch=x86_64 task started: 2019-01-21_091946_import task started (id=Media import, time=Mon Jan 21 09:19:46 2019) Found a candidate signature: breed=redhat, version=rhel6 Found a candidate signature: breed=redhat, version=rhel7 Found a matching signature: breed=redhat, version=rhel7 Adding distros from path /var/www/cobbler/ks_mirror/centos7.5-x86_64: creating new distro: centos7.5-x86_64 trying symlink: /var/www/cobbler/ks_mirror/centos7.5-x86_64 -> /var/www/cobbler/links/centos7.5-x86_64 creating new profile: centos7.5-x86_64 associating repos checking for rsync repo(s) checking for rhn repo(s) checking for yum repo(s) starting descent into /var/www/cobbler/ks_mirror/centos7.5-x86_64 for centos7.5-x86_64 processing repo at : /var/www/cobbler/ks_mirror/centos7.5-x86_64 need to process repo/comps: /var/www/cobbler/ks_mirror/centos7.5-x86_64 looking for /var/www/cobbler/ks_mirror/centos7.5-x86_64/repodata/*comps*.xml Keeping repodata as-is :/var/www/cobbler/ks_mirror/centos7.5-x86_64/repodata *** TASK COMPLETE *** 如上无报错,则说明系统数据导入成功。 可以查看"/var/www/cobbler/ks_mirror/centos7.5-x86_64/"下导入的数据是否存在 [root@cobbler-node ~]# ls /var/www/cobbler/ks_mirror/centos7.5-x86_64/ CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL 列出导入后的信息配置 (或者"cobbler distro list"命令) [root@cobbler-node ~]# cobbler list distros: centos7.5-x86_64 profiles: centos7.5-x86_64 systems: repos: images: mgmtclasses: packages: files: 可以查看更详细的配置信息 [root@cobbler-node ~]# cobbler profile report Name : centos7.5-x86_64 TFTP Boot Files : {} Comment : DHCP Tag : default Distribution : centos7.5-x86_64 Enable gPXE? : 0 Enable PXE Menu? : 1 Fetchable Files : {} Kernel Options : {} Kernel Options (Post Install) : {} Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks Kickstart Metadata : {} Management Classes : [] Management Parameters : <<inherit>> Name Servers : [] Name Servers Search Path : [] Owners : ['admin'] Parent Profile : Internal proxy : Red Hat Management Key : <<inherit>> Red Hat Management Server : <<inherit>> Repos : [] Server Override : <<inherit>> Template Files : {} Virt Auto Boot : 1 Virt Bridge : xenbr0 Virt CPUs : 1 Virt Disk Driver Type : raw Virt File Size(GB) : 5 Virt Path : Virt RAM (MB) : 512 Virt Type : kvm 从该信息看出,kickstart的启动是使用了sample_end.ks,进入目录下查看 [root@cobbler-node ~]# ll /var/lib/cobbler/kickstarts/ total 56 -rw-r--r-- 1 root root 115 Nov 17 23:10 default.ks -rw-r--r-- 1 root root 22 Nov 17 23:10 esxi4-ks.cfg -rw-r--r-- 1 root root 22 Nov 17 23:10 esxi5-ks.cfg drwxr-xr-x 2 root root 56 Jan 20 23:36 install_profiles -rw-r--r-- 1 root root 1424 Nov 17 23:10 legacy.ks -rw-r--r-- 1 root root 292 Nov 17 23:10 pxerescue.ks -rw-r--r-- 1 root root 2825 Nov 17 23:10 sample_autoyast.xml -rw-r--r-- 1 root root 1856 Nov 17 23:10 sample_end.ks -rw-r--r-- 1 root root 0 Nov 17 23:10 sample_esx4.ks -rw-r--r-- 1 root root 324 Nov 17 23:10 sample_esxi4.ks -rw-r--r-- 1 root root 386 Nov 17 23:10 sample_esxi5.ks -rw-r--r-- 1 root root 386 Nov 17 23:10 sample_esxi6.ks -rw-r--r-- 1 root root 1913 Nov 17 23:10 sample.ks -rw-r--r-- 1 root root 3419 Nov 17 23:10 sample_old.seed -rw-r--r-- 1 root root 6658 Nov 17 23:10 sample.seed 需要注意:如若想要定制化安装系统,则可以上传自己写的ks文件!!!!! 其实默认的"sample_end.ks" 已经满足系统安装的需求。本案例采用默认的ks文件。 下面将新安装完的系统的网卡名改为eth0 [root@cobbler-node ~]# cobbler profile edit --name=centos7.5-x86_64 --kopts='net.ifname=0 biosdevname=0' 下面是验证cobbler [root@cobbler-node ~]# cobbler validateks task started: 2019-01-21_093315_validateks task started (id=Kickstart Validation, time=Mon Jan 21 09:33:15 2019) ---------------------------- osversion: rhel7 checking url: http://172.16.60.222/cblr/svc/op/ks/profile/centos7.5-x86_64 running: /usr/bin/ksvalidator -v "rhel7" "http://172.16.60.222/cblr/svc/op/ks/profile/centos7.5-x86_64" received on stdout: received on stderr: *** all kickstarts seem to be ok *** *** TASK COMPLETE *** 至此,Cobbler自动化系统安装配置、导入系统数据以及验证完成。
6) 在VMware上模拟测试Cobbler自动化安装系统
在VMware上创建一台新的虚拟机,步骤如下:
设置vmware的如何安装系统时候,这里不选择镜像,选择"我以后再安装操作系统(S)。创建一个虚拟空白硬板",然后选择下一步!
创建完成之后开启此虚机。
选择CentOS7.2这一项即可进行安装,安装过程与光盘安装一致,这里就不在复述。
7) PXE 默认启动项修改
默认的情况下PXE的启动项是Local(如下图)
由于根据无人值守安装的需求,无需人工干预,需要自动安装,这时候就要需要将local从启动项删除即可。修改方法如下:
首先找到PXE加载的菜单选项在哪,路径"/var/lib/tftpboot/pxelinux.cfg"下找到"default"文件,内容如下:
[root@cobbler-node ~]# cd /var/lib/tftpboot/pxelinux.cfg/ [root@cobbler-node pxelinux.cfg]# cp default default.bak [root@cobbler-node pxelinux.cfg]# cat default DEFAULT menu PROMPT 0 MENU TITLE Cobbler | http://cobbler.github.io/ TIMEOUT 200 TOTALTIMEOUT 6000 ONTIMEOUT local LABEL local MENU LABEL (local) MENU DEFAULT LOCALBOOT -1 LABEL centos7.2-Minimal-x86_64 kernel /images/centos7.5-x86_64/vmlinuz MENU LABEL centos7.5-x86_64 append initrd=/images/centos7.5-x86_64/initrd.img ksdevice=bootif lang= text biosdevname=0 net.ifname=0 kssendmac ks=http://172.16.60.222/cblr/svc/op/ks/profile/centos7.5-x86_64 ipappend 2 MENU end 如上,可以看出MENU菜单有俩个选项。这里删除“LABEL local”的内容,并修改“ONTIMEOUT”值为我们想要的启动项即可,如下: [root@cobbler-node pxelinux.cfg]# vim default DEFAULT menu PROMPT 0 MENU XXXXXXXX | Cloud Of XXXXXX TIMEOUT 200 TOTALTIMEOUT 6000 ONTIMEOUT centos7.2-Minimal-x86_64 LABEL centos7.2-Minimal-x86_64 kernel /images/centos7.5-x86_64/vmlinuz MENU LABEL centos7.5-x86_64 append initrd=/images/centos7.5-x86_64/initrd.img ksdevice=bootif lang= text biosdevname=0 net.ifname=0 kssendmac ks=http://172.16.60.222/cblr/svc/op/ks/profile/centos7.5-x86_64 ipappend 2 MENU end
如上图,只留下了"LABELcentos7.2-Minimal-x86_64"这一个启动项,"ONTIMEOUT "改为了"centos7.2-Minimal-x86_64","MENUTITLE"可以修改成自定义内容。修改后保存即可,不要重启cobblerd服务,也不要执行"cobbler sync"同步。修改后的PXE启动页面如下:
默认的20秒超时一过就可以进入该选项进行自动安装。这样就可以做到了无人工干预的自动无人值守安装需求。
8) Cobbler-web管理
访问https://172.16.60.222/cobbler_web, 注意是https不是http,用户名和密码就是之前在settings设置的"cobbler"和"cobbler"
Cobbler 登录web界面提示报错"Internal Server Error", 如下: 500 The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error. More information about this error may be available in the server error log. 解决办法: 查看httpd日志/etc/httpd/logs/ssl_error_log [root@cobbler-node ~]# tail -f /etc/httpd/logs/ssl_error_log [Mon Jan 21 12:13:36.341044 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] self._setup(name) [Mon Jan 21 12:13:36.341051 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup [Mon Jan 21 12:13:36.341061 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] self._wrapped = Settings(settings_module) [Mon Jan 21 12:13:36.341067 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] File "/usr/lib/python2.7/site-packages/django/conf/__init__.py", line 110, in __init__ [Mon Jan 21 12:13:36.341077 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] mod = importlib.import_module(self.SETTINGS_MODULE) [Mon Jan 21 12:13:36.341083 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module [Mon Jan 21 12:13:36.341127 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] __import__(name) [Mon Jan 21 12:13:36.341139 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] File "/usr/share/cobbler/web/settings.py", line 89, in <module> [Mon Jan 21 12:13:36.341152 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS [Mon Jan 21 12:13:36.341176 2019] [:error] [pid 7210] [remote 172.16.42.183:27072] ImportError: cannot import name TEMPLATE_CONTEXT_PROCESSORS 查看cobbler的py配置文件 [root@cobbler-node ~]# sed -n '38,41p' /usr/share/cobbler/web/settings.py if django.VERSION[0] == 1 and django.VERSION[1] < 4: ADMIN_MEDIA_PREFIX = '/media/' else: STATIC_URL = '/media/' 初步判断应该是pythone-django版本问题. 解决办法如下: 下载pip.py [root@cobbler-node ~]# wget https://bootstrap.pypa.io/get-pip.py 调用本地python运行pip.py脚本 [root@cobbler-node ~]# python get-pip.py 安装pip [root@cobbler-node ~]# pip install Django==1.8.9 查看pip版本号 [root@cobbler-node ~]# python -c "import django; print(django.get_version())" 重启httpd [root@cobbler-node ~]# systemctl restart httpd 如上操作后,再次访问https://172.16.60.222/cobbler_web就正常了!!
Cobbler-web页面说明
可以在Cobbler-web可视化界面里进行配置修改的操作,便于维护和管理。
9) 定制化安装操作系统
添加内核参数
查看导入的镜像,点击edit
在内核参数中添加net.ifnames=0 biosdevname=0
能够让显示的网卡变为eth0 ,而不是CentOS7中的ens33, 修改完成后点击保存
查看镜像属性
10) 编写ks文件
创建新的ks文件
添加ks文件,并配置文件名, 创建完成后点击Save进行保存
CentOS7系统安装的ks配置文件内容参考 (安装的虚拟机的用户名是root,密码是$default_password_crypted的设置值,即密码为前面设置的cobbler):
# Cobbler for Kickstart Configurator for CentOS 7 by clsn install url --url=$tree text lang en_US.UTF-8 keyboard us zerombr bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #Network information $SNIPPET('network_config') #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7 timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $default_password_crypted clearpart --all --initlabel part /boot --fstype xfs --size 1024 part swap --size 1024 part / --fstype xfs --size 1 --grow firstboot --disable selinux --disabled firewall --disabled logging --level=info reboot %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %end %packages @^minimal @compat-libraries @core @debugging @development bash-completion chrony dos2unix kexec-tools lrzsz nmap sysstat telnet tree vim wget %end %post systemctl disable postfix.service %end
11) 自定义安装系统
选择systems 创建一个新的系统
定义系统信息
配置全局网络信息: 主机名、网关、DNS
配置网卡信息,eth0,eth1. 需要注意,选择static静态,
以上的所有配置完成后,点击Save进行保存即可!!
VMware workstation中查看虚拟机mac地址的方法。在虚拟机设置中。
cobbler安装配置过程的的常见问题汇总
1) cobbler check报错
[root@cobbler-node ~]# cobbler sync Traceback (most recent call last): File "/usr/bin/cobbler", line 36, in <module> sys.exit(app.main()) File "/usr/lib/python2.7/site-packages/cobbler/cli.py", line 662, in main rc = cli.run(sys.argv) File "/usr/lib/python2.7/site-packages/cobbler/cli.py", line 269, in run self.token = self.remote.login("", self.shared_secret) File "/usr/lib64/python2.7/xmlrpclib.py", line 1233, in __call__ return self.__send(self.__name, args) File "/usr/lib64/python2.7/xmlrpclib.py", line 1587, in __request verbose=self.__verbose File "/usr/lib64/python2.7/xmlrpclib.py", line 1273, in request return self.single_request(host, handler, request_body, verbose) File "/usr/lib64/python2.7/xmlrpclib.py", line 1306, in single_request return self.parse_response(response) File "/usr/lib64/python2.7/xmlrpclib.py", line 1482, in parse_response return u.close() File "/usr/lib64/python2.7/xmlrpclib.py", line 794, in close raise Fault(**self._stack[0]) xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'"> 解决办法 [root@cobbler-node ~]# systemctl restart httpd.service [root@cobbler-node ~]# [root@cobbler-node ~]# systemctl restart cobblerd.service [root@cobbler-node ~]# cobbler check
2) No space left on device
出现这个错误的原因是虚拟机的内存不足2G,将内存调为2G即可(这个错误只会出现在CentOS7.3之上)
3) 访问cobbler_web页面,不成功。“Forbidden You don't have permission to access /cobbler_web/on this server.”
原因是"SSL connection required",是访问的不对,应该使用https头!
4) 新建虚机开启时候,出现TFTP open timeout!
这时候是cobbler的服务器的防火墙没关闭。关闭防火墙即可!
# systemctl stop firewalld.service
5) 运行"cobbler sync"时候报错如下:
此时查看message,找出具体的原因:
# tailf -100 /var/log/messages
这是IP分配的范围错误,该范围不在所属的同一网段,这就是dhcp模板配置错误,重新修改:
# vim /etc/cobbler/dhcp.template
改成如上图所示同一网段即可。
6) 新机器启动之后会报错如下图所示
由于本次安装的是IBM X服务器,参考IBM官方论坛给出的意见:
A. Press F12 key when the IBM splash screen is shown duringsystem boot.
B. Select Legacy Only option and press Enter.
C. The operating system will boot and install in traditionallegacy boot mode.
意思就是:
从新启动机器,出现选择提示时,按F12键,进入boot启动选择。将Legacy Only 选项选中,再选择启动选项ok。然后重新启动服务器就可以实现Linux系统自动安装了。
7) 新机器启动后找不到操作系统,“Operating System not found”,如下图所示:
系统找寻不到,这时候到cobbler服务器上查看挂载的系统还在么, 基本就是之前挂载的镜像不在了导致的
[root@cobbler-node ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 17G 34G 33% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 385M 3.5G 10% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot /dev/mapper/centos-home 42G 33M 42G 1% /home tmpfs 783M 0 783M 0% /run/user/0
之前挂载的系统不见了。只要重现挂载镜像系统就可以了:
[root@cobbler-node ~]# mount -t iso9660 -o loop /mnt/CentOS-7.5-x86_64-DVD-1804.iso /iso/ [root@cobbler-node ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 17G 34G 33% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 385M 3.5G 10% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 1014M 142M 873M 14% /boot /dev/mapper/centos-home 42G 33M 42G 1% /home tmpfs 783M 0 783M 0% /run/user/0 /dev/loop0 4.2G 4.2G 0 100% /iso
上面提到了cobbler_CentOS7.x_ks配置文件的内容参考,下面贴出一个cobbler_CentOS6.x_ks配置文件内容参考:
# Cobbler for Kickstart Configurator for CentOS 6 by clsn install url --url=$tree text lang en_US.UTF-8 keyboard us zerombr bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" $SNIPPET('network_config') timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $default_password_crypted clearpart --all --initlabel part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --grow --asprimary --size=200 firstboot --disable selinux --disabled firewall --disabled logging --level=info reboot %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %end %packages @base @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet %end %post --nochroot $SNIPPET('log_ks_post_nochroot') %end %post $SNIPPET('log_ks_post') # Start yum configuration $yum_config_stanza # End yum configuration $SNIPPET('post_install_kernel_options') $SNIPPET('post_install_network_config') $SNIPPET('func_register_if_enabled') $SNIPPET('download_config_files') $SNIPPET('koan_environment') $SNIPPET('redhat_register') $SNIPPET('cobbler_register') # Enable post-install boot notification $SNIPPET('post_anamon') # Start final steps $SNIPPET('kickstart_done') # End final steps %end
上面介绍的是基于centos7.5镜像的操作,现在介绍下另追加centos6.9镜像进行的操作
[root@cobbler-node mnt]# du -sh * 3.7G CentOS-6.9-x86_64-bin-DVD1.iso 4.2G CentOS-7.5-x86_64-DVD-1804.iso [root@cobbler-node mnt]# mkdir /iso2 [root@cobbler-node mnt]# mount -t iso9660 -o loop /mnt/CentOS-6.9-x86_64-bin-DVD1.iso /iso2 导入centos6.9的镜像数据 [root@cobbler-node mnt]# cobbler import --path=/iso2/ --name=centos6.9 --arch=x86_64 镜像数据导入后存放在/var/www/cobbler/ks_mirror目录下 [root@cobbler-node mnt]# ll /var/www/cobbler/ks_mirror total 4 dr-xr-xr-x 7 root root 4096 Mar 29 2017 centos6.9-x86_64 drwxr-xr-x 8 root root 254 May 4 2018 centos7.5-x86_64 drwxr-xr-x 2 root root 64 Jan 22 17:47 config drwxr-xr-x 2 root root 6 Jan 21 22:32 dtk5.3 查看导入镜像 [root@cobbler-node mnt]# cobbler distro list centos6.9-x86_64 centos7.5-x86_64 查看更详细信息 [root@cobbler-node mnt]# cobbler profile report 配置centos6.9系统安装时的ks文件 (上面已经有了一个centls7.5系统安装的ks文件) 将上面贴出来的cobbler_CentOS6.x_ks配置文件的参考内容复制到下面这个文件 [root@cobbler-node ~]# vim /var/lib/cobbler/kickstarts/centos6_install.ks [root@cobbler-node ~]# ll /var/lib/cobbler/kickstarts/centos* -rw-r--r-- 1 root root 1381 Jan 22 17:53 /var/lib/cobbler/kickstarts/centos6_install.ks -rw-r--r-- 1 root root 1027 Jan 22 10:17 /var/lib/cobbler/kickstarts/centos7_install.ks 指定centos6.9系统安装时的kickstarts配置文件 [root@cobbler-node ~]# cobbler profile edit --name=centos6.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6_install.ks --kopts='net.ifname=0 biosdevname=0' 现在进行虚拟机安装时,启动界面会有三个选项,即local、centos6.9-x86_64、centos7.5-x86_64 如果要实现无人值守安装,就需要提前对/var/lib/tftpboot/pxelinux.cfg/default文件进行修改 将local和centos7.5-x86_64的配置删除,只保留centos6.9-x86_64部分的配置,修改如下: [root@cobbler-node pxelinux.cfg]# vim default DEFAULT menu PROMPT 0 MENU TITLE kevin | come on! TIMEOUT 200 TOTALTIMEOUT 6000 ONTIMEOUT centos6.9-x86_64 LABEL centos6.9-x86_64 kernel /images/centos6.9-x86_64/vmlinuz MENU LABEL centos6.9-x86_64 append initrd=/images/centos6.9-x86_64/initrd.img ksdevice=bootif lang= text biosdevname=0 net.ifname=0 kssendmac ks=http://172.16.60.222/cblr/svc/op/ks/profile/centos6.9-x86_64 ipappend 2 MENU end 这样,在虚拟机安装时,启动界面就只保留了centos6.9-x86_64这一个选项,默认的20秒超时一过就可以进入该选项进行自动安装。 这样就可以做到了无人工干预的自动无人值守安装需求。 以上就挂载并导入了centos6.9和centos7.5两个系统镜像,在安装不同版本的系统时,就提前对/var/lib/tftpboot/pxelinux.cfg/default文件进行修改即可!
其他cobbler相关维护知识
=================================================================== Cobbler管理 cobbler使用profile来为特定的需求类别提供锁需要安装的配置,即在distro的基础上通过提供kiskstart文件来生成一个特定的系统安装配置。 distro的profile可以出现在pxe的引导菜单中作为安装的选择之一: 指定kickstarts配置文件 # cobbler profile edit --name=centos7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/sample_end.ks 修改centos7内核,将新安装完的系统的网卡名改为eth0 # cobbler profile edit --name=centos7.5-x86_64 --kopts='net.ifname=0 biosdevname=0' 新部署机器安装yum源,并同步。建议使用内网yum源,在这里使用阿里云yum源 # cobbler repo add --name=base --mirror=http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ --arch=x86_64 --breed=yum 同步yum源 # cobbler reposync 每次修改profile都需要同步 # cobbler sync =================================================================== 自定义安装 system主要目的配置网络接口,通过system来固定机器的IP、掩码、网关、DNS、主机名、等等实现基础环境标准化。 根据机器的MAC地址,自动绑定IP,网关,dns等。 # cobbler system add --name=kevin-test --mac=00:0C:29:6E:41:CB --profile=centos7.5-x86_64 --ip-address=10.0.0.110 --subnet=255.255.255.0 --gateway=10.0.0.2 --interface=eth0 --static=1 --hostname=kevin-test --name-servers="114.114.114.114 8.8.8.8" # cobbler sync # cobbler system list =================================================================== 自定义登录界面 自定义装机页面 (修改下面文件中的如下内容) # grep "wangshibo" /etc/cobbler/pxe/pxedefault.template MENU TITLE wangshibo | http://wangshibo 同步 # cobbler sync =================================================================== 使用Cobbler_web管理Cobbler 新版cobbler的web界面使用的是https,登录https://172.16.60.222/cobbler_web 配置cobbler_web的认证功能 cobbler_web支持多种认证方式,如authn_configfil、authn_ldap或authn_pam等,默认为authn_denyall,即拒绝所有用户登陆。 下面说明三种能认证用户登录cobbler_web的方式 1) 使用authn_pam模块认证cobbler_web用户 首先修改modules中[authentication]段的module参数的值为authn_pam。 接着添加系统用户,用户名和密码按需设定即可. 例如下面的命令所示,设置用户名为cblradmin, 密码为cblrpass # useradd cblradmin # echo 'cblrpass' | passwd --stdin cblradmin 而后将cblradmin用户添加至cobbler_web的admin组中。 修改/etc/cobbler/users.conf文件,将cblradmin用户名添加为admin参数的值即可,如下所示。 [admins] admin = "cblradmin" 最后重启cobblerd服务,通过http://YOUR_COBBLERD_IP/cobbler_web访问即可。 # systemctl restart cobblerd.service 2) 使用authn_configfile模块认证cobbler_web用户 首先修改modules.conf中[authentication]段的module参数的值为authn_configfile。 接着创建其认证文件/etc/cobbler/users.digest,并添加所需的用户即可。 需要注意的是,添加第一个用户时,需要为htdigest命令使用“-c”选项,后续添加其他用户时不能再使用; 另外,cobbler_web的realm只能为Cobbler。 如下所示, 用户名为cobbler,密码为cobbler@123 # htdigest -c /etc/cobbler/users.digest "Cobbler" cobbler New password: #输入密码cobbler@123 Re-type new password: #再次输入密码cobbler@123 最后重启cobblerd服务,通过http://YOUR_COBBLERD_IP/cobbler_web访问即可。 # systemctl restart cobblerd.service 3) 使用cobbler默认的web账号密码认证 user:cobbler pass:cobbler =================================================================== 查看cobbler版本 [root@cobbler-node ~]# cobbler --version Cobbler 2.8.4 设置Web登录,cobbler 2.6以上版本已经无需修改 # sed -i 's/module = authn_denyall/module = authn_configfile/g' /etc/cobbler/modules.conf 设置Cobbler Web登录用户登录密码. 千万注意: cobbler_web的realm只能为Cobbler !!! 比如cobbler web登录的用户名为kevin, 密码为123456 [root@cobbler-node ~]# htdigest -c /etc/cobbler/users.digest "Cobbler" kevin Adding password for kevin in realm Cobbler. New password: #输入密码123456 Re-type new password: #再次输入密码123456 [root@cobbler-node ~]# systemctl restart cobblerd.service =================================================================== Cobbler相关选项说明 cobbler check #检查cobbler配置 cobbler sync #同步配置到dhcp/pxe和数据目录 cobbler list #列出所有的cobbler元素 cobbler import #导入安装的系统镜像 cobbler report #列出各元素的详细信息 cobbler distro #查看导入的发行版系统信息 cobbler profile #查看配置信息 cobbler system #查看添加的系统信息 cobbler reposync #同步yum仓库到本地 导入镜像文件 命令:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位 参数: path 是镜像所挂载的目录 name 是导入到cobbler里面显示的名字 arch 是32位系统还是64位系统 导入kickstart文件 命令:cobbler profile add --name=list名 --distro=镜像 --kickstart=路径 参数: name是表示添加的ks 的名字,用cobbler report可以看到这个名字 distro 是用哪个镜像,list的distros里面选择一个,需要版本相对应 kickstart 是具体的 ks 文件路径 同步DHCP、HTTPD 命令:cobbler sync 注,每次修改完dhcp.template之类的配置文件需要执行一次使其生效。 查看Cobbler列表 命令:cobbler list 注,列出Cobbler所有的元素。 删除相关列表 命令:cobbler distro/profile remove --name=要删除的引导文件名 删除指定 distro , 也就是镜像 删除指定的 profile 文件,也就是 ks Cobbler安装后目录说明 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模块配置文件 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日志 =================================================================== 多查看错误日志 # less /var/log/cobbler/cobbler.log 为cobbler-web的用户cobbler重置密码 (重启cobbler服务才会生效) # htdigest -c /etc/cobbler/users.digest "Cobbler" cobbler # systemctl restart cobblerd.service 添加新用户usernam # htdigest -c /etc/cobbler/users.digest "Cobbler" usernam # systemctl restart cobblerd.service DHCP多网卡环境可以指定网卡 # vim /etc/sysconfig/dhcpd # Command line options here DHCPDARGS=eth0
Cobbler + DTK 自动批量建立 RAID的操作记录
DTK (dell openmanage deployment toolkit) 套件,它包含了raidcfg 这个工具,使用他就可以自动化的完成 RAID 卡的设置,以及 syscfg 这个用来修改 BIOS 的工具。传统运维阶段,几十台甚至是上百台机器上的 raid 全部是人肉操作,一台机器从启动到配置完成关机最少 10min,非常的耗时低效。但是使用了DTK 之后,效率大大的提升。raidcfg 可以对机器上的磁盘的 raid 做增删,非常方便,适合大规模的机器部署,减少人肉操作出错的概率。
dtk_5.3.0_1908_Linux64_A00.iso 下载地址: https://pan.baidu.com/s/1vtBGnQiZ5G2BMaOzZuY_9w 提取密码: x59s 1) 挂载光盘文件 [root@cobbler-node ~]# mkdir /media [root@cobbler-node ~]# mount -o loop dtk_5.3.0_1908_Linux64_A00.iso /media 2) 添加dtk5.3到cobbler中 [root@cobbler-node ~]# mkdir /var/www/cobbler/ks_mirror/dtk5.3 [root@cobbler-node ~]# cp -r /media/* /var/www/cobbler/ks_mirror/dtk5.3 [root@cobbler-node ~]# cobbler distro add --name=dtk5.3 --kernel=/var/www/cobbler/ks_mirror/dtk5.3/isolinux/SA.1 --initrd=/var/www/cobbler/ks_mirror/dtk5.3/isolinux/SA.2 [root@cobbler-node ~]# cobbler profile add --name=dtk5.3 --distro=dtk5.3 到上面为止都比较顺利,接下来添加 system 需要做一些改进,跟之前一样,--name, --profile, --mac-address 等这些肯定是要添加的, --hostname, --dns-name 可以选择性的添加。最重要的是要在 –kopts 后面添加上 tftp 的相关脚本,否则需要做 raid 的机器获取不到配置文件: 3) 添加system的kopts参数 [root@cobbler-node ~]# cobbler system edit --name=Dell-R720 --kopts="share_type=tftp share_location=/raidcfg share_script=raid1.sh tftp_ip=172.16.60.222" 4) 在 /vat/lib/tftpboot/raidcfg 里面加上 raid1.sh 的脚本 [root@cobbler-node ~]# mkdir -p /vat/lib/tftpboot/raidcfg [root@cobbler-node ~]# cat /var/lib/tftpboot/raidcfg/raid1.sh cat > /tmp/raid10_6 <<EOF [vdisk0] controllerid=1 raid=10 readpolicy=ara writepolicy=wt stripesize=64 cachepolicy=e adisk=0:0:1,0:1:1,0:2:1,0:3:1,0:4:1,0:5:1 EOF echo "…………. rst all disks …………." raidcfg -ctrl -c=1 -ac=rst echo "………. 6 disks for raid10 ………." raidcfg -i=/tmp/raid10_6 echo "…………… fast init ……………" raidcfg -vd -c=1 -vd=0 -ac=fi shutdown 如果在制作raid的时候会提示磁盘没有初始化,所以我把需要做raid1的两个硬盘手动初始化了下,如下: [root@cobbler-node ~]# cat /var/lib/tftpboot/raidcfg/raid1.sh echo "------ rst all disks ------" raidcfg -ctrl -c=0 -ac=rst echo "------non-raid to raid ------" raidcfg -ad -ac=ctr -ad=0:0:1 -c=0 echo "------non-raid to raid ------" raidcfg -ad -ac=ctr -ad=0:1:1 -c=0 echo "------ 2 disks for raid1 ------" raidcfg -ctrl -ac=cvd -c=0 -ad=0:0:1,0:1:1 -r=1 echo "------ fast init ------" raidcfg -vd -c=0 -vd=0 -ac=fi poweroff 上面脚本中的raid10_6 这个文件里面的指令是怎么来的了? 直接输入 raidcfg 就可以看到所有的 help 选项了,看上去很多,其实整理一下非常的简单,熟悉几个常见缩写就知道是干嘛的了: controller -> -ctrl action -> -ac controllerid -> -c adisk, pdisk -> -ad, -pd raid -> -r size -> -sz stripsize -> -ssz cachepolicy -> -cp writepolicy -> -wp readpolicy -rp vdisk -> -vd 其他的直接看 help 好了。 上面的全部操作完,执行"cobbler sync"重启即可。 [root@cobbler-node ~]# cobbler sync 以上是通过方式获取到脚本。除了使用tftp获取之外,应该还可以通过 nfs, http 等方式获取到,这个没有亲自实验过,可以后续尝试验证下~
Cobbler自动化批量安装Linux操作系统 - 运维总结的更多相关文章
- Cobbler自动化批量安装linux服务器的操作记录
Cobbler为何物?Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命 ...
- (转)Cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- 自动化批量管理工具salt-ssh - 运维小结
根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...
- cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- linux部署pxe+kickstart批量安装linux操作系统
环境 系统 centos6.6 无图形界面 ip 192.168.2.1 系统 centos7.2 有图形界面 以下命令在centos6.6上执行 1. yum -y install dhcp* tf ...
- 自动化批量管理工具pssh - 运维小结
pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可以并发 ...
- Cobbler全自动批量安装部署Linux系统
说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...
- kvm cobbler无人值守批量安装操作系统
kvm cobbler无人值守批量安装操作系统 cobbler:一个自动网络安装系统的工具,集成PEX.dhcp.dns.tftpd.sync等服务.可以供大家管理安装操作系统 kvm:Linux系统 ...
- Linux系统运维笔记(五),CentOS 6.4安装java程序
Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选 ru ...
随机推荐
- 教你优化yum源。配置阿里云的yum镜像源(base和epel)
一.Centos7的base源配置阿里云的yum源: 1.备份旧的yum源目录下的所有文件 [root@ELK-chaofeng07 yum.repos.d]# mkdir ../yum.repos. ...
- MDX 脚本语句 -- Scope
在多维表达式 (MDX) 中,下列语句用于管理 MDX 脚本中的上下文.作用域和流控制. 主题 说明 calculate语句 计算子多维数据集,还可以确定子多维数据集中所包含的求解次序 case语句 ...
- leetcode 7. Reverse Integer [java]
public int reverse(int x) { long res = 0; while (x != 0){ res = res* 10 + x % 10; x /= 10; } if(res ...
- [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告
[NOIP 2015]运输计划 题面: A[NOIP2015 Day2]运输计划 时间限制 : 20000 MS 空间限制 : 262144 KB 问题描述 公元 2044 年,人类进入了宇宙纪元. ...
- BSOJ 2423 -- 【PA2014】Final Zarowki
Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的灯 ...
- innerHTML、innerText和outerHTML、outerText的区别
区别描述如下: innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 innerText 设置或获取位于对象起始和结束标签内 ...
- 【转】同一个SQL查询语句,为什么使用到的索引不同?
问: 同一个SQL查询语句,只是修改where条件中的一个值,为什么使用到的索引情况也会不同?谢谢! 1) explain执行结果,如下图: 2) 表中的数据如下图: 3) 表结构如下图: 4) 创建 ...
- 【转】联想笔记本进入u盘启动项操作方法详解
win7之家小编最近可是对联想笔记本进入u盘启动项的方法很有兴趣啊,那么联想进入u盘启动到底要怎么操作呢?其实方法是有的,因为小编就是研究联想进入u盘启动出身的,下面小编就给大家带来史上最详细的联想笔 ...
- document.documentElement.scrollTop(获取滚动条位置)
要获取当前页面的滚动条纵坐标位置,用:document.documentElement.scrollTop;而不是:document.body.scrollTop;documentElement 对应 ...
- Ubuntu 14.04服务器配置 (1) 安装和配置
http://jingyan.baidu.com/article/9c69d48fb9fd7b13c8024e6b.html ssh是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安 ...