一、Cobbler服务的介绍
Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统
Cobbler集成了DNS DHCP软件包更新,以及配置管理,方便操作系统安装自动化
Cobbler支持命令行管理,WEB界面管理,同时提供API接口便于二次开发
Cobbler客户端token支持虚拟机安装和操作系统重新安装,使重装系统更便捷
1.1 cobbler设计模式
1) 发行版(distro): 表示操作系统。它承载了内核和initrd引导程序
2) 存储库(repository): 保存yum缓存文件的镜像仓库
3) 配置文件(profile):定义操作系统的发行版的ks配置文件,也包含内核参数信息等
4) 系统(system):主要配置网络接口, 固定IP以及MAC地址
1.2 cobbler运行流程
1) DHCP服务分配IP地址
2) Client(获取IP地址、Next_server IP地址)
3) Next_server(获取启动内核、initrd等文件)
4) tftp (PXE引导文件、启动Cobbler选择界面)
5) kickstart (确定加载项,根据NFS,httpd,ftp等共享)
二、cobbler服务的安装
2.1基础环境准备
# 将主机名称修改为cobbler hostnamectl set-hostname cobbler # uname -r 3.10.0-327.el7.x86_64
# cobbler的本机IP # ifconfig eth0 | awk -F '[: ]+' 'NR==2 {print $3}'
192.168.7.7
# 关闭selinux sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 # 关闭NetworkManager systemctl stop NetworkManager systemctl disable NetworkManager # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld
2.2 安装cobbler相关软件并启动服务
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum install cobbler cobbler-web dhcp tftp rsync pykickstart httpd xinetd -y systemctl start httpd systemctl start cobblerd systemctl enable httpd systemctl enable cobblerd
服务相关目录介绍:
# 配置文件概述 /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模板配置文件 # cobbler数据目录 /var/lib/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/install.log # 客户端系统安装日志 /var/log/cobbler/cobbler.log # cobbler日志
2.3 执行cobbler check,将列出的配置项进行修复。
cobbler check
2.3.1 按第1、2项的提示修改配置文件(以下两种方法任选其一,使用sed进行替换也可以)
# 1.手动进行修改,server和next_server为本机IP # vim /etc/cobbler/settings server: 192.168.7.7 next_server: 192.168.7.7 # 2.可以使用cobbler setting命令动态修改,需要先将allow_dynamic_settings设置为1 # vim /etc/cobbler/settings +26 allow_dynamic_settings: 1 # 重启cobblerd服务后,再动态修改 systemctl restart cobblerd cobbler setting edit --name=server --value=192.168.7.7 cobbler setting edit --name=next_server --value=192.168.7.7
2.3.2 按第3步提示,修改tftp的配置
sed -i 's#disable = yes#disable = no#g' /etc/xinetd.d/tftp
2.3.3 按第4步的提示,执行cobbler get-loaders下载网络需要执行文件
cobbler get-loaders
2.3.4 按第5步提示,启动rsyncd服务
systemctl start rsyncd
systemctl enable rsyncd
2.3.5 按第7步提示,使用openssl生成用户名和密码,并粘贴到配置文件当中。
openssl passwd -1 -salt 'cobbler' 'cobbler' $1$cobbler$M6SE55xZodWc9.vAKLJs6. # vim /etc/cobbler/settings +30 default_password_crypted: $1$cobbler$M6SE55xZodWc9.vAKLJs6.
2.3.6 安装软件包和电源管理包
yum install debmirror fence-agents -y
2.3.7 修改/etc/debmirror配置
安装完成后执行cobber check,有如下提示
需要注释@dists和@arches两行内容:
# vim /etc/debmirror.conf #@dists="sid"; @sections="main,main/debian-installer,contrib,non-free"; #@arches="i386";
2.3.8 重启cobbler服务并同步信息,有如下提示则完成配置
systemctl restart cobbler cobbler sync
2.4 修改配置让cobbler管理dhcp
# vim /etc/cobbler/settings +60 manage_dhcp: 1 # 配置dhcp模板文件,修改网关、DNS、子网掩码、DHCP地址池。 # vim /etc/cobbler/dhcp.template
# 如下图配置完成后重启服务
systemctl restart xinetd
systemctl restart cobbler cobbler sync
三、Cobbler基础应用
cobbler使用第一步要定义distro,如果已经有OS镜像安装文件,使用import方式导入
定义发生版本CentOS6、CentOS7,修改kickstart文件(默认文件/var/lib/cobbler/kickstarts/default.ks)
3.1 在VMware Workstation 上面挂载CentOS7.2的系统镜像
# 在系统内挂载CentOS7系统ISO光盘 mount /dev/cdrom /mnt/ # 如果使用的是KVM虚拟机,则需要把镜像文件拷贝到虚拟机内进行挂载 mount CentOS-7.2-x86_64-DVD-1511.iso /mnt/
3.2 将CentOS7.2镜像导入到cobbler中
cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64 # 不指定kickstart,可以自定义ks文件,选择不同的KS文件进行安装。 --path 镜像路径 --name 安装源定义名称 --arch 指定操作系统平台是32/64位 Cobbler会将镜像中的所有的文件拷贝到本地一份,存放到如下目录中: /var/www/cobbler/ks_mirror/CentOS-7-x86_64/
3.3 修改CentOS-7-x86_64默认的ks文件
# 由于默认的ks文件是/var/lib/cobbler/kickstarts/sample_end.ks,无法满足我们的需求,所以要自定义ks文件,下面的命令进行修改: cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7-x86_64.cfg # CentOS7 ks文件的内容 cat /var/lib/cobbler/kickstarts/centos7-x86_64.cfg #Kickstart Configurator by leon #platform=x86, AMD64, or Intel EM64T #System language lang en_US #System keyboard keyboard us #Sytem timezone timezone Asia/Shanghai #Root password rootpw --iscrypted $default_password_crypted #rootpw --iscrypted $1$cobbler$M6SE55xZodWc9.vAKLJs6. #Use text mode install text #Install OS instead of upgrade install #Use NFS installation Media url --url=$tree #url --url=http://192.168.7.7/CentOS-7.2-x86_64 #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr #Partition clearing information clearpart --all --initlabel #Disk partitioning information 注:如果是KVM虚拟机,磁盘类型为vda,还需要注意swap分区的大小 part /boot --fstype xfs --size 1024 --ondisk sda part swap --size 10240 --ondisk sda part / --fstype xfs --size 1 --grow --ondisk sda #System authorization infomation auth --useshadow --enablemd5 #Network information $SNIPPET('network_config') #network --bootproto=dhcp --device=eth0 --onboot=on # Reboot after installation reboot #Firewall configuration firewall --disabled #SELinux configuration selinux --disabled #Do not configure XWindows skipx %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %end #Package install information %packages @base @core sysstat iptraf ntp lrzsz ncurses-devel openssl-devel zlib-devel OpenIPMI-tools nmap screen %end %post systemctl disable postfix.service $yum_config_stanza %end
查看是否修改后的结果
3.4 将CentOS7默认网卡名称修改为eth0
# 增加内核参数 cobbler profile edit --name CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'
3.5 可制作两个不同版本的系统,再定义一个Centos6.5的镜像
umount /dev/cdrom mount /dev/cdrom /mnt/
3.6 将CentOS6.5的镜像导入cobbler当中
cobbler import --path=/mnt/ --name=CentOS-6-x86_64 --arch=x86_64
3.7 修改CentOS6.5的默认KS文件
cobbler profile edit --name=CentOS-6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Cobbler-CentOS-6.5-x86_64.cfg systemctl restart xinetd
systemctl restart cobbler cobbler sync
cat /var/lib/cobbler/kickstarts/Cobbler-CentOS-6.5-x86_64.cfg #platform=x86, AMD64, or Intel EM64T # System authorization information auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr # Partition clearing information clearpart --all --initlabel #partition information 注:如果是KVM虚拟机,磁盘类型为vda,还需要注意swap分区的大小 part /boot --fstype ext4 --size 1024 --ondisk sda part swap --size=2048 part / --fstype ext4 --size 1 --grow --ondisk sda # Use text mode install text # Firewall configuration firewall --disable # Run the Setup Agent on first boot firstboot --disable # System keyboard keyboard us # System language lang en_US # Use network installation url --url=$tree # If any cobbler repo definitions were referenced in the kickstart profile, include them here. $yum_repo_stanza # Network information $SNIPPET('network_config') # Reboot after installation reboot #Root password rootpw --iscrypted $default_password_crypted # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System timezone timezone Asia/Shanghai # Install OS instead of upgrade install # Clear the Master Boot Record zerombr %packages @base @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %post %end
3.8 创建空的虚拟机使用PXE的方式启动,进行安装系统。
四、客户端自动重装
使用epel源安装koan软件
yum install koan -y koan --replace-self --server=192.168.7.7 --profile=CentOS-7-x86_64
reboot
重启后会自动进行安装
五、自定义仓库
仓库所在的位置
5.1 添加一个zabbix的阿里源
cobbler repo add --name=zabbix3.4 --mirror=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/ --arch=x86_64 --breed=yum
5.2 查看已添加的源,并向本地同步软件
cobbler repo list zabbix3.4 cobbler reposync
# 删除已添加的源
cobbler repo remove --name=zabbix3.4
5.3 把源加入report的配置文件当中
cobbler profile edit --name=CentOS-7-x86_64 --repos=zabbix3.4
还要确认ks文件中是否配置有yum_config_stanza这一行
5.4 待安装系统的时候会安装添加上源的配置文件
安装软件的时候就会自动到仓库中下载
5.5 还需要定时同步 cobbler的软件包
echo "0 0 * * * /usr/bin/cobbler reposync --tries=3 --no-fail" >>/var/spool/cron/root
六、修改cobbler默认显示的页面
vim /etc/cobbler/pxe/pxedefault.template
七、cobbler自定义安装
由于kickstart指定某台服务器使用某个具体的ks文件比较复杂,所以引用cobbler就变得非常简单。通过物理MAC地址来区分。
Cobbler system主要目的配置网络接口,通过system指定服务器MAC地址来固定机器的IP、掩码、网关、DNS、主机名等实现基础环境的标准化。
7.1 安装前规划
MAC: 00:50:56:22:3F:00 IP: 192.168.7.10 子网: 255.255.255.0 网关: 192.168.7.2 DNS: 114.114.114.114 主机名称:linux-leon1.com 系统版本:CentOS 7.2
7.2 上机有MAC地址是通过VM来获取到的,如果是物理机,则验收的时候就可以拿到MAC地址
# cobbler profile list CentOS-6-x86_64 CentOS-7-x86_64 # cobbler system add --name=linux-leon1.com --mac=00:50:56:22:3F:00 --profile=CentOS-7-x86_64 --ip-address=192.168.7.10 --subnet=255.255.255.0 --gateway=192.168.7.2
--interface=eth0 --static=1 --hostname=linux-leon1.com --name-servers='114.114.114.114' # cobbler system list linux-leon1.com # cobbler system report # cobbler sync
7.3 启动虚拟机,自动进行安装操作。
虚拟机已经起来,查看下配置