Cobbler实战

Cobbler,自动化运维之部署神器,可实现网卡启动批量安装系统,节省时间提高装机效率。

环境:CentOS7.6

安装Cobbler
#yum install -y epel-release
#yum clean && yum makecache
#yum -y install dhcp tftp-server rsync xinetd httpd cobbler cobbler-web pykicstart
其中pykicstart是检查kicstart文件语法错误的。

相关配置
#sed -i ‘/^server:/s/127.0.0.1/10.3.8.234/’ /etc/cobbler/settings
#sed -i ‘/^next_server:/s/127.0.0.1/10.3.8.234/’ /etc/cobbler/settings
#sed -i ‘/^manage_dhcp:/s/0/1/’ /etc/cobbler/settings #接管DHCP,随后要配置DHCP模板
#sed -i ‘/^manage_rsync:/s/0/1/’ /etc/cobbler/settings #接管rsync,无需额外配置rsync
#openssl passwd -1 -salt ‘123456’ ‘123456’
$1 123456 123456 123456wOSEtcyiP2N/IfIl15W6Z0
#vi /etc/cobbler/settings,将default_password_crypted:后面的密码替换成
default_password_crypted: “$1 123456 123456 123456wOSEtcyiP2N/IfIl15W6Z0”
默认manage_tftpd: 1,且/etc/cobbler/tftpd.template中disable = no,只需要执行cobbler sync就够了。

#vi /etc/cobbler/dhcp.template,只需要修改如下几行:
subnet 10.3.8.0 netmask 255.255.255.0 {
option routers 10.3.8.254;
option domain-name-servers 210.21.4.130;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.3.8.241 10.3.8.249;
其余略
}
此外,如果有多个网卡,只让其中的enp0s8监听DHCP服务,就要修改文件:
#echo DHCPDARGS=enp0s8 >> /etc/sysconfig/dhcpd

启动相关服务
#systemctl restart xinetd
#systemctl start rsyncd
#systemctl enable rsyncd
#systemctl start httpd
#systemctl enable httpd
先启动httpd再启动cobblerd:
#systemctl start cobblerd
#systemctl enable cobblerd
#cobbler get-loaders
#cobbler sync
#cobbler check
执行 cobbler get-loaders 命令就不用安装syslinux程序包及复制pxelinux.0,memu.c32等文件,它是最好的兼容多种引导类型的方法;

Web页入口:https://10.3.8.234/cobbler_web/
用户名cobbler,密码cobbler

本文的思路是基础包用CentOS的DVD镜像导入,更新包用阿里源同步到本地。因为DVD镜像的内容能满足大多数场合需求,它又是不变的,变的只是更新包,同步到本地作为updates源即可。
只是这样还有个不足,就是只能满足初始装机的需求,后续安装其它软件还需要更丰富的repo,比如阿里repo,网易的repo,epel源等,所以这里顺便把阿里的repo一起放在安装过程中。

1、准备阿里repo文件
#wget -P /var/www/cobbler/pub/ http://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/yum-plugin-priorities-1.1.31-50.el7.noarch.rpm
#wget -P /var/www/cobbler/pub/ http://mirrors.aliyun.com/repo/Centos-7.repo
#vi /var/www/cobbler/pub/Centos-7.repo,在模块[base]、[updates]和[extras]添加如下两行:
enabled=1
priority=10
此外再增加[epel]模块:
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
enabled=1
priority=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

优先级范围1-99,1最高,99最低。在ks文件%post…%end再把此文件下载到/etc/yum.repos.d/目录即可。此外还要安装yum-plugin-priorities-1.1.31-50.el7.noarch.rpm插件,这样repo的优先级才生效。配置优先级的作用是优先使用此cobbler服务器的repo源,其次再使用阿里源。

2、导入CentOS-7.6镜像
先虚拟机光驱加载CentOS7.6镜像,然后导入cobbler:
#mount /dev/cdrom /mnt/cdrom
#cobbler import --path=/mnt/cdrom --name=CentOS-7.6-x86_64 --arch=x86_64
import会自动创建distro、profile及ks文件(最小化安装)。导入的文件在/var/www/cobbler/ks_mirror/目录下。

#cobbler distro list #查看所有镜像
#cobbler distro report --name=CentOS-7.6-x86_64 #查看某个镜像信息
#cobbler profile list #查看所有的profile
#cobbler profile report --name=CentOS-7.6-x86_64 #查看某个profile信息
如果要删除镜像,先删除profile才能删除镜像:
#cobbler profile remove --name=CentOS-7.6-x86_64
#cobbler distro remove --name=CentOS-7.6-x86_64
distro
profile
可见,默认kickstart文件是/var/lib/cobbler/kickstarts/sample_end.ks。文件内有三个重要变量,其运行时的值为:
$tree:http://10.3.8.234/cblr/links/CentOS-7.6-x86_64,来自distro中Kickstart Metadata字段值。
$yum_repo_stanza:repo --name=source-1 --baseurl=http://10.3.8.234/cobbler/ks_mirror/CentOS-7.6-x86_64
$yum_config_stanza:curl “http://10.3.8.234/cblr/svc/op/yum/profile/CentOS-7.6-x86_64” --output /etc/yum.repos.d/cobbler-config.repo
在下图中,点击View Kickstart,查看变量在运行时的具体值。
kickstart
3、自定义kickstarts文件并添加到profile
本人使用默认的sample_end.ks安装不成功,故创建自定义kickstart文件。
$ vi /var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.ks

#version=CentOS7
#System authorization information
auth --enableshadow --passalgo=sha512
#Use network installation
url --url=$tree
#If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
#Use text mode install
text
ignoredisk --only-use=sda
#Keyboard layouts
keyboard 'us'
#System language
lang en_US.UTF-8
#Firewall configuration
firewall --disabled
selinux --disabled
#Reboot after installation
reboot

#Network information
#network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto
network --hostname=localhost.example.com --bootproto=dhcp --onboot=on

#Root password
rootpw --iscrypted $1$123456$wOSEtcyiP2N/IfIl15W6Z0
#System services
services --enabled="chronyd"
#System timezone
timezone Asia/Shanghai --isUtc
#System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
#Clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel
firstboot --disable
#Disk partitioning information
part /boot --fstype="xfs" --size=512
#part swap --fstype="swap" --size=2048
part / --fstype="xfs"  --size=1 --grow

%packages
@^minimal
bash-completion
%end

%post
systemctl disable postfix
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64' > /etc/ld.so.conf.d/local.conf
rm -f /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/aliyun.repo http://10.3.8.234/cobbler/pub/Centos-7.repo
rpm -ivh http://10.3.8.234/cobbler/pub/yum-plugin-priorities-1.1.31-50.el7.noarch.rpm
$yum_config_stanza
%end

注意:如果不是import生成的distro,则$tree的值是空的,要手工改成实际值,如下所示:
url --url=“http://10.3.8.234/cobbler/ks_mirror/CentOS-7.6-x86_64/

绑定kickstart:
#cobbler profile edit --name=CentOS-7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.6-x86_64.ks
查看profile:
#cobbler profile report --name=CentOS-7.6-x86_64

同步网络updates源
4、添加repo
#cobbler repo add --mirror=https://mirrors.aliyun.com/centos/7.6.1810/updates/x86_64/ --name=Centos7.6-Updates --arch=x86_64 --breed=yum

5、同步repo
#cobbler reposync --tries=3 --no-fail --only=Centos7.6-Updates
#–tries=3 同步三次
#–no-fail 失败继续同步
#–only=Centos7.6-Updates同步指定的repo,若是同步所有repo,耗时太长
#所需要的空间实际约3.1G,文后有说明
默认同步到目录/var/www/cobbler/repo_mirror目录内。

6、添加定时任务,定期同步repo
#crontab -e # 设置定时任务,每周一凌晨1:00执行同步
0 1 * * 1 /usr/bin/cobbler reposync --tries=3 --no-fail
#或者直接执行下面的命令,定时任务的路径:/var/spool/cron/
#echo “0 1 * * 1 /usr/bin/cobbler reposync --tries=3 --no-fail” >> /var/spool/cron/root
同步日志位于/var/log/cobbler/tasks

7、添加repo到对应的profile
#cobbler profile edit --name=CentOS-7.6-x86_64 --repos=Centos7.6-Updates
如果要添加多个repo,则用一对引号括起来,每个repo用空格分隔,比如:
#cobbler profile edit --name=CentOS-7.6-x86_64 --repos=“Centos7.6-Updates Centos7.6-Base”

8、修改repo文件
#vi /var/www/cobbler/repo_mirror/Centos7.6-Updates/config.repo,将优先级priority从99改为1:
[Centos7.6-Updates]
name=Centos7.6-Updates
baseurl=http://${http_server}/cobbler/repo_mirror/Centos7.6-Updates
enabled=1
priority=1
gpgcheck=0

9、修改PXE引导时的标题【可选】
#vi /etc/cobbler/pxe/pxedefault.template
MENU TITLE Cobbler | https://blog.linuxs.top/

10、更新配置
#cobbler sync

最后,客户机远程安装时,内存要大于1G,否则会报空间不足的错误。
安装完后,系统就是最新版的了,执行yum update时会提示当前已是最新版。

同步网络yum源的空间需求
Distro空间:同步https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/所需要的空间非常大。以Packages目录为例,curl https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/ > list.txt,然后修改list.txt,删除头尾,只保留每一行包名链接、日期时间、文件大小的行。
$ head -n 1 list.txt | awk ‘{print NF}’,其值为5,即最后第5列就是文件大小,单位是B(字节)。
$ awk ‘BEGIN{sum=0} {sum+=$5} END{print sum/1073741824}’ list.txt
9.41395
即需要9.5GB的空间,同步完成后,在目录下通过du -sh命令也能验证。
另外1073741824=102410241024。

Updates空间:同样地,可以得到https://mirrors.aliyun.com/centos/7.6.1810/updates/x86_64/Packages/目录内文件总大小为9.99G。不过本文同步完updates目录后,du -sh显示只有3.1G,推测跟镜像distro有关。本文distro是DVD光盘镜像文件,约4.3GB,怀疑同步的只是与distro有关的updates文件。

欢迎转载~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值