1. Cobbler介绍
Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。
1.1 Cobbler集成的服务
PXE服务支持
DHCP服务管理
DNS服务管理(可选bind,dnsmasq)
电源管理
Kickstart服务支持
YUM仓库管理
TFTP(PXE启动时需要)
Apache(提供kickstart的安装源,并提供定制化的kickstart配置)
1.2 系统环境准备
systemctl stop firewalld.service setenforce 0 getenforce #永久关闭: /etc/selinux/config # 配置阿里云的epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
2. Cobbler安装配置
2.1 安装Cobbler
yum -y install httpd cobbler cobbler-web dhcp tftp-server pykickstart rpm -ql cobbler # 查看安装的文件,下面列出部分。 /etc/cobbler # 配置文件目录 /etc/cobbler/settings # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。 /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日志
2.2 配置Cobbler
systemctl start httpd systemctl start cobblerd cobbler check # 第1、2、6个问题,顺便修改其他功能 # 备份 cp /etc/cobbler/settings{,.ori} #1.server,Cobbler服务器的IP。 sed -i 's/server: 127.0.0.1/server: 192.168.247.139/' /etc/cobbler/settings #2.next_server,如果用Cobbler管理DHCP,修改本项,作用不解释,看kickstart。 sed -i 's/next_server: 127.0.0.1/next_server: 192.168.247.139/' /etc/cobbler/settings #3.用Cobbler管理DHCP sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings #4.防止循环装系统,适用于服务器第一启动项是PXE启动。 sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings #5.设置新装系统的默认root密码123456。下面的命令来源于提示6。random-phrase-here为干扰码,可以自行设定。 root@cen7zc ~]# openssl passwd -1 -salt 'qinzc' '123456' $1$qinzc$qMAl/QeVyLASCGnVBelxE/ [root@cen7zc ~]# vim /etc/cobbler/settings default_password_crypted: "$1$qinzc$qMAl/QeVyLASCGnVBelxE/" #启动TFTP systemctl status tftp
2.3配置DHCP模板
[root@cen7zc ~]# systemctl restart cobblerd [root@cen7zc ~]# cobbler check [root@cen7zc ~]# vim /etc/cobbler/dhcp.template subnet 192.168.247.0 netmask 255.255.255.0 { option routers 192.168.247.2; option domain-name-servers 192.168.247.2; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.247.100 192.168.247.254; default-lease-time 21600; max-lease-time 43200; next-server $next_server; #同步cobbler配置
2.4同步cobbler配置,挂载镜像
[root@cen7zc ~]# systemctl restart cobblerd [root@cen7zc ~]# cobbler sync #挂载镜像,并导入 mount /dev/cdrom /mnt cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64 ls /var/www/cobbler/ks_mirror #倒入到此 cobbler distro list # 查看镜像列表 # 最后 [root@cen7zc ~]# cobbler get-loaders # 会自动从官网下载 [root@cen7zc ~]# cd /var/lib/cobbler/loaders/ # 下载的内容 [root@cen7zc ~]# ls COPYING.elilo COPYING.yaboot grub-x86_64.efi menu.c32 README COPYING.syslinux elilo-ia64.efi grub-x86.efi pxelinux.0 yaboot
3.ks.cfg文件及调整内核参数
# Cobbler的ks.cfg文件存放位置 ll /var/lib/cobbler/kickstarts/ # 上传准备好的ks文件 (默认使用sample_end.ks文件) # 查看安装镜像文件信息 [root@cen7zc]# cobbler distro list CentOS-6-x86_64 CentOS-7-x86_64 [root@cen7zc]# cobbler distro report --name=CentOS-7-x86_64 # 查看所有的profile设置 [root@cen7zc]# cobbler profile report # 编辑profile,修改关联的ks文件 [root@cen7zc]# cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg # 修改安装系统的内核参数,在CentOS7系统有一个地方变了,就是网卡名变成eno16777736这种形式,但是为了运维标准化,我们需要将它变成我们常用的eth0,因此使用下面的参数。但要注意是CentOS7才需要下面的步骤,CentOS6不需要。 [root@cen7zc]# cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0' #修改Cobbler提示 [root@linux-node1 ~]# vim /etc/cobbler/pxe/pxedefault.template MENU TITLE Cobbler | http://www.zyops.com [root@linux-node1 ~]# cobbler sync # 修改配置都要同步 # 每次修改完都要同步一次 [root@cen7zc]# cobbler sync
4.开始安装
可以开机直接安装了
6. Cobbler的Web管理界面
配置已经安装cobbler-web软件。
访问网址:http://192.168.247.139/cobbler_web和http://192.168.247.139/cobbler_web
默认用户名:cobbler
默认密码 :cobbler
/etc/cobbler/users.conf # Web服务授权配置文件 /etc/cobbler/users.digest # 用于web访问的用户名密码配置文件 [root@linux-node1 ~]# cat /etc/cobbler/users.digest cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3 # 设置Cobbler web用户登陆密码 # 在Cobbler组添加cobbler用户,提示输入2遍密码确认 [root@linux-node1 ~]# htdigest /etc/cobbler/users.digest "Cobbler" cobbler Changing password for user cobbler in realm Cobbler New password: 123456 Re-type new password:123456 [root@linux-node1 ~]# cobbler sync [root@linux-node1 ~]# /etc/init.d/httpd restart 停止 httpd: [确定] 正在启动 httpd: [确定] [root@linux-node1 ~]# /etc/init.d/cobblerd restart Stopping cobbler daemon: [确定] Starting cobbler daemon: [确定]
7.定制化自动安装
cobbler system add --name=qinzctest --mac=00:0C:29:9C:4D:76 --profile=CentOS-7-x86_64 --ip-address=192.168.247.10 --subnet=255.255.255.0 --gateway=192.168.247.2 --interface=eth0 --static=1 --hostname=test --name-servers="114.114.114.114 8.8.8.8" # --name 自定义,但不能重复 # 查看定义的列表 [root@linux-node1 ~]# cobbler system list qinzctest [root@linux-node1 ~]# cobbler sync
ks.cfg文件简析
# Cobbler for Kickstart Configurator for CentOS 7 by Qinzc 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') timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $default_password_crypted clearpart --all --initlabel part /boot --fstype xfs --size 1024 # CentOS7系统磁盘默认格式xfs 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 @base @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet iptraf ncurses-devel openssl-devel zlib-devel OpenIPMI-tools screen %end %post systemctl disable postfix.service %end
参考:
停留在世界边缘,与之惜别