一、cobbler简介

cobbler 是一个系统启动服务boot server,可以通过pxe得方式用来快速安装,重装系统,支持安装不同linux发行版和windows。这个工具是用python开发,方便小巧,15k行代码,使用简单得命令完成pxe网络安装环境配置,还可以管理dhcp,dns,yum包镜像。

cobbler可以命令行,也可以web(cobbler-web),还提供api接口,可以方便二次开发使用

其实就是多安装树得pxe环境,是pxe得高级应用

二、cobbler可以提供得功能

1、pxe支持

2、dhcp管理

3、dns服务管理(bind,dnsmasq)

4、电源管理

5、kickstart支持

6、yum仓库管理

7、tftp(pxe启动时需要)

8、apache,提供ks得安装源,并提供定制化得ks配置,同时,它和apache做了深度整合,通过cobbler,可以师兄redhat/centos/fedora系统得快速部署,同时也支持suse、debian(ubuntu)系统,通过配置开可以支持windows

三、cobbler架构及工作原理、核心框架(自己画了一张,又找了几张图,可以很清晰架构了)

 介绍一下profile,核心,由三个组件组成

repositories (安装树或安装源)

mirror 镜像,光盘或者网络中得安装源

import 导入

distribution(vmlinuz-内核,initrd.img-引导映像文件)

cobbler 自动从reporitories抽取出来生成

kickstart file 组成得完完整整得系统发行版

 

cobbler就是较早pxe得升级版,优点容易配置,还自带web界面比较易于管理,但是中文资料少,(有人测试:cobbler不会应为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止,这部分没有验证)

可以通过cobbler自动部署dhcp,tftp,http,在安装过程中加载ks无人值守安装应答文件实现无人值守,从客户端使用pxe引导启动安装

 

四、开始安装

1、安装cobbler依赖的服务及相关目录

  cobbler的运行依赖于dhcp、tftp、rsync、dns、http、xinetd服务

yum -y install cobbler cobbler cobbler-web pykickstart debmirror httpd dhcp xinetd

cobbler        #cobbler程序包
cobbler-web     #cobbler的web服务包
pykickstart    #cobbler检查kickstart语法错误
httpd      #Apache web服务
dhcp       #Dhcp服务
tftp      #tftp服务

xinetd  #诸多服务的超级守护进程,

###扩展部分可以忽略:很多人不知道这是干啥的,xinetd,可以把一些小服务放在xinetd里进行托管,托管后的好处就是可以使用xinetd强大的参数来控制这些服务,并增强安全性,但也又一些缺点,它最大的缺点就是RPC支持的不够稳定,但也可以启动protmap,使它与xinetd共存来解决。###

    ###系统默认支持xinetd服务可以分为

1)标准internet服务:telnet,ftp

2)信息服务:finger、netstat、systat

3)邮件服务:imap、imaps、pop2、pop3、pops

4)RPC服务:rquotad、rstatd、rusersd、sprayd、walld

5)BSD服务:comsta、exec、login、ntalk、shell、talk

6)内部服务:chargen、daytime、echo、servers、services、time

7)安全服务:irc

8)其他服务:name,tftp,uucp

###

 

 

 

配置文件目录:/etc/cobbler

/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       #导入的系统镜像列表,cobbler distro文件目录
/var/www/cobbler/images       #导入的系统镜像启动文件
/var/www/cobbler/repo_mirror      #yum源存储目录
日志目录

/var/log/cobbler
/var/log/cobbler/install.log       #客户端系统安装日志
/var/log/cobbler/cobbler.log       #cobbler日志

2、安装使用cobbler

  1)先添加epel源

wget https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

rpm -ivh epel-release-latest-7.noarch.rpm

yum clean all

yum makecache all

  2)开启http,cobbler

先启动httpd,在启动cobblerd

systemctl start httpd.service

systemctl start cobblerd.service

systemctl enable httpd

systemctl enabled cobblerd

netstart -tnlp

14091端口

先看一下面两条命令

cobbler help

cobbler check

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cobbler check                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
      The following are potential configuration items that you may want to fix:                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
      1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.                                                                                                                                                                                                                                                                                      
      2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.                                                                                                                                                                                                                                                                                                                                               
      3 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:                                                                                                                                                                                                                                                                                                                                                                                                 
          https://github.com/cobbler/cobbler/wiki/Selinux
      4 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
      5 : change 'disable' to 'no' in /etc/xinetd.d/rsync
      6 : since iptables may be running, ensure 69, 80/443, and 25151 are unblocked                                                                                                                                                                                                                                                                                                                                                                                                                                                              
      7 : comment out 'dists' on /etc/debmirror.conf for proper debian support                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
      8 : comment out 'arches' on /etc/debmirror.conf for proper debian support                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
      9 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
      Restart cobblerd and then run 'cobbler sync' to apply changes. 

 

 

 

3、配置cobbler主配置文件及处理check问题

  1)server和next_server

vim /etc/cobbler/setting

server 192.168.216.149      #server用于cobbler服务器指定ip地址

next-server 192.168.216.149  #next-server DHCP/PXE网络引导文件被下载的tftp服务器ip,可以和server是同一台也可以是其他主机

用sed免去vim编辑

sed -i 's/server:127.0.0.1/server: 192.168.216.149/g' /etc/cobbler/settings

sed -i 's/next-server:127.0.0.1/next-server: 192.168.216.149/g' /etc/cobbler/settings

  2)生成cobbler安装系统root初始密码(上面出现第9项)

 

1
2
3
4
5
6
[root@node3 ~]# openssl passwd -1 -salt $(openssl rand -hex 4)                                                                                                                                                                                                                       
    Password:                                                    
    $1$5b5e6a7a$ZdD7Yn4i5ExKKcqxtFZth1  
    
    vim /etc/cobbler/setting
    default_password_crypted: "$1$5b5e6a7a$ZdD7Yn4i5ExKKcqxtFZth1"

 

  3)cobbler管理rsync

默认时0,不对rsync进行管理,可以修改为1进行管理

###cobbler 支持/etc/cobbler/rsync.template   #rsync服务的配置模板###

用sed解决

sed -i  's/manage_dhcp:0/manage_dhcp: 1/g' /etc/cobbler/settings

grep '^manage_dhcp' /etc/cobbler/settings

 

  4)cobbler管理dhcp

pxe启动需要dhcp服务器地址,并直接引导系统,它就可以从网络中下载引导文件到tftp的服务器,cobbler可以通manage_dhcp的设置来进行管理

配置dhcp服务

修改cobbler配置让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合pxe

同上也是改为1

manage_dhcp: 1

sed -i 's/manage_dhcp:0/manage_dhcp: 1/g' /etc/cobbler/settings

grep '^manage_dhcp' /etc/cobbler/settings

注意还需要修改cobbler管理dhcp的模板

###/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保dhcp分配的地址和cobbler在一个网段###

vim /etc/cobbler/dhcp.template

subnet 192.168.216.0 netmask 255.255.255.0{
option routers 192.168.216.2;
#option domain-name-servers x.x.x.x;
#option subnet-mask x.x.x.x;
range dynamic-bootp 192.168.216.200 192.168.216.210;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;

}

#

  5)配置debmirror

注释掉@dists和@arches的行

sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf

sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf

   6)配置tftp

###cobbler也可以管理tftpd     /etc/cobbler/tftpd.tmplate   #tftp服务的配置模板###

我这里没有用cobbler管理

vim /etc/xinetd.d/tftp

disabled    =no

chkconfig tftp on 开机自启

systemctl enable tftp.service

systemctl restart tftp.servcie

systemctl enabled xinetd.service

systemctl start xinetd.servcie

检查xinetd进行

ps  -ef |grep xinetd

检查tftp监听端口69

ss -untlp

   7)配置启动rsync

vim /etc/xinetd.d/rysnc

disabled  =no

systemctl start ryncd

rsync和tftpd都起来后启动xinetd

service xinetd restart

   8)关闭selinux

setenforce 0

getenforce

permissive

 

   9)可以下载或复制本机的bootload

ls /var/lib/cobbler/loaders

cobbler get-loaders

复制本机的

cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders

cp /usr/share/syslinux/pexlinux.o /var/lib/cobbler/loaders

   10)如果不用cobbler管理dhcp,则配置dhcp配置文件

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /dhcpd.conf

vim /etc/dhcp/dhcpd.conf

option domain-name "zhangxingeng.com";

option domain-name-servers 192.168.216.149;

subnet 192.168.216.0 netmask 255.255.255.0 {

range 192.168.216.200 192.168.216.220

option routers 192.168.216.149;

}

 

4、启动各项服务

systemctl start dhcpd

systemctl start ryncd

systemctl start tftpd

systemctl start httpd

systemctl start xinted

cobbler sync 同步

cobbler sync 命令用于将tftpboot目录和/var/www/cobbler(系统江西目录)保持最新,当/var/lib/cobbler或者ks发生变化,应该执行一次cobbler sync或重启cobbler服务

五、cobbler 子命令介绍及启动cobbler

  1、cobbler 子命令

cobbler [command] --help

cobbler report  #查看cobbler报告

cobbler list    #查看操作

 

cobbler profile  #查看配置文件信息

cobbler distro  #查看cobbler导入系统发行版系统信息

cobbler system  #查看system信息

cobbler repo  #查看repo信息

cobbler sync  #同步cobbler配置,更改配置最好都要执行下

cobbler reposync  #同步yum仓库

注:profile与distro是多对一的关系,profile 是对distro进行定制后的描述

 

1 [root@node3 ~]# cobbler --help
2 usage
3 =====
4 cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ... 
5         [add|edit|copy|getks*|list|remove|rename|report] [options|--help]
6 cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]
7 [root@node3 ~]#
 1 [root@node3 ~]# cobbler distro list
 2    centos7-x86_64
 3 [root@node3 ~]# cobbler profile list
 4    centos7-x86_64
 5 [root@node3 ~]# cobbler distro --help
 6 usage
 7 =====
 8 cobbler distro add
 9 cobbler distro copy
10 cobbler distro edit
11 cobbler distro find
12 cobbler distro list
13 cobbler distro remove
14 cobbler distro rename
15 cobbler distro report

 六、开始生成distro,ks,及profile文件

  1、挂载光盘并生成distro

1 [root@node3 kickstarts]# mount /dev/cdrom /media/cdrom/
2 mount: /dev/sr0 is write-protected, mounting read-only
3 [root@node3 kickstarts]# cobbler import --name=centos7-x86_64 --path=/media/cdrom
4 task started: 2018-06-30_174436_import
5 task started (id=Media import, time=Sat Jun 30 17:44:36 2018)

等待导入完成,distro就生成完成了,从本地导入默认就是把镜像中的文件复制到/var/www/cobbler/

1 [root@node3 kickstarts]# ll /var/www/cobbler/images/centos7-
2 centos7-Everything-x86_64/ centos7-x86_64/            
3 [root@node3 kickstarts]# ll /var/www/cobbler/images/centos7-x86_64/
4 total 47628
5 -rw-r--r--. 3 root root 43372552 Dec  5  2016 initrd.img
6 -rwxr-xr-x. 3 root root  5392080 Nov 23  2016 vmlinuz
7 [root@node3 kickstarts]#
 1 [root@node3 kickstarts]# ll /var/www/cobbler/ks_mirror/centos7
 2 total 312
 3 -rw-r--r--. 1 root root     14 Dec  5  2016 CentOS_BuildTag
 4 drwxr-xr-x. 3 root root     35 Dec  5  2016 EFI
 5 -rw-r--r--. 1 root root    215 Dec 10  2015 EULA
 6 -rw-r--r--. 1 root root  18009 Dec 10  2015 GPL
 7 drwxr-xr-x. 3 root root     57 Dec  5  2016 images
 8 drwxr-xr-x. 2 root root    198 Dec  5  2016 isolinux
 9 drwxr-xr-x. 2 root root     43 Dec  5  2016 LiveOS
10 drwxrwxr-x. 2 root root 217088 Dec  5  2016 Packages
11 drwxrwxr-x. 2 root root   4096 Dec  5  2016 repodata
12 -rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
13 -rw-r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
14 -r--r--r--. 1 root root   2883 Dec  5  2016 TRANS.TBL

  2、提供ks文件

 

centos6的话只需要修改keyboard改为keyboard us,及%post脚本内容即可。

centos7修改如下:

 1 [root@node3 kickstarts]# pwd
 2 /var/lib/cobbler/kickstarts
 3 [root@node3 kickstarts]# vim centos7.ks 
 4 
 5 #version=DEVEL
 6 # System authorization information
 7 auth --enableshadow --passalgo=sha512
 8 # Install OS instead of upgrade
 9 install
10 # Use network installation
11 url --url=$tree
12 #也可以写成 url="http://192.168.216.149/cobbler/ks_mirror/centos7/"
13 # Use text mode install
14 text
15 # Firewall configuration
16 firewall --disabled
17 firstboot --disable
18 # ignoredisk --only-use=sda   #centos7默认的项,但是cobbler便宜ks文件不支持此语法,所以将此项注释
19 #Keyboard layouts
20 # old format: keyboard us
21 # new format:
22 keyboard --vckeymap=us --xlayouts='us'
23 # System language
24 lang en_US.UTF-8
25 
26 # Network information
27 network  --onboot=yes --bootproto=dhcp --device=eth0 --noipv6
28 network  --hostname=node4.zhangxingeng.com
29 # Reboot after installation
30 reboot
31 # Root password
32 rootpw --iscrypted $1$5b5e6a7a$ZdD7Yn4i5ExKKcqxtFZth1
33 # SELinux configuration
34 selinux --disabled
35 # Do not configure the X Window System
36 skipx
37 # System timezone
38 timezone Asia/Shanghai
39 # System bootloader configuration
40 bootloader --append="quiet crashkernel=auto" --location=mbr --boot-drive=sda
41 # Clear the Master Boot Record
42 zerombr
43 # Partition clearing information
44 clearpart --all --initlabel
45 # Disk partitioning information
46 part /boot --asprimary --fstype="xfs" --size=250
47 part swap --fstype="swap" --size=2000
48 part / --asprimary --fstype="xfs" --grow --size=5000
49 
50 #LVM分区才亏考虑一下的分区
51 # part /boot --fstype ext4 --size=100
52 # part swap --fstype=swap --size=2048
53 # part pv26 --size=100 --grow
54 # volgroup VG00 --pesize=32768 pv26
55 # logvol / --fstype ext4 --name=LVroot --vgname=VG00 --size=29984
56 # logvol /data --fstype ext4 --name=LVdata --vgname=VG00 --size=100 --grow
57 
58 %post
59 rm -f /etc/yum.repos.d/*
60 cat >>/etc/yum.repos.d/my.repo<<eof
61 [base]
62 name=sohu
63 baseurl=http://mirrors.sohu.com/centos/7/os/x86_64/
64 gpgcheck=0
65 enable=1
66 [epel]
67 name=epel
68 baseurl=http://mirrors.aliyun.com/epel/7Server/x86_64/
69 enable=1
70 gpgcheck=0
71 eof
72 sed -i "s/rhgb //" /boot/grub2/grub.cfg
73 sed -i "/UUID/d" /etc/sysconfig/network-scripts/ifcfg-eth0
74 echo "DNS1=114.114.114.114" >> /etc/sysconfig/network-scripts/ifcfg-eth0
75 echo "UseDNS no" >> /etc/ssh/sshd_config
76 sed -i "s/GSSAPIAuthentication yes/GSSAPIAuthentication no/" /etc/ssh/ssh_config
77 sed -i "s/^SELINUX=.*$/SELINUX=disabled/" /etc/sysconfig/selinux
78 systemctl disable firewalld
79 %end
80 
81 %packages
82 @base
83 @core
84 @development
85 @platform-devel
86 kexec-tools
87 lftp
88 tree
89 lrzsz
90 
91 %end
92 
93 %addon com_redhat_kdump --enable --reserve-mb='auto'
94 
95 %end
96

  3、提供profile

导入镜像生成的distro过程会自动生成一个profile

1 [root@node3 kickstarts]# cobbler profile list
2    centos7-Everything-x86_64
3    centos7-x86_64

profile默认使用的ks是/var/lib/cobbler/kickstarts/sample_end.ks,所以需要修改此项

 1 [root@node3 kickstarts]# cobbler profile list
 2    centos7-Everything-x86_64
 3    centos7-x86_64
 4 [root@node3 kickstarts]# cobbler profile report --name=centos7-x86_64
 5 Name                           : centos7-x86_64
 6 TFTP Boot Files                : {}
 7 Comment                        : 
 8 DHCP Tag                       : default
 9 Distribution                   : centos7-x86_64
10 Enable gPXE?                   : 0
11 Enable PXE Menu?               : 1
12 Fetchable Files                : {}
13 Kernel Options                 : {}
14 Kernel Options (Post Install)  : {}
15 Kickstart                      : /var/lib/cobbler/kickstarts/sample_end.ks
16 Kickstart Metadata             : {}
17 Management Classes             : []
18 Management Parameters          : <<inherit>>
19 Name Servers                   : []
20 Name Servers Search Path       : []
21 Owners                         : ['admin']
22 Parent Profile                 : 
23 Internal proxy                 : 
24 Red Hat Management Key         : <<inherit>>
25 Red Hat Management Server      : <<inherit>>
26 Repos                          : []
27 Server Override                : <<inherit>>
28 Template Files                 : {}
29 Virt Auto Boot                 : 1
30 Virt Bridge                    : xenbr0
31 Virt CPUs                      : 1
32 Virt Disk Driver Type          : raw
33 Virt File Size(GB)             : 5
34 Virt Path                      : 
35 Virt RAM (MB)                  : 512
36 Virt Type                      : kvm
[root@node3 kickstarts]# cobbler profile edit --name=centos7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7.ks
1 [root@node3 kickstarts]# cobbler profile report --name=centos7-x86_64 |grep -i kickstart
2 Kickstart                      : /var/lib/cobbler/kickstarts/centos7.ks
3 Kickstart Metadata             : {}

centos7应该加上内核启动参数netifnames和biosdevname使得网卡名使用ethN而不使用enoXXX这样的随机名称

1 [root@node3 kickstarts]# cobbler profile report --name=centos7-x86_64 |grep -Ei 'kernel|kickstart'
2 Kernel Options                 : {'biosdevname': '0', 'net.ifnames': '0'}
3 Kernel Options (Post Install)  : {}
4 Kickstart                      : /var/lib/cobbler/kickstarts/centos7.ks
5 Kickstart Metadata             : {}
6 [root@node3 kickstarts]#

如果不是生成profile也可以添加一个,比如cobbler profile add --name=centos7-x86_64 --distro=centos7-x86_64 --      kickstart=/var/lib/cobbler/kicstarts/centos7.ks

每添加一个profile都是在项/var/lib/tftpboot/pxelinux.cfg/default中添加一个label

 1 [root@node3 kickstarts]# cat /var/lib/tftpboot/pxelinux.cfg/default 
 2 DEFAULT menu
 3 PROMPT 0
 4 MENU TITLE Cobbler | http://cobbler.github.io/
 5 TIMEOUT 200
 6 TOTALTIMEOUT 6000
 7 ONTIMEOUT local
 8 
 9 LABEL local
10         MENU LABEL (local)
11         MENU DEFAULT
12         LOCALBOOT -1
13 
14 LABEL centos7-Everything-x86_64
15         kernel /images/centos7-Everything-x86_64/vmlinuz
16         MENU LABEL centos7-Everything-x86_64
17         append initrd=/images/centos7-Everything-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.216.149/cblr/svc/op/ks/profile/centos7-Everything-x86_64
18         ipappend 2
19 
20 LABEL centos7-x86_64
21         kernel /images/centos7-x86_64/vmlinuz
22         MENU LABEL centos7-x86_64
23         append initrd=/images/centos7-x86_64/initrd.img ksdevice=bootif lang=  text net.ifnames=0 biosdevname=0 kssendmac  ks=http://192.168.216.149/cblr/svc/op/ks/profile/centos7-x86_64
24         ipappend 2
25 
26 
27 
28 MENU end
29 [root@node3 kickstarts]#

其实也可以自己修改编辑,我们把默认的menu.c32改为vesamenu.c32更喜欢这个界面,把默认菜单等待时间改为2s,也可以设置成更短,并进入菜单默认停留在local(从本地启动系统)

 1 [root@node3 kickstarts]# cat /var/lib/tftpboot/pxelinux.cfg/default 
 2 DEFAULT vesamenu.c32
 3 PROMPT 0
 4 MENU TITLE Cobbler | http://cobbler.github.io/
 5 TIMEOUT 20
 6 TOTALTIMEOUT 6000
 7 ONTIMEOUT centos7-x86_64
 8 
 9 LABEL local
10         MENU LABEL (local)
11         MENU DEFAULT
12         LOCALBOOT -1
13 
14 LABEL centos7-Everything-x86_64
15         kernel /images/centos7-Everything-x86_64/vmlinuz
16         MENU LABEL centos7-Everything-x86_64
17         append initrd=/images/centos7-Everything-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.216.149/cblr/svc/op/ks/profile/centos7-Everything-x86_64
18         ipappend 2
19 
20 LABEL centos7-x86_64
21         kernel /images/centos7-x86_64/vmlinuz
22         MENU LABEL centos7-x86_64
23         append initrd=/images/centos7-x86_64/initrd.img ksdevice=bootif lang=  text net.ifnames=0 biosdevname=0 kssendmac  ks=http://192.168.216.149/cblr/svc/op/ks/profile/centos7-x86_64
24         ipappend 2
25 
26 
27 
28 MENU end
29 [root@node3 kickstarts]#

注意,需要确保ks路径是有效并正确,我们可以在浏览器访问

http://192.168.216.149/cblr/svc/op/ks/profile/centos7-x86_64

如出现下面情况就是出错了

# This kickstart had errors that prevented it from being rendered correctly.
# The cobbler.log should have information relating to this failure.

如果排错完成需要重新编辑profile加载新的kickstart文件

cobbler profile edit --name=xxxxx --kickstart=xxxxx重新编译xxxxx的profile文件或者支持cobbler sync命令,知道浏览器能获取到kickstart的内容时才算成功或者使用cobbler profile getks --name=xxxxx命令获取名为xxxxx的profile的ks内容

  4、定制化的安装

kickstart 实现某台服务器使用给指定ks文件可能有些复杂,但是cobbler就很简单,物理mac地址的唯一性,来进行ks文件的选择定制

在做个镜像,我们指定这个节点使用centos7-Everything.ks

 1 [root@node3 xinetd.d]# cobbler import --name=centos7-Everything --path=/media/cdrom
 2 task started: 2018-06-30_220847_import
 3 task started (id=Media import, time=Sat Jun 30 22:08:47 2018)
 4 Found a candidate signature: breed=redhat, version=rhel6
 5 Found a candidate signature: breed=redhat, version=rhel7
 6 Found a matching signature: breed=redhat, version=rhel7
 7 Adding distros from path /var/www/cobbler/ks_mirror/centos7-Everything:
 8 creating new distro: centos7-Everything-x86_64
 9 creating new profile: centos7-Everything-x86_64
10 associating repos
11 checking for rsync repo(s)
12 checking for rhn repo(s)
13 checking for yum repo(s)
14 starting descent into /var/www/cobbler/ks_mirror/centos7-Everything for centos7-Everything-x86_64
15 processing repo at : /var/www/cobbler/ks_mirror/centos7-Everything
16 need to process repo/comps: /var/www/cobbler/ks_mirror/centos7-Everything
17 looking for /var/www/cobbler/ks_mirror/centos7-Everything/repodata/*comps*.xml
18 Keeping repodata as-is :/var/www/cobbler/ks_mirror/centos7-Everything/repodata
19 *** TASK COMPLETE ***
 1 [root@node3 kickstarts]# cobbler profile report --name=centos7-Everything-x86_64
 2 Name                           : centos7-Everything-x86_64
 3 TFTP Boot Files                : {}
 4 Comment                        : 
 5 DHCP Tag                       : default
 6 Distribution                   : centos7-Everything-x86_64
 7 Enable gPXE?                   : 0
 8 Enable PXE Menu?               : 1
 9 Fetchable Files                : {}
10 Kernel Options                 : {}
11 Kernel Options (Post Install)  : {}
12 Kickstart                      : /var/lib/cobbler/kickstarts/sample_end.ks
13 Kickstart Metadata             : {}
14 Management Classes             : []
15 Management Parameters          : <<inherit>>
16 Name Servers                   : []
17 Name Servers Search Path       : []
18 Owners                         : ['admin']
19 Parent Profile                 : 
20 Internal proxy                 : 
21 Red Hat Management Key         : <<inherit>>
22 Red Hat Management Server      : <<inherit>>
23 Repos                          : []
24 Server Override                : <<inherit>>
25 Template Files                 : {}
26 Virt Auto Boot                 : 1
27 Virt Bridge                    : xenbr0
28 Virt CPUs                      : 1
29 Virt Disk Driver Type          : raw
30 Virt File Size(GB)             : 5
31 Virt Path                      : 
32 Virt RAM (MB)                  : 512
33 Virt Type                      : kvm
34 
35 [root@node3 kickstarts]# cobbler profile edit --name=centos7-Everything-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7-Everything.ks
 1 [root@node3 kickstarts]# cobbler system add --name=test --mac=00:50:56:29:32:09 --profile=centos7-Everything-x86_64 --ip-address=192.168.216.222 subnet=255.255.255.0 --gateway=192.168.216.2 --interface=eth0 --static=1 --hostname=node5 
 2 [root@node3 kickstarts]# cobbler system list
 3    test
 4 [root@node3 kickstarts]# cobbler sync
 5 task started: 2018-06-30_224520_sync
 6 task started (id=Sync, time=Sat Jun 30 22:45:20 2018)
 7 running pre-sync triggers
 8 cleaning trees
 9 removing: /var/www/cobbler/images/centos7-x86_64
10 removing: /var/www/cobbler/images/centos7-Everything-x86_64
11 removing: /var/lib/tftpboot/pxelinux.cfg/default
12 removing: /var/lib/tftpboot/pxelinux.cfg/01-00-50-56-29-32-09
13 removing: /var/lib/tftpboot/grub/images
14 removing: /var/lib/tftpboot/grub/grub-x86.efi
15 removing: /var/lib/tftpboot/grub/grub-x86_64.efi
16 removing: /var/lib/tftpboot/grub/efidefault
17 removing: /var/lib/tftpboot/grub/01-00-50-56-29-32-09
18 removing: /var/lib/tftpboot/images/centos7-x86_64
19 removing: /var/lib/tftpboot/images/centos7-Everything-x86_64
20 removing: /var/lib/tftpboot/s390x/profile_list
21 copying bootloaders
22 trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
23 copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
24 trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
25 copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
26 trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
27 copying: /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
28 trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
29 copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
30 trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
31 trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
32 copying distros to tftpboot
33 copying files for distro: centos7-x86_64
34 trying hardlink /var/www/cobbler/ks_mirror/centos7/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/centos7-x86_64/vmlinuz
35 trying hardlink /var/www/cobbler/ks_mirror/centos7/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/centos7-x86_64/initrd.img
36 copying files for distro: centos7-Everything-x86_64
37 trying hardlink /var/www/cobbler/ks_mirror/centos7-Everything/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/centos7-Everything-x86_64/vmlinuz
38 trying hardlink /var/www/cobbler/ks_mirror/centos7-Everything/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/centos7-Everything-x86_64/initrd.img
39 copying images
40 generating PXE configuration files
41 generating: /var/lib/tftpboot/pxelinux.cfg/01-00-50-56-29-32-09
42 generating: /var/lib/tftpboot/grub/01-00-50-56-29-32-09
43 generating PXE menu structure
44 copying files for distro: centos7-x86_64
45 trying hardlink /var/www/cobbler/ks_mirror/centos7/images/pxeboot/vmlinuz -> /var/www/cobbler/images/centos7-x86_64/vmlinuz
46 trying hardlink /var/www/cobbler/ks_mirror/centos7/images/pxeboot/initrd.img -> /var/www/cobbler/images/centos7-x86_64/initrd.img
47 Writing template files for centos7-x86_64
48 copying files for distro: centos7-Everything-x86_64
49 trying hardlink /var/www/cobbler/ks_mirror/centos7-Everything/images/pxeboot/vmlinuz -> /var/www/cobbler/images/centos7-Everything-x86_64/vmlinuz
50 trying hardlink /var/www/cobbler/ks_mirror/centos7-Everything/images/pxeboot/initrd.img -> /var/www/cobbler/images/centos7-Everything-x86_64/initrd.img
51 Writing template files for centos7-Everything-x86_64
52 rendering TFTPD files
53 generating /etc/xinetd.d/tftp
54 processing boot_files for distro: centos7-x86_64
55 processing boot_files for distro: centos7-Everything-x86_64
56 cleaning link caches
57 running: find /var/lib/tftpboot/images/.link_cache -maxdepth 1 -type f -links 1 -exec rm -f '{}' ';'
58 received on stdout: 
59 received on stderr: 
60 running post-sync triggers
61 running python triggers from /var/lib/cobbler/triggers/sync/post/*
62 running python trigger cobbler.modules.sync_post_restart_services
63 running shell triggers from /var/lib/cobbler/triggers/sync/post/*
64 running python triggers from /var/lib/cobbler/triggers/change/*
65 running python trigger cobbler.modules.scm_track
66 running shell triggers from /var/lib/cobbler/triggers/change/*
67 *** TASK COMPLETE ***

看一下自动生成了一个以mac地址的文件,里面的label的ks地址指向刚刚创建的test,http://192.168.216.149/cblr/svc/op/ks/system/test

 1 [root@node3 pxelinux.cfg]# cat 01-00-50-56-29-32-09 
 2 default linux
 3 prompt 0
 4 timeout 1
 5 label linux
 6         kernel /images/centos7-Everything-x86_64/vmlinuz
 7         ipappend 2
 8         append initrd=/images/centos7-Everything-x86_64/initrd.img ksdevice=bootif lang=  kssendmac text  ks=http://192.168.216.149/cblr/svc/op/ks/system/test
 9 
10 [root@node3 pxelinux.cfg]#

 

附录扩展

1、搭建yum源

添加repos源

cobbler repo add --name=centos7-x86_64-epel --mirror=http://mirrors.aliyun.com/epel/7/x86_64 --arch=x86_64 --breed=yum

cobbler reposync

添加repo到对应的profile

cobbler profile edit --name=centos7-x86_64 --repos="centos7-x86_64-epel "

修改ks文件添加%post %end中间

systemctl disable postfix.service

%yum_config_stanza

2、koan (kickstart-over-a-network)实现客户机自动重新安装

1)客户端安装koan

yum install -y koan

2)执行安装命令

koan --server=192.168.216.149 --list=profiles

- looking for cobbler at http://192.168.216.149:80/cobbler_api

centos7-x86_64

3)在指定要重装的系统上执行要重装的哪个系统

koan --replace-self --server=192.168.216.149 --profile=centos7-x86_64

4)重启就会自动安装新系统了

发表评论

邮箱地址不会被公开。 必填项已用*标注