cobbler介绍:
1)快速网络安装Linux操作系统的服务,支持众多Linux发行版Redhat、Debian、centos、Ubuntu、也可以支持网络安装Windows
2)它是将PXE一系列操作进行封装,将多种安装参数封装到一个菜单中,然后根据cobbler自身命令同步,自动创建所需文件。
3)cobbler是Python开发编写的
4)提供了CLI字符界面和web图像界面的管理形式
cobbler的工作流程
启动服务 PXE启动
sync更新 |
拷贝TFTP file |
启动dhcpd \|/
报告信息-->no-->报告错误
报告信息-->yes-->DHCP分配 --> 获取IP地址
TFTP发送问件 --> TFTP引导
选择版本界面
接收安装选项信息--> 确定版本加载选项
发送ks文件/镜像 --> 根据配置的信息进行安装 --> 确认KS文件 --> 根据ks文件中的路径传输文件 --> 安装操作系统
1、client裸机配置了从网络启动后,开机后会广播请求DHCP服务器(cobbler server)发送器分配好的一个IP
2、DHCP服务器收到请求后发送response,包括IP地址
3、客户机拿到IP后再向cobbler server发送请求OS引导文件的请求
4、cobbler server告诉裸机OS引导文件的名字和TFTP server的IP和端口
5、客户机通过上面告知的TFTP server地址通信,下载引导文件
6、客户机执行该引导文件,确定加载信息,选择要安装的OS,期间再向cobbler server发送请求kickstart和 OS image
7、cobbler server发送请求的kickstart和OS image
8、客户机加载kickstart文件
9、客户机接收OS镜像,安装OS镜像
安装包:cobbler基于EPEL源
cobbler服务集成,彼此依赖关系,部分服务在安装cobbler时,会自动安装
PXE
DHCP
rsync
HTTP
DNS
kickstart
IPMI电源管理
检查cobbler环境:会给出提示信息,缺少的哪些动作没有完成
cobbler check
cobbler的各目录介绍:
数据目录:
/var/lib/cobbler/kickstarts/ :默认存放kickstart文件
/var/lib/cobbler/config/ :用于存放distro,system,profile等信息配置文件
/var/lib/cobbler/triggers/ :用于存放用户定义的cobbler命令
/var/lib/cobbler/loaders/ :存放各种引导程序
镜像目录:
/var/lib/cobbler/ks_mirror/ :导入的发行版系统的所有数据
/var/lib/cobbler/images/ :导入发行版kernel和initrd镜像用于远程网络启动
/var/lib/cobbler/repo_mirror/ :yum仓库存储目录
日志目录:
/var/log/cobbler/installing :客户端安装日志
/var/log/cobbler/cobbler.log :cobbler日志
具体实现步骤:
要确保机器能联网,因为需要在网络中下载安装包和部分文件、驱动等
安装时如果遇到需要 python-pygments包,就到http://fr2.rpmfind.net/linux/RPM/index.html网站下载
1)yum install cobbler dhcp :httpd等包安装cobbler时会被自动安装
2)systemctl enable httpd tftp dhcpd cobblerd :设置开机自启
3)systemctl start httpd :cobbler check 命令依赖httpd服务,如果httpd服务没启动,cobbler check不能执行
4)systemctl start cobblerd :启动cobbler服务
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.
这项是说cobbler服务器是哪个,编辑/etc/cobbler/settings,找到server,修改cobbler服务器地址
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.
这项是说TFTP服务器地址,编辑/etc/cobbler/settings,找到next_server,修改TFTP服务器地址
3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:
这项是说selinux如果是开启的,需要关闭
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
这项是说安装时root的口令,有一个默认口令,但是不安全,最好自己创建一个密码填写进去,
使用openssl passwd -1命令输入两遍密码,然后将加密后生成的密码串填写至文件中
找到default_password_crypted填写至后方即可
manage_dhcp: 1
此项cobbler check检查不出来,但需要修改为 1,改为1 的意思是DHCP服务由cobbler管理,DHCP配置文件下面会有介绍
然后重启服务,再次cobbler check时,会少很多项,有的是没用的
5 : 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.
这项是说准备pxelinux.0等等的文件,不需要手动复制,只需要执行cobbler get-loaders命令就会自动从互联网下载相对应文件,此项可等将配置文件修改完成后再执行
cobbler get-loaders :执行此命令
下载后默认将文件保存至/var/lib/cobbler/loaders/目录中
cobbler sync :执行此命令,同步命令,会自动将文件复制到/var/lib/tftpboot/目录下
会有报错,dhcpd没有启动,目前先不需要管,下面就会准备
接着准备DHCP服务
[root@centos7 ~]# rpm -ql cobbler | grep dhcp :查找和DHCP服务相关的配置
/etc/cobbler/dhcp.template :修改此DHCP配置文件模板,随后生成dhcp配置文件
vim /etc/cobbler/dhcp.template
subnet 192.168.40.0 netmask 255.255.255.0 { :将网段改为你所需要的网段
option routers 192.168.40.1; :网关可加可不加
option subnet-mask 255.255.255.0; :掩码
range dynamic-bootp 192.168.40.100 192.168.40.254; :地址池
default-lease-time 21600; :默认租期
max-lease-time 43200; :最大租期
next-server $next_server; :变量,此变量就是cobbler配置文件中修改的next_server后面跟的IP地址
:文件中还有其他内容,其他不需要修改
再次执行同步命令
1)cobbler sync
2)cobbler check :再次检查会发现没有报错
3)cat /etc/dhcp/dhcpd.conf :查看DHCP配置文件已经改为模板中定义的内容
接着准备yum源,cobbler会根据yum源生成菜单文件
cobbler import --help
--arch=ARCH :平台,x86_64等
--path=PATH :镜像文件路径
--name=NAME name, ex 'RHEL-5',菜单的名字,选择版本的时候的名字
--kickstart=KICKSTART_FILE :可以指定ks应答文件,不指定默认生成一个最小化的应答文件
执行命令:将centos7镜像导入,生产中可直接将一个镜像文件导入进去
cobbler import --path=/misc/cd/ --name=Centos7-7.6-x86_64 --arch=x86_64 :7的镜像
将centos6镜像也导入,生产中可直接将一个镜像文件导入进去
1)mkdir /mnt/cdrom
2)mount /dev/sr1 /mnt/cdrom
3)cobbler import --path=/mnt/cdrom --name=Centos6.10-x86_64 --arch=x86_64
导入完成后查看/var/lib/tftpboot/pxelinux.cfg/default文件,看看菜单是否添加完成,如过菜单没有更新,执行cobbler sync同步一下
MENU DEFAULT设置为默认安装哪个版本,可修改
完成后就可以实现安装操作系统了
使用自己创建的ks应答文件
/var/lib/cobbler/kickstarts :此目录存放cobbler的应答文件,自己写的应答文件也需要放在这里
vim /var/lib/cobbler/kickstarts/ks7-mini.cfg
url --url=$tree :此项必须改,$tree是cobbler的变量
cobbler系列命令
cobbler distro list :查看系统版本
cobbler profile list :相当于菜单项,不同ks应答文件,例如有mini安装,desktop安装等
添加菜单项,自定义应答文件
1)cobbler profile add --name=centos7.5-x86_64.mini --kickstart=/var/lib/cobbler/kickstarts/ks7-mini.cfg --distro=Centos-7.5-x86_64
2)cobbler profile add --name=centos6.10-x86_64.mini --kickstart=/var/lib/cobbler/kickstarts/ks6-mini.cfg --distro=Centos-6.10-x86_64
--name是菜单名,也就是要安装的版本
--kickstart是具体使用哪个应答文件,应答文件中定义了到底是最下化安装还是图形安装等
--distro是安装的版本
再次安装时会多出两个菜单项,也就是多出两个不同的系统,主要体现在ks文件定义的不同,安装包等等
删除菜单项
cobbler profile remove --name=Centos-6.10-x86_64 :再次安装时就少一个选择
cobbler profile remove --name=Centos-7.5-x86_64
为菜案项改名字
cobbler profile rename --name=centos6.10-x86_64.mini --newname=centos6.10-x86_64.desktop
名字改了后建议看看ks应答文件中是否对应有安装包,要不改名字的意义何在
查看菜单项的详细信息
cobbler profile report --name=centos7.5-x86_64.mini :能看到对应的应答文件是哪个,路径在哪,还有其他信息
基于web方式管理cobbler
yum install cobbler-web :安装web包,需要epel源
安装后cobbler-web的配置文件放在了/etc/httpd/conf.d/目录下cobbler_web.conf
这就说明要是用web管理就需要httpd配合使用,需要重启httpd服务,重启后ss -nltu查看会多出一个443端口,cobbler-web方式是基于https加密来访问的
https://192.168.40.4/cobbler_web/ :需要使用https,并且还有一个子目录
访问时因为证书是自签证书,所以不受信任,可以将证书添加到信任列表,也可以直接接受风险继续访问
回车后输入默认用户和密码
用户:cobbler
密码:cobbler
系统默认的验证方法:
vim /etc/cobbler/modules.conf
[authentication]
module = authn_configfile
1)authn_configfile对应的文件是/etc/cobbler/users.digest
2)cat /etc/cobbler/users.digest
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3
用户 :领域realm:加密后密码
管理cobbler用户
htdigest --help
Usage: htdigest [-c] passwordfile realm username
例:htdigest /etc/cobbler/users.digest Cobbler cheng :领域要照抄,回车后输入两遍密码
-c flag creates a new file. :-c是创建一个新密码文件
通过pam模块认证cobbler_web用户
vim /etc/cobbler/modules.conf
[authentication]
module = authn_pam
基于pam模块方式是使用的系统用户,所以可以创建一个系统用户
useradd -s /sbin/nologin cobbler
echo 123123 | passwd --stdin cobbler
vim /etc/cobbler/users.conf
[admins]
admin="cobbler"
重启cobbler服务