第七章 搭建 cobbler 无人值守安装服务器
(上课时间2021-08-09,笔记整理时间2021-08-16)
本章所讲内容:
7.1 实战-使用 cobbler 安装一台 centos 主机
7.2 实战-使用 cobbler 自定义主机配置
7.3 实战-cobbler-web 及对现有服务器重装系统
7.1 实战-使用 cobbler 安装一台 centos 主机
7.1.1 cobbler 简介
cobbler 是 Redhat 支持的一个开源项目,用来部署和安装系统。所以对 Redhat 系列 os 支持是比较好的。
Cobbler 的特点:
Cobbler 支持多种 Linux 操作系统得快速部署,对 PXE、DHCP、HTTP、TFTP、Kickstart、YUM 仓库、电源等进行统一管理。
Cobbler 提供实现不同用户需求得可定制系统部署方案
Cobbler 分别提供命令管理和 Web 界面管理、方便 Cobbler 管理员使用。
7.1.2 cobbler 运行流程
server 端:
第一步,启动 Cobbler 服务
第二步,进行 Cobbler 错误检查,执行 cobbler check 命令
第三步,进行配置同步,执行 cobbler sync 命令
第四步,复制相关启动文件文件到 TFTP 目录中
第五步,启动 DHCP 服务,提供地址分配
第六步,DHCP 服务分配 IP 地址
第七步,TFTP 传输启动文件
第八步,Server 端接收安装信息
第九步,Server 端发送 ISO 镜像与 Kickstart 文件
Client 端:
第一步,客户端以 PXE 模式启动
第二步,客户端获取 IP 地址
第三步,通过 TFTP 服务器获取启动文件
第四步,进入 Cobbler 安装选择界面
第五步,客户端确定加载信息
第六步,根据配置信息准备安装系统
第七步,加载 Kickstart 文件
第八步,传输系统安装的其它文件
第九步,进行安装系统
7.2 实战-使用 cobbler 安装一台 centos 主机
7.2.1 环境初始化
硬件给得大一些: 内存 4G 以上, 硬盘 50G 以上可用空间,这样方便上传镜像
[root@centos80 ~]# systemctl stop firewalld.service && systemctl disable firewalld.service && iptables -F &&setenforce 0 #关闭 selinux 和防火墙 清空iptables [root@centos80 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭 selinux [root@xuegod63 ~]# hostnamectl set-hostname CentOS80 #修改主机名7.2.2 安装配置 cobbler
首先安装 epel-release,cobbler 和 tftp-server 在 base 源中是没有的
[root@centos80 ~]# yum install -y epel-release wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 阿里的 pel安装 cobbler 其实有一部分软件会被当做依赖进行安装上去,比如 tftp 和 httpd 服务,我们这里为了方便可以一并安装,避免后续出现相关问题。
[root@centos80 ~]# yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd rsync xinetd软件作用说明
cobbler #cobbler 程序包
cobbler-web #cobbler 的 web 服务包
pykickstart #用于操作 kickstart 的 python 库
httpd #Apache web 服务
Cobbler 工作目录介绍
目录 含义 /etc/cobbler 【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 日志首先启动 cobbler 和 httpd 服务
[root@centos80 ~]# systemctl start cobblerd.service httpd.service && systemctl enable cobblerd.service httpd.service [root@centos80 ~]# systemctl status cobblerd httpd #查看服务启动状态 [root@centos80 ~]# cobbler check #检查配置以上信息我们需要逐步解决。
[root@centos80 ~]# vim /etc/cobbler/settings问题 1:修改 server 地址为 10.180.80.80
改第390行:server: 127.0.0.1
为390行:server: 10.180.80.80
问题 2:修改 next_server 地址为 10.180.80.80
改第278行:next_server: 127.0.0.1
为278 行:next_server: 10.180.80.80
问题 3:修改 tftp 服务被 xinetd 服务管理
[root@centos80 ~]# vim /etc/xinetd.d/tftp改第14行:disable = yes
为14行:disable = no
顺便修改 xinetd 和 tftpd 服务开机启动
[root@centos80 ~]# systemctl start xinetd tftp && systemctl enable xinetd tftp问题 4:下载操作系统引导文件 大概需要 3 分钟
[root@centos80 ~]# cobbler get-loaders如果下载不成功的话上传 loaders.tar.gz 然后解压到/var/lib/cobbler/目录下
[root@centos80 ~]# tar xvf 2.8.5-loaders.tar.gz -C /var/lib/cobbler/问题 5:修改 rsyncd 服务为开机自启动状态并启用它。
[root@centos80 ~]# systemctl start rsyncd && systemctl enable rsyncd问题 6:debmirror package is not installed, it will be required to manage debian deployments and repositories # debmirror 包尚未安装,需要它来管理 debian 部署和存储库关于 debian 相关部署管理配置,忽略。
问题 7:修改默认密码,按照提示敲命令
[root@centos80 ~]# openssl passwd -1 -salt 'root' '123456' #修改默认密码 $1$root$j0bp.KLPyr.u9kgQ428D10 [root@xuegod63 ~]# vim /etc/cobbler/settings 改101行:default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac." 为101行:default_password_crypted: "$1$root$j0bp.KLPyr.u9kgQ428D10" #root 为用户描述,123456 为密码**问题 8:**fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them电源管理相关服务,忽略。
修改完以上配置就可以检查 DHCP 配置了,由于 cobbler 自动管理 DHCP 服务,我们只需要修改cobbler 中的模板配置文件即可。
[root@centos80 ~]# vim /etc/cobbler/dhcp.template 21 subnet 10.170.80.0 netmask 255.255.255.0 { 22 option routers 10.170.80.1; 23 option domain-name-servers 8.8.8.8; 24 option subnet-mask 255.255.255.0; 25 range dynamic-bootp 10.170.80.100 10.170.80.254; 26 default-lease-time 21600; 27 max-lease-time 43200; 28 next-server $next_server; 29 class "pxeclients" { # $next_server 为变量值为我们前面修改的主配置文件中的地址 10.170.80.80,指定 tftp 服务器修改 cobbler 管理 dhcp 服务
[root@centos80 ~]# vim /etc/cobbler/settings 改第242行:manage_dhcp: 0 为242行:manage_dhcp: 1 [root@centos80 ~]# systemctl restart cobblerd.service #先重启 cobblerd [root@centos80 ~]# cobbler sync #同步配置文件重新检查
[root@centos80 ~]# cobbler check #重新检查剩下 2 个可以忽略的问题,到这里服务配置完成。
7.2.3 导入镜像以及配置
加载Linux 映像文件
挂载光驱导入Linux映像文件
[root@centos80 ~]# mount /dev/cdrom /media/ #挂载光驱 mount: /dev/sr0 写保护,将以只读方式挂载 [root@centos80 ~]# cobbler import --path=/media/ --name=CentOS7.6 --arch=X86_64 #导入镜像(时间大概 3~5 分钟)查看镜像,上面是镜像名称,下面是启动菜单。
[root@centos80 ~]# cobbler list distros: CentOS7.6-x86_64 profiles: CentOS7.6-x86_64 [root@centos80 ~]# cobbler sync #同步 cobbler 配置 task started: 2021-08-13_095629_sync task started (id=Sync, time=Fri Aug 13 09:56:29 2021) running pre-sync triggers cleaning trees removing: /var/www/cobbler/images/CentOS7.6-x86_64 removing: /var/lib/tftpboot/pxelinux.cfg/default removing: /var/lib/tftpboot/grub/images removing: /var/lib/tftpboot/grub/grub-x86.efi removing: /var/lib/tftpboot/grub/grub-x86_64.efi removing: /var/lib/tftpboot/grub/efidefault removing: /var/lib/tftpboot/images/CentOS7.6-x86_64 removing: /var/lib/tftpboot/s390x/profile_list copying bootloaders 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 files for distro: CentOS7.6-x86_64 trying hardlink /var/www/cobbler/ks_mirror/CentOS7.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS7.6-x86_64/vmlinuz trying hardlink /var/www/cobbler/ks_mirror/CentOS7.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS7.6-x86_64/initrd.img copying images generating PXE configuration files generating PXE menu structure copying files for distro: CentOS7.6-x86_64 trying hardlink /var/www/cobbler/ks_mirror/CentOS7.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS7.6-x86_64/vmlinuz trying hardlink /var/www/cobbler/ks_mirror/CentOS7.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS7.6-x86_64/initrd.img Writing template files for CentOS7.6-x86_64 rendering DHCP files generating /etc/dhcp/dhcpd.conf rendering TFTPD files generating /etc/xinetd.d/tftp processing boot_files for distro: CentOS7.6-x86_64 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 ***到这里就已经可以进行无人值守安装了。
7.2.4 安装一台主机
当前为虚拟机操作,虚拟机默认为 pxe 引导,如果是生产环境请进入 bios 修改 pxe 引导。
新建虚拟机
这里 cobbler 的网络就是桥接,所以我们这里修改新建的主机与 cobbler 同一网络环境。
开启虚拟机:
虚拟机默认就是 PXE 启动,所以不需要手动配置启动首选项为 PXE,选择 CentOS7.6-x86_64
这里说明一下,该机制为 cobbler 的防止误安装。20 秒无响应就会从本地硬盘启动。后续自动化安 装可以让它不提示,直接安装系统。
加载引导文件。
已经在安装中了, 默认是最小化安装,大概 316 个包:
安装完成:用户名 root 密码 123456 登陆测试
7.3 实战-使用 cobbler 自定义主机配置
7.3.1 定制系统安装的软件包
[root@centos80 ~]# cobbler report #查看默认的 ks 文件 [root@centos80 ~]# cd /var/lib/cobbler/kickstarts/ [root@centos80 kickstarts]# ls可以看到有很多默认的配置文件。
上传 centos7.ks 到 cobbler 上。centos7.ks 这个配置文件里面安装了开发工具相关软件包。
[root@centos80 kickstarts]# cobbler profile list #查看当前启动项,使用的配置文件 CentOS7.6-x86_64修改 name 是 centos7.6-x86_64 的 kickstart 文件为 centos7.ks
[root@centos80 kickstarts]# cobbler profile edit --name centos7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks通过给内核传参数,修改网卡名称为 eth0
[root@centos80 kickstarts]# cobbler profile edit --name CentOS7.6-x86_64 --kopts='net.ifnames=0 biosdevname=0'centos7.ks配置文件内容如下:
[root@centos80 ~]# cd /var/lib/cobbler/kickstarts/ #查看配置文件中的,默认就可以不需要修改 [root@centos80 kickstarts]# vim centos7.ks # Cobbler for Kickstart Configurator for CentOS 7 by clsn Install #安装系统 url --url=$tree #url 地址为 cobbler 内置变量 text #文本方式安装,修改为图形界面则为 Graphical lang en_US.UTF-8 #语言 keyboard us #键盘 zerombr #该参数用于清除引导信息,需要让其生效可以在参数后添加 yes 即可。 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的. #Network information $SNIPPET('network_config') #该参数表示使用下方%pre 中的脚本来配置网络,相关脚本存放于/var/lib/cobbler/snippets #如果不需要脚本配置可启用以下配置 #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 -- hostname=CentOS7 timezone --utc Asia/Shanghai #时区 authconfig --enableshadow --passalgo=sha512 #加密 shadow rootpw --iscrypted $default_password_crypted #设置 root 密码 clearpart --all --initlabel #--all 删除所有分区,后者将磁盘标签初始化为缺省值设置。 part /boot --fstype xfs --size 1024 #boot 分区大小 part swap --size 1024 #swap 分区大小 part / --fstype xfs --size 1 --grow #根分区大小 firstboot --disable #决定是否在系统第一次引导时启动"设置代理”.禁用 selinux --disabled #在系统里设置 SELinux 状态. firewall --disabled #在系统狸设置而防火墙状态 logging --level=info #这个命令控制安装过程中 anaconda 的错误日志.它对安装好的系统没有影响。 reboot #安装后重启 %pre #pre 中定了前面使用的具体脚本名称。 $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %end %packages #自定义安装内容,这里可以可以自行生成 ks 文件然后把对应的配置复制到这里。当前配置为最小化安装,以及安装系统常用工具。 @additional-devel @development @platform-devel bash-completion chrony dos2unix kexec-tools lrzsz sysstat tree vim wget git net-tools %end %post #安装后执行操作,可以执行脚本也可以直接执行命令。 systemctl disable postfix.service %end注:配置文件这里就不详细去讲了和 kickstart 配置几乎一致,如果自己定制 ks 文件需要注意文档中标红的内容需要替换为 cobbler 内置变量的相关配置。
定制 cobbler 引导菜单(名称、超时时间、默认启动菜单)
[root@centos80 kickstarts]# vim /etc/cobbler/pxe/pxedefault.template DEFAULT menu PROMPT 0 MENU TITLE Cobbler LinuxOS Install #菜单名称 TIMEOUT 200 #超时时间 TOTALTIMEOUT 6000 ONTIMEOUT $pxe_timeout_profile #超时后默认执行安装选项,$pxe_timeout_profile 为local 本地硬盘安装。 #比如当前批量装机的选项为 Centos7.6-x86_64 那么默认执行 PXE 安装就需要修改为: ONTIMEOUT CentOS7.6-x86_64 LABEL local MENU LABEL (local) MENU DEFAULT LOCALBOOT -1 $pxe_menu_items MENU end [root@centos80 kickstarts]# cobbler sync #同步 cobbler 配置新建虚拟机启动进行测试。
可以看到,需要安装 1 千多个包,不再是原来的最小化安装了。
成功修改相关配置,这里就没必要安装系统,我们直接关闭虚拟机即可。我们在定制完成后再进行安装。
7.3.2 使用 cobbler 定制化安装某个机器
首先我们先新建一个 vm 虚拟机,内存 2G 以上,复制 MAC 地址。
定制主机配置是根据 MAC 地址来识别主机的。
生成 mac 地址之后一定要点确定,不然不生效。
1:使用 cobbler 安装系统时,定制系统,指定好系统的 IP 地址,镜像,网关,主机名等信息复制时需要注意别回车,需要修改配置 mac 地址。
[root@centos80 kickstarts]# cobbler system add --name=web-server --mac=00:50:56:32:6A:06 --profile=centos7.6-x86_64 --ip-address=10.170.80.90 --subnet=255.255.255.0 --gateway=10.170.80.1 --interface=eth0 --static=1 --hostname=webserver --name-servers="10.170.80.1" --kickstart=/var/lib/cobbler/kickstarts/centos7.ks [root@centos80 kickstarts]# cobbler system list #查看 system 列表 web-server [root@centos80 kickstarts]# cobbler sync #同步配置查看 dhcp 配置,发现 DHCP 服务器,已经加入 IP 和 MAC 的对应关系。
[root@centos80 kickstarts]# tail -13 /etc/dhcp/dhcpd.conf # group for Cobbler DHCP tag: default group { host generic1 { hardware ethernet 00:50:56:32:6A:06; fixed-address 10.170.80.90; option host-name "webserver"; option subnet-mask 255.255.255.0; option routers 10.170.80.1; filename "/pxelinux.0"; next-server 10.170.80.80; } }多了以上自定义配置。
直接安装无需等待。并且已经预先设置网络相关参数。
7.4 cobbler-web 图形界面
我们前面安装了 cobbler-web 所以可以通过 web 界面进行管理 cobbler。它工作于 cobblerapi。
浏览器访问地址:https://10.170.80.80/cobbler_web
用户名:cobbler 密码:cobbler
Cobbler WEB操作界面:
在 web 界面中做任何配置只需要鼠标点一点就可以了,同样的修改配置之后需要点击 sync 进行配 置同步。
7.4.1 在图形界面创建一台新的主机
导入镜像这里就不操作了,比较慢,还是通过命令来进行导入比较方便,因为图形界面并不支持上传镜像。 1、创建 ks 文件
我们把之前的 centos7.ks 中的内容,直接复制进来即可。
7.4.2 使用 cobbler 对现有服务器进行重装系统
重装系统需要在客户端主机安装 koan。Koan 通过操作 cobbler_api 来修改 cobbler 配置。 实验环境:
使用 cobbler 对刚才已经安装好的系统进行重新安装系统
[root@webserver ~]# yum -y install epel-release [root@webserver ~]# yum -y install koan [root@webserver ~]# koan --server=10.170.80.80 --list=profiles #查看镜像列表可以看到 centos7.6 - looking for Cobbler at http://10.170.80.80:80/cobbler_api centos7.6-x86_64 [root@webserver ~]# koan --server=10.170.80.80 --list=system #查看主机列表 [root@webserver ~]# koan -r --server=10.170.80.80 --profile=centos7.6-x86_64 && reboot #开始重装系统-r 参数进行重装操作,--system 指定主机类型,指定 centos7 或者 webserver01。
总结:
7.1 google 数据中心机房和 cobbler 简介
7.2 实战-使用 cobbler 安装一台 centos 主机
7.3 实战-使用 cobbler 自定义主机配置
7.4 实战-cobbler-web 及对现有服务器重装系统