1.Cobbler简介
- Cobbler 是一个快速网络安装 Linux 的服务,而且经过调整也可以支持网络安装 Windows。
该工具使用 Python 开发,小巧轻便(才 15 k 行 Python 代码),使用简单的命令即可完成PXE网络安装环境的配置, 同 时还可以管理 DHCP、DNS、TFTP、RSYNC 以及 YUM 仓库、构造系统 ISO 镜像。 - Cobbler 支持命令行管理,Web 界面管理,还提供了 API 接口,可以方便二次开发使用。 Cobbler 客户端 koan 支持虚拟机安装和操作系统重新安装,使重装系统更便捷。
2.Cobbler功能
- 使用 Cobbler,您无需进行人工干预即可安装机器。Cobbler 设置一个 PXE 引导环境(它还可使用 yaboot 支持 PowerPC),并控制与安装相关的所有方面,比如网络引导服务(DHCP 和 TFTP)与存储库镜像。当希望安装一台新机器时,Cobbler 可以:
- 使用一个以前定义的模板来配置 DHCP 服务(如果启用了管理 DHCP)
- 将一个存储库(yum 或 rsync)建立镜像或解压缩一个媒介,以注册一个新操作系统
- 在 DHCP 配置文件中为需要安装的机器创建一个条目,并使用您指定的参数(IP 和 MAC 地址)
- 在 TFTP 服务目录下创建适当的 PXE 文件
- 重新启动 DHCP 服务以反映更改
- 重新启动机器以开始安装(如果电源管理已启用)
- Cobbler 支持众多的发行版:Red Hat、Fedora、CentOS、Debian、Ubuntu 和 SuSE。当添加一个操作系统(通常通过使用 ISO 文件)时,Cobbler 知道如何解压缩合适的文件并调整网络服务,以正确引导机器。
- Cobbler 可使用 kickstart 模板。基于 Red Hat 或 Fedora 的系统使用 kickstart 文件来自动化安装流程。
- 通过使用模板,您就会拥有基本的 kickstart 模板,然后定义如何针对一种配置文件或机器配置而替换其中的变量。
- 例如,一个模板可能包含两个变量 $domain 和 $machine_name。在 Cobbler 配置中,一个配置文件指定 domain=mydomain.com,并且每台使用该配置文件的机器在 machine_name 变量中指定其名称。该配置文件中的所有机器都使用相同的 kickstart 安装且针对 domain=mydomain.com
进行配置,但每台机器拥有其自己的机器名称。您仍然可以使用 kickstart 模板在不同的域中安装其他机器并使用不同的机器名称。 - 为了协助管理系统,Cobbler 可通过 fence scripts 连接到各种电源管理环境。
Cobbler 支持 apc_snmp、bladecenter、bullpap、drac、ether_wake、ilo、integrity、ipmilan、ipmitool、lpar、rsa、virsh 和 wti。 - 要重新安装一台机器,可运行 reboot system foo 命令,而且 Cobbler 会使用必要的凭据和信息来为您运行恰当的 fence scripts(比如机器插槽数)。
- 除了这些特性,还可使用一个配置管理系统 (CMS)。您有两种选择:该工具内的一个内部系统,或者集成一个现有的外部 CMS,比如 Chef 或 Puppet。
- 借助内部系统,您可以指定文件模板,这些模板会依据配置参数进行处理(与 kickstart 模板的处理方式一样),然后复制到您指定的位置。
- 如果必须自动将配置文件部署到特定机器,那么此功能很有用。
- 使用 koan 客户端,Cobbler 可从客户端配置虚拟机并重新安装系统
3.环境介绍
注意:虚拟机网卡采用 NAT 模式并关闭,不要使用桥接模式,因为我们会搭建 DHCP 服务器,在同一局域网多个 DHCP 服务会有冲突,并且导致实践失败,VMware 的 NAT 模式的 DHCP 服务也关闭,避免干扰。
内存:2核4G
系统版本:
内核版本:
IP地址:
4.安装配置
1.安装Cobbler及相关软件包
[root@cobbler ~]# yum -y install cobbler cobbler-web tftp-server pykickstart httpd dhcp xinetd debmirror
2.启动cobbler并添加开机自启
[root@ cobbler ~]# systemctl start httpd cobblerd
[root@ cobbler ~]# systemctl status httpd cobblerd
[root@cobbler ~]# systemctl enable httpd cobblerd
#检查配置文件,需要在 cobblerd 和 httpd 启动的情况下检查
[root@cobbler ~]# cobbler check
#如上各问题解决方法如下:
[root@cobbler ~]# sed -ri '/allow_dynamic_settings:/c\allow_dynamic_settings: 1' /etc/cobbler/settings
#1.配置server地址:
[root@cobbler ~]# cobbler setting edit --name=server --value=10.0.0.42
#2.配置next_server地址:
[root@cobbler ~]# cobbler setting edit --name=next_server --value=10.0.0.42
#3.配置xinetd管理tftp
[root@ cobbler ~]# sed -ri '/disable/c\disable = no' /etc/xinetd.d/tftp
[root@ cobbler ~]# systemctl enable xinetd
[root@ cobbler ~]# systemctl restart xinetd
#4.boot-loaders
[root@cobbler ~]# cobbler get-loaders
#5.启动rsync
[root@cobbler ~]# systemctl start rsyncd
[root@cobbler ~]# systemctl enable rsyncd
#6-7.debian support
[root@ cobbler ~]# sed -i 's#@dists="sid";#\#@dists="sid";#gp' /etc/debmirror.conf
[root@ cobbler ~]# sed -i 's#@arches="i386";#\#@arches="i386";#g' /etc/debmirror.conf
#8.default_password_crypted
#注意:这里的密码是cobbler安装完系统后,默认root用户初始化登录密码。
[root@cobbler ~]# openssl passwd -1 -salt `openssl rand -hex 4` '123456'
[root@cobbler ~]# cobbler setting edit --name=default_password_crypted --value='$1$2212e3c0$whOih1C73s2rHL8/GMgyE0'
#9.安装fencing tools
[root@ cobbler ~]# yum -y install fence-agents
#解决完再次检查
[root@cobbler ~]# systemctl restart cobblerd
[root@cobbler ~]# cobbler sync
[root@cobbler ~]# cobbler check
3.配置DHCP
#配置使用 Cobbler 管理 DHCP
[root@cobbler ~]# sed -i "s#manage_dhcp: 0#manage_dhcp: 1#" /etc/cobbler/settings
[root@cobbler ~]# grep "^manage_dhcp: " /etc/cobbler/settings
#修改 Cobbler 的 DHCP 模版
[root@cobbler ~]# vim /etc/cobbler/dhcp.template
4.同步Cobbler配置
#同步最新 Cobbler 配置,它会根据配置自动修改 DHCP 等服务
[root@cobbler ~]# systemctl restart cobblerd
[root@cobbler ~]# cobbler sync
5.cobbler命令帮助
cobbler check:核对当前设置是否有问题
cobbler list:列出所有的cobbler元素
cobbler report: 列出元素的详细信息
cobbler sync:同步配置到数据目录,更改配置最后都执行一下
cobbler reposync:同步yum仓库
cobbler distro:查看导入的发行版系统信息
cobbler system:查看添加的系统信息
cobbler profile:查看配置信息
6.安装系统
#上传centos6的镜像文件
#创建镜像目录,挂载镜像
[root@cobbler ~]# mkdir /centos6.10
[root@cobbler ~]# mount -o loop CentOS-6.10-x86_64-bin-DVD1.iso /centos6.10
#导入镜像
[root@cobbler ~]# cobbler import --path=/centos6.10 --name=centos6.10 --arch=x86_64
# --path 镜像路径
# --name 为安装源定义一个名字
# --arch 指定安装源是32位,64位,ia64,目前支持的选项有:x86|x86_64|ia64
# 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:centos6.10,如果重复,系统会提示导入失败。
#查看导入后的镜像
[root@cobbler ~]# cobbler distro report --name=centos6.10-x86_64
#上传一份ks文件
[root@cobbler ~]# cd /var/lib/cobbler/kickstarts/
[root@cobbler kickstarts]# cat centos6.10.sk
# This kickstart file should only be used with EL > 5 and/or Fedora > 7.
# For older versions please use the sample.ks kickstart file.
# Install OS instead of upgrade
install
# Use text mode install
text
# System keyboard
keyboard us
# System language
lang en_US
# System timezone
timezone Asia/ShangHai
#Root password
rootpw --iscrypted $default_password_crypted
# System authorization information
auth --useshadow --enablemd5
# Firewall configuration
firewall --disabled
# SELinux configuration
selinux --disabled
# Use network installation
url --url=$tree
# Clear the Master Boot Record
zerombr
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part swap --fstype=swap --size=2048
part / --fstype=ext4 --grow --size=200 --asprimary
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Do not configure the X Window System
skipx
# Run the Setup Agent on first boot
firstboot --disable
# Reboot after installation
reboot
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
$SNIPPET('func_install_if_enabled')
@core
@base
tree
nmap
wget
lftp
lrzsz
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
sed -ri "/^#UseDNS/c\UseDNS no" /etc/ssh/sshd_config
sed -ri "/^GSSAPIAuthentication/c\GSSAPIAuthentication no" /etc/ssh/sshd_config
%end
#动态编辑指定使用新的kickstar文件
[root@cobbler kickstarts]# cobbler profile edit --name=centos6.10-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.10.ks
#验证是否更改成功
[root@cobbler kickstarts]# cobbler profile report --name=centos6.10-x86_64|grep Kickstart
7.同步cobbler配置
#注意:系统镜像文件centos6.10.ks,每修改一次就要进行同步。
[root@cobbler kickstarts]# cobbler sync
8.创建一台虚拟机
#接下来就静静等他安装完成就OK啦!