cobbler自动化安装系统

回顾历史–以前是怎么安装系统的:
光盘(ISO文件,光盘的镜像文件)每一台物理机都得给一个光驱,如果用外置光驱的话,每台机器都需要插一下
U盘:ISO镜像刻录到U盘需要每台机器都需要插一下
并行安装网络安装

Linux系统批量自动安装:
1)实现原理:将手动安装的所有的详细步骤记录到一个文件中,然后有一种软件通过读取这个文件就可以实现自动化安装系统。

这个工具叫做KickStart,kickstart是RedHat公司开源的工具,所以对CentOS兼容性最好。注意kickstart是一个项目的名称,没有这个软件。

cobbler是对kickstart的所有组件的封装。本质上就是网页版本的kickstart。

2)kickstart的原理及组件:
什么是PXE
PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;

cobbler自动化安装系统

1.环境准备:

[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[[email protected] ~]# uname -r
3.10.0-693.el7.x86_64
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[[email protected] ~]# hostname -I
10.0.0.201 172.16.1.201

2.安装DHCP服务
1.安装DHCP

2.配置DHCP
cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199; # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; # 设定netmask
default-lease-time 21600; # 设置默认的IP租用期限
max-lease-time 43200; # 设置最大的IP租用期限
next-server 172.16.1.201; # 告知客户端TFTP服务器的ip
filename “/pxelinux.0”; # 告知客户端从TFTP根目录下载pxelinux.0文件
}
EOF

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.1.201;
filename “/pxelinux.0”;
}
EOF

3.运行DHCP服务与检查日志
3.启动dhcp查看日志
[[email protected] ~]# systemctl start dhcpd
[[email protected] ~]# systemctl status dhcpd
tailf /var/log/messages
4.通过抓包查看DHCP过程
yum install wireshark -y
tshark -ni eth1

那些年我们踩过的坑(1)
新建空白虚拟机,建完后做快照。
cobbler自动化安装系统
cobbler自动化安装系统

安装TFTP服务
安装
yum -y install tftp-server
启动

那些年我们踩过的坑(2)
cobbler自动化安装系统
上面报错是在TFTP服务的根目录找不到启动文件pxelinux.0
[[email protected] ~]# cd /var/lib/tftpboot/ # TFTP服务的根目录
[[email protected] tftpboot]# ls
[[email protected] tftpboot]#
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

那些年我们踩过的坑(3上)
cobbler自动化安装系统
首先排除最简单故障原因:selinux是否关闭,防火墙是否关闭
上面的错误是因为pxelinux.0这个小系统的配置文件(default)不存在,或者文件名不对

那些年我们踩过的坑(3下)
如何找到这个配置文件
第一步:挂载镜像
第二步
mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS7

第三步:从镜像中找到相关的配置文件
cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cobbler自动化安装系统

**

配置完成TFTP服务

**
#systemctl is-active tftp.service
active
tree -F /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.cat
├── boot.msg
├── grub.conf
├── initrd.img
├── isolinux.bin
├── isolinux.cfg
├── memtest
├── pxelinux.0
├── pxelinux.cfg/
│ └── default
├── splash.png
├── TRANS.TBL
├── vesamenu.c32
└── vmlinuz*

cobbler自动化安装系统
安装HTTP服务
作用1:提供自动应答文件下载
作用2:提供安装系统所需的所有rpm包下载

yum -y install httpd
systemctl start httpd.service

检查步骤
http://10.0.0.201/CentOS7/
curl http://172.16.1.201/CentOS7/

手动网络安装
编辑default文件
append initrd=initrd.img method=http://172.16.1.201/CentOS7/ #centos6 c7中不推荐
append initrd=initrd.img inst.repo=http://172.16.1.201/CentOS7/
cobbler自动化安装系统
自动安装操作系统
编写KS文件(包含安装的所有步骤)
方法1:新装CentOS系统/root/anaconda-ks.cfg
方法2:图形CentOS系统提供的图形工具
方法3:了解ks文件语法,编写ks文件。(推荐)

KS文件语法
1.1 ks文件组成
命令段
包组段 以%packages开头,以%end结束
脚本段 以%post开头,以%end结束,在安装完系统之后执行的相关Linux命令、脚本
以%pre开头,以%end结束,在安装完系统之前执行的相关Linux命令、脚本

1.2 kickstart文件语法检查
yum install pykickstart
ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg

请记住这个验证工具有其局限性。Kickstart 文件可能会很复杂;ksvalidator 可保证其语法正确,且该文件不包含淘汰的选项,但它无法保证安装会成功。它也不会尝试验证 Kickstart 文件的 %pre、%post 和 %packages 部分。

1.3 root加密密码生成
python -c ‘import crypt; print(crypt.crypt(“密码”))’

开始自动安装系统,enjoy!

二:Cobbler介绍:

Cobbler是一个Linux系统安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。
Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
官网:http://cobbler.github.io/

1,环境准备
使用Kickstart安装的系统来继续实验。
主机名:oldboyedu-cobbler
IP地址:10.0.0.202 172.16.1.202

2,安装配置Cobbler
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装:yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd python-django

启动:systemctl start cobblerd.service
启动 :systemctl start httpd.service
改文件:
1,vim /etc/cobbler/settings manage_dhcp : 0 0改成1
2, vim /etc/cobbler/dhcp.template :%s#192.168#172.16#g 替换网段
3, vim /etc/cobbler/dhcp.template 删掉22,23行
cobbler自动化安装系统

cobbler check # 再按照提示一个一个修正。
1,2: 改server 和改next_server
cobbler自动化安装系统
cobbler自动化安装系统

3:在/etc/xinetd.d/tftp中将’disable’更改为’no’。
4:运行cobbler get-loaders下载引导
5:使用systemctl启用并启动rsyncd.service
systemctl start rsyncd
systemctl enable rsyncd
6:未安装debmirror包,需要管理debian部署和存储库(视频说可以掠过)
7:运行openssl passwd -1生成密码然后写在vim /etc/cobbler/settings的 default_password_crypted后面
cobbler自动化安装系统
8:未讲

让刚才的配置生效:cobbler sync
再检查:cobbler check 如下图就没有问题了
cobbler自动化安装系统
启动所有服务: systemctl restart cobblerd.service httpd.service tftp.socket rsyncd.service
[[email protected] /]# systemctl is-active cobblerd.service httpd.service tftp.socket rsyncd.service
active
active
active
active

4,Web操作Cobbler
https://10.0.0.202/cobbler_web
会发现访问不到,这里有个坑需要通过一下步奏解决:
cobbler自动化安装系统

账号密码默认均为cobbler
接下来就在网页上操作,enjoy!

1:导入镜像,先要确认系统有光盘
[[email protected] /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.1G 46G 5% /
devtmpfs 900M 0 900M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 182M 0 182M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
cobbler自动化安装系统
2:检查镜像
[[email protected] /]# ll /var/www/cobbler/ks_mirror/
total 0
drwxrwxr-x 8 root root 254 Nov 26 07:53 CentOS7-x86_64
drwxr-xr-x 2 root root 33 Apr 17 23:44 config
cobbler自动化安装系统

3:让网卡名字变成eth0
cobbler自动化安装系统

防止误重装
sed -i ‘s/pxe_just_once: 0/pxe_just_once: 1/’ /etc/cobbler/settings
配置Cobbler统一管理DHCP
sed -i ‘s/manage_dhcp: 0/manage_dhcp: 1/’ /etc/cobbler/settings
配置DHCP Cobbler模版
sed -i.ori ‘s#192.168.1#172.16.1#g;22d;23d’ /etc/cobbler/dhcp.template

几个重要目录:
1:存放启动页面的目录 cat /var/lib/tftpboot/pxelinux.cfg/default
LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT -1

LABEL CentOS7-x86_64
kernel /images/CentOS7-x86_64/vmlinuz
MENU LABEL CentOS7-x86_64
append initrd=/images/CentOS7-x86_64/initrd.img ksdevice=bootif lang= text net.ifnames=0 biosdevname=0 kssendmac ks=http://127.16.1.202/cblr/svc/op/ks/profile/CentOS7-x86_64
ipappend 2

2:存放镜像文件的目录/var/www/cobbler/ks_mirror/
3:cobbler的主配置文件目录 /etc/cobbler/settings
4:存放K文件目录: /var/lib/cobbler/kickstarts/

cobbler profile edit --name=CentOS7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7-x86_64.cfg

cobbler profile edit --name=CentOS7-x86_64 --kopts=‘net.ifnames=0 biosdevname=0’