本文共 4030 字,大约阅读时间需要 13 分钟。
自动化分为三个部分:1系统安装自动化,2文件部署自动化,3命令执行自动化。之前使用的ansible可以完成2和3,其中最基本1功能不能胜任,虽然研发团队说要提供这个功能,但是目前没有产品。我们只好使用意见比较完善的工具cobbler。部署cobbler需要一些其他的组件,很重要的一个就是dhcp还有一个inter牵头研发的pxe,这里就先介绍着两个感觉,然后再介绍cobbler。
dhcp的工作原理,这里我只简单描述一下,主机间通信基本上需要使用ip,然而每个主机只有出厂自带的mac地址,怎么把mac地址和ip对应起来,最开始,使用的手动配置ip,当计算机普及起来的时候有很多非计算机专业的人需要借助计算机完成工作,让他们自己配置ip就有点强人所难,这是就引入了dhcp机制协助非计算机人士使用计算机。扯得有点多了,当一台没有ip的主机接入网络后,只要安装了dhcp的客户端,这个客户端就会在网络中广播主机的mac和255.255.255.255这个ip地址,当网络中dhcp服务器收到后就会返回一个ip地址给客户端。
为什么需要ip,(前提主机通信是通过广播,不是直接通信)虽然mac可以用来通信但是mac地址不是层级结构,当我们去给一个mac发送数据包的时候需要找到他,地球上那么主机找到mac地址所在的网络就需要建立一个大的mac地址表把mac地址和所在的网络的关系对应起来,主机那么多这个表的数据将会达到TB级别查找完全不可能,需要借助层级结构把网络分成一块块的逐级查找。
1 2 3 4 5 6 7 8 9 10 | yum –y install dhcp-server dhcp的配置文件这里我只列举最长使用的 subnet 10.5.5.0 netmask 255.255.255.224 { #网段 range 10.5.5.26 10.5.5.30; #这个ip的范围用于分配 option domain-name-servers 172.16.0.1; #注意使用域名的话有可能导致没有操作系统的主机无法获取ip option domain-name "internal.example.org" ; #属于哪个域 option routers 10.5.5.1; #网关 default-lease- time 600; #使用时间,时间到了dhcp客户端会向服务器申请续约 max-lease- time 7200; #最多使用多长时间,续约失败,这个ip就失效 } |
pxe的一个工作流程:
(1) 没有操作系统的主机,按引导项逐级引导,引导不成功继续下一个引导项,到网卡引导的时候,网卡首先会去dhcp获取ip
(2) dhcp在返回ip的时候同时会给主机发送网络引导需要到哪个ip找哪个文件,找的那个文件就当做grub理解吧
(3) 找到这个文件后,这个文件引导计算机加载网络上的内核
(4) 内启动后寻找yum仓库,然后启动安装界面,或者按照事先配置好的ks文件自动安装
配置pxe需要的服务器
1 | yum install tftp tftp-server syslinux httpddhcp -y |
1 2 3 4 5 6 7 8 9 | subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.150.100 172.16.150.200; option domain-name-servers 172.16.0.1; option routers 172.16.0.1; default-lease- time 600; max-lease- time 7200; filename "pxelinux.0" ; #引导系统的文件 next-server 172.16.29.2; #提供引导文件的主机 } |
提供yum仓库文件
1 2 3 | cd /var/www/html/ mkdir centos7 mount -r /dev/cdrom centos7 |
提供引导的文件
1 2 | cp /var/www/html/centos7/images/pxeboot/ {vlinuz,initrd.img} /var/lib/tftpboot #内核文件 cp /usr/share/syslinux/ {chain.c32,menu.c32,memdisk,mboot.c32,pxelinux.0} /var/lib/tftpbot #引导需要的文件 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | cd /var/lib/tftpboot/ mkdir pxelinux.cfg cd pxelinux.cfg #提供引导的条目 vim default default menu.c32 prompt 5 timeout 30 MENU TITLE CentOS 7 Wang LABEL linux MENU LABEL Install CentOS 7 x86_64 KERNEL vmlinuz APPEND initrd=initrd.imginst.repo=http: //172 .16.29.2 /centos7 ks=http: //172 .16.29.2 /kickstarts/centos7 .cfg |
cobbler其实就是pxe的二次封装,并且提供了更加强大引导功能,简化配置的步骤。其中cobbler定义了几个概念:
(1) distro提供yum仓库,distro可以有多个,这就是cobbler的优势可以同时提供不同操作系统版本网络引导
(2) profile根据distro创建一条引导条目,定义多条每条提供一种我们的定制
使用cobbler需要的服务器
1 | yum install httpd tftp-server dhcp cobbler syslinuxcman fence-agents –y |
dhcp还是需要手动配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | vim /etc/dhcp/dhcpd .conf # dhcpd.conf option domain-name "example.org" ; option domain-name-servers 172.16.29.10; default-lease- time 600; max-lease- time 7200; log-facility local7; subnet 172.16.0.0 netmask 255.255.0.0 { range 172.16.0.100 172.16.0.200; option routers 172.16.0.1; filename "pxelinux.0" ; next-server 172.16.29.10; } cp /usr/share/syslinux/ {pxelinux.0,menu.c32} /var/lib/cobbler/loaders/ #提供引导文件 vim /etc/cobbler/settings server: 172.16.29.10 next_server: 172.16.29.10 |
default_password_crypted:"$1$4e010655$jJ8hjIHRuXg.Q4Irg4pSd/" #这行对应的密码为oldking,也可以自己生成openssl passwd -1 -salt $(openssl rand -hex 4)
1 2 3 4 5 6 7 | systemctl start dhcpd systemctl start tftp systemctl start httpd systemctl start cobblerd.service cobbler sync #这里是cobble自动配置服务器,把我们的配置同步到各个服务里 mount /dev/cdrom /misc/cd cobbler import --name=centos7--path= /misc/cd #建立一个distro |
#下面这个cfg文件是我自己使用的,若想使用请更改其中这一行url --url=安装后的密码123或者1记不清了哈哈,看我以前的博客自己定制ks文件或者进入但用户模式更改密码,这个文件贴在附件里。
1 2 | cp /root/centos7 .cfg /var/lib/cobbler/kickstarts/ cobbler profile add --name=centos7-basic--distro=centos7-x86_64 --kickstart= /var/lib/cobbler/kickstarts/centos7 .cfg #生成一条profile |
有了cobbler我们基本上不会使用pxe,配置pxe其实可以帮助我们更好的理解cobbler的工作原理,cobbler还有一个网页管理界面,这里我也没介绍个人感觉,命令接口完全可以满足我们的需求,使用网页管理完全是自讨苦吃,还是需要把ks文件上传到cobbler里然后,使用网页导入distro时,还是需要先下载文件或者插入优盘后还是需要挂载啊,顺便敲一条命令导入就好了嘛,打开网页登录选择导入等待导入完成后,还需要弹出优盘或者删除文件。看个人选择吧不作评论。
本文转自Ailu0li 51CTO博客,原文链接:http://blog.51cto.com/oldking/1888769,如需转载请自行联系原作者