一、介绍

Cobbler是一个使用Python开发的开源项目,通过将部署系统所涉及的所有服务集中在一起,来提供一个全自动批量快速建立linux系统的网络环境,

Cobbler提供了DHCP管理,YUM管理,电源管理等功能,除此之外还支持命令行管理,WEB界面管理,cobbler相关软件包由EPEL源提供。EPEL(Extra Pavkages for Enterprise Linux,企业版Linux的额外软件包)是Fedora小组维护的一个软件仓库项目。为RHEL/CentOS提供默认不提供的软件包,安装Cobbler除了EPEL源还需要CentOS自带的网络yum源以提供相关的依赖包。

二、实验环境

1、VMware Workstation虚拟机环境

2、CentOS7系统的虚拟PC作为Cobbler服务端,网卡使用NAT连接方式

三、前期准备

1、linux可以上网;

ping www.baidu.com

2、修改网卡配置,改为DHCP自动获取ip;

vim /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络服务

systemctl restart network.service

获得本机IP

ifconfig

四、下载epel源;

方式1,直接安装

 yum -y install epel-release    #安装epel源
#若出现 /var/run/yum.pid已被锁定 运行如下代码即可:
rm -f /var/run/yum.pid
cd /etc/yum.repos.d/ #检查该路径下是否有两个yum源:epel.repo epel-testing.repo
yum clean all && yum makecach #更新yum源,更新后就可以安装源

方式2,使用阿里的源

 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

五、安装cobbler及所需的服务软件包

yum install cobbler cobbler-web pykickstart debmirror httpd dhcp tftp-server xinetd syslinux rsync -y

六、启动apache服务,cobbler服务,关闭防火墙,关闭增强型功能并设置开机自启

 systemctl start httpd.service
systemctl enable httpd
systemctl start cobblerd.service
systemctl enable cobblerd
systemctl enable dhcpd
systemctl stop firewalld.service #关闭防火墙
setenforce 0 #关闭SElinux

七、检查cobbler配置,而后逐一按提示解决

 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 : change 'disable' to 'no' in /etc/xinetd.d/tftp
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 : comment out 'dists' on /etc/debmirror.conf for proper debian support
6 : comment out 'arches' on /etc/debmirror.conf for proper debian support
7 : 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
8: fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.

以上各问题解决方法

1)编辑/etc/cobbler/settings文件,找到server选项,修改为提供服务的ip地址,即本机ip,不能是127.0.0.1

2)编辑/etc/cobbler/settings文件,找到next_server选项,修改为本机的ip地址,也不能是127.0.0.1

方法1:

 sed -i 's#^server: 127.0.0.1#server: 192.168.50.101#' /etc/cobbler/settings
2 sed -i 's#^next_server: 127.0.0.1#next_server: 192.168.50.101#' /etc/cobbler/settings

方法2:

 vim /etc/cobbler/settings

.

3)编辑/etc/xinetd/tftp文件,将文件中的disable字段的配置由yes改为no,并启动xinetd服务

 vim /etc/xinetd.d/tftp  #
systemctl start xinetd.service #启动xinetd服务

4)执行“cobbler get-loaders”命令即可,即下载引导操作系统,需要几分钟

 cobbler get-loaders

5)注释/etc/debmirror.conf文件中的@dists="sid";一行

 sed -i 's/@dists="sid";/#@dists="sid";/' /etc/debmirror.conf

6)注释/etc/debmirror.conf文件中的@arches="i386";一行

 sed -i 's/@arches="i386";/#@arches="i386";/' /etc/debmirror.conf

7)设置新系统默认的root密码,执行“openssl passwd -1 -salt $(openssl rand -hex 4)”生成密码,并用其替换/etc/cobbler/settings文件中default_password_crypted参数的值;

8)安装相应的程序包

 yum install fence-agents

八、重启cobbler并同步不检查

 systemctl restart cobblerd
cobbler sync
cobbler check

显示No configuration problems found. All systems go.(没有找到配置问题,一切正常)

九、通过cobbler来管理DHCP

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

十、配置DHCP服务

 vi /etc/cobbler/dhcp.template

重启cobbler服务并同步配置

systemctl restart cobblerd.service
systemctl restart dhcpd.service #此服务有可能无法重启可忽略
systemctl restart httpd.service
systemctl restart xinetd.service systemctl restart rsync.service
cobbler sync

十一、挂载导入镜像

将镜像文件挂载到服务器上

方法1:直接将镜像文件拷贝至root目录下

1 mount -r CentOS-7-x86_64-Minimal-1804.iso /mnt/CentOS-7-x86_64/

方法2:将光驱中的内容进行挂载

1)设置CD/DVD设备状态勾选已连接

2)使用df -h命令查看光盘是否挂载,即是否有/dev/sr*的盘符

 umount  /dev/sr1 #先卸载
mkdir /mnt/ #创建cdrom挂载点
mount /dev/sr1 /mnt/ #将光盘挂载到刚才创建的cdrom
df-h #查看当前挂载

导入ISO镜像文件

使用cobbler的import命令从ISO安装镜像中导入安装所需要的程序包。数据文件较大,需等待。

命令格式;cobbler import --path=镜像路径 --name=安装引导名 --arch=32位或64位

--path表示镜像所挂载的目录

--name表示为安装源定义的名字

--arch表示指定安装源是32位还是64位,目前支持的选项:x86,x86_64,ia64.

1 cobbler import --path=/mnt/CentOS-7-x86_64/ --name=CentOS-7.5-x86_64 --arch=x86_64

cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间,如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。

导入镜像后可通过cobbler list来查看导入的结果,

其中distro表示一个发行版,

profile表示kickstart配置文件

此时tftp服务器的共享目录也有了启动linux所需的文件,因为从OS安装光盘导入时,同时会把内核vmlinuz和初始化镜像文件initrd.img复制到tftp共享目录下,

可以使用tree命令查看(系统默认没有这个命令,需要单独安装相应软件包)

十二、验证cobbler自动装机

新建一台虚拟机PC进行验证,不使用镜像,网络连接方式选择NAT,注意内存选择2G以上(否则会因内存不够而安装失败)。然后开启新建的虚拟机会出现cobbler画面,选择第二种回车继续等待。

如果是物理机需要保证和服务器网络畅通

等待一会系统就会自动安装好了,案后输入root用户和之前设好的密码进行登录

十三、自定义KickStart文件

在上面的实验中,我们没有进行任何的安装配置,全部都是Cobbler帮助我们完成的。可是在实际生产中,我们对每台主机的硬盘分区,安装的软件都有相应的要求,所以我们需要自己来定制KickStart文件,这样我们就能够定制地批量安装操作系统了。
我们就利用实验环境(CentOS 7.3)中的KickStart文件来定制我们自己的KickStart文件。

1)Cobbler的ks.cfg文件存放位置

cd /var/lib/cobbler/kickstarts/ && ls #自带很多
default.ks install_profiles sample_autoyast.xml sample_esxi4.ks sample_old.seed
esxi4-ks.cfg legacy.ks sample_end.ks(默认使用的ks文件) sample_esxi5.ks sample.seed
esxi5-ks.cfg pxerescue.ks sample_esx4.ks sample.ks

提供两种配置ks的方法:

方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)

方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL5/6/7)

# yum install system-config-kickstart #安装

# yum groupinstall "X Window System" #安装X Window图形界面

# system-config-kickstart #运行kickstart配置

#笔者不喜欢使用Linux运行图形化界面,浪费资源,有兴趣的伙伴可以研究一下

实例一(CentOS7.4 ks)

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# Root password
rootpw --iscrypted $1$ljohn$yBMDpKkntQ9jfV1ZAWKpU1
# Use network installation
url --url="http://192.168.137.38/cobbler/ks_mirror/CentOS-7.4-x86_64/"
# System language
lang en_US.UTF-8
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System services
services --disabled="chronyd"
ignoredisk --only-use=sda
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
#network --bootproto=static --device=eth0 --gateway=192.168.137.1 --ip=192.168.137.40 --nameserver=8.8.8.8 --netmask=255.255.255.0 --activate
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="xfs" --size=1024
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
%packages
@^minimal
@core
%end

实例二(CentOS6.8 ks):

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.137.38/cobbler/ks_mirror/CentOS-6.8-x86_64/"
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
# Root password
rootpw --iscrypted $1$ljohn$yBMDpKkntQ9jfV1ZAWKpU1
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US.UTF-8
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
#logging --level=info
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
#network --bootproto=dhcp --device=eth1 --onboot=on
# System bootloader configuration
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=500
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1
%packages --nobase
@core
%end

这两个实例安装包都使用了core的最小化版本安装,可以大大缩短系统部署时间,毕竟时间就是金钱。如果有需要的,可以在packages后面添加一些常用的工具,这里不再赘述。

2)关联镜像与kickstart 文件,修改kickstart文件为自定义的CentOS-7.5-x86_64.cfg

 # --name 我们需要添加的启动菜单的名字
# --distro 我们自定制的ks文件关联的yum库
# --kickstart 我们自定制的ks文件的路径
cobbler profile edit --name=CentOS-7.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.5-x86_64.cfg
# 查看Cobbler中现在还有多少个启动项
[root@localhost kickstarts]cobbler profile list
centos6.9-x86_64
centos7.3-x86_64
centos7.3-x86_64-desktop

cobbler profile report --name CentOS-7.4-x86_64#查看镜像是否存在,
cobbler profile report --name CentOS-6.8-x86_64
cobbler profile edit --name=CentOS-7.4-x86_64 --kopts='net.ifnames=0 biosdevname=0'#这里还原centos7网卡名为“eth0”
cobbler profile edit --name=CentOS-7.4-x86_64 --distro=CentOS-7.4-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.4-x86_64.cfg #关联ks文件与对应的CentOS7.4镜像
cobbler profile edit --name=CentOS-6.8-x86_64 --distro=CentOS-6.8-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.8-x86_64.cfg
service cobbler sync #与cobbler sync作用相同,同步配置,每次对cobbler更改都要执行同步

十四、Cobbler的Web管理

cobbler web支持多种认证方式,下面介绍两种用户认证登录cobbler web的方式

1)使用cobbler默认的authn_configfile模块认证方式

cobbler web界面的身份认证和授权配置位于文件/etc/cobbler/modules.conf中,cobbler默认这种方式的认证

可以直接使用htdigest命令添加cobbler用户和密码

然后重启cobbler服务,apache服务即可

2)使用authn_pam模块认证方式

首先需要在配置文件/etc/cobbler/modules.conf里修改认证方式

然后添加系统用户

之后在文件/etc/cobbler/users.conf中,将新添加的webuser用户添加到admins组中,该组具有完整访问权限

配置完成后重启cobbler,apache服务,就可以用webuser的身份登录到cobbler web页面了。

使用https://192.168.195.128/cobbler_web地址访问cobbler web页面,使用设定的用户和密码就可以进行登录,在web页面进行相关配置。

附录1:错误汇总

1)Cobbler 登录web界面提示报错“Internal Server Error”

有可能是pythone-django版本问题

#下载pip.py
wget https://bootstrap.pypa.io/get-pip.py #调用本地python运行pip.py脚本
python get-pip.py #安装pip
pip install Django==1.8.9 #查看pip版本号
python -c "import django; print(django.get_version())" #重启httpd
systemctl restart httpd

完美解决

附录2:cobbler命令

# cobbler
usage
=====
cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ...
[add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]
Cobbler 命令介绍:
cobbler get-loaders #加载部分缺失的网络boot-loaders
cobbler check #检查cobbler配置
cobbler sync #同步配置到dhcp pxe和数据目录
cobbler list #列出所有的cobbler元素
cobbler import #导入安装的系统光盘镜像
cobbler report #列出各元素的详细信息
cobbler distro #查看导入的发行版系统信息
cobbler profile #查看配置信息
cobbler system #查看添加的系统信息
cobbler reposync #同步yum仓库到本地
cobbler signature update
cobbler --help #获得cobbler的帮助
cobbler distro --help #获得cobbler子命令的帮助
获取帮助:
#cobbler import --help
Usage: cobbler [options]
Options:
-h, --help show this help message and exit
--arch=ARCH OS architecture being imported
--breed=BREED the breed being imported
--os-version=OS_VERSION
the version being imported
--path=PATH local path or rsync location
--name=NAME name, ex 'RHEL-5'
--available-as=AVAILABLE_AS
tree is here, don't mirror
--kickstart=KICKSTART_FILE
assign this kickstart file
--rsync-flags=RSYNC_FLAGS
pass additional flags to rsync

Cobbler图文详解安装及遇到的问题说明的更多相关文章

  1. 图文详解安装PHP运行环境

    一.什么是PHP运行环境 能够理解人与计算机交流时语言软件,通常指解释PHP编程语言的软件. 例如: PHP(代码) 需要PHP超文本预编译器(软件). Java需要JVM虚拟机 二.安装PHP运行环 ...

  2. 学习笔记--Grunt、安装、图文详解

    学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...

  3. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  4. zookeeper的安装(图文详解。。。来点击哦!)

    zookeeper的安装(图文详解...来点击哦!) 一.服务器的配置 三台服务器: 192.168.83.133   sunshine 192.168.83.134   sunshineMin 19 ...

  5. Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...

  6. Hadoop集群搭建安装过程(二)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(二)(配置SSH免密登录)(图文详解---尽情点击!!!) 一.配置ssh无密码访问 ®生成公钥密钥对 1.在每个节点上分别执行: ssh-keygen -t rsa(一 ...

  7. Linux虚拟机安装(CentOS 6.5,图文详解,需要自查)

    Linux虚拟机的安装(图文详解) 下篇会接续Hadoop集群安装(以此为基础) 一.安装准备 VMWorkstation.linux系统镜像(以下以CentOS6.5为例) 二.安装过程详解 关闭防 ...

  8. Python安装、配置图文详解(转载)

    Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...

  9. 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单

    写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy….)wisted, zope interf ...

随机推荐

  1. python学习笔记2-tuple

    tuple: #元组也是List,但是值不能变 a=(') print(a[1]) mysql=(',''root','123456') print(mysql.count('root')) #例子 ...

  2. maven本地库更新失败

    当我们在项目中遇到有些依赖在第三方仓库特别是maven仓库里面没有的时候我们会怎么办? 答案1.通过私服,上传到公司的一个私服上然后进行下载 答案2.通过本地安装,这样非常方面进行使用,今天我们就采用 ...

  3. Redis实战(四)CentOS 7上Redis哨兵

    什么是哨兵 顾名思义,哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程.它的功能有2个: 1. 监控主数据库和从数据库是否运行正常: 2. 主数据出现故障后自动将从数据库转化为主数据 ...

  4. [转载]strtok函数和strtok_r函数

    1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct person{     char name[25];     char sex[1 ...

  5. JQuery的选择器对控件ID含有特殊字符的解决方法-涨姿势了!

    1.jquery类库在我们实际项目中用的很多,大家经常需要根据控件的id,获取对应的html元素. 但是:当id含有特殊字符的时候,是不能选中的. 2. 自己简单的测试了下,jquery的id选择器只 ...

  6. HDFS的java接口——简化HDFS文件系统操作

    今天闲来无事,于是把HDFS的基本操作用java写出简化程序出来给大家一些小小帮助! package com.quanttech; import org.apache.hadoop.conf.Conf ...

  7. 差分约束系统+spfa(B - World Exhibition HDU - 3592 )

    题目链接:https://cn.vjudge.net/contest/276233#problem/B 思路和上一个一样,不过注意点有两个,第一,对dis数组进行初始化的时候,应该初始化成ox3f3f ...

  8. sqlplus设置长度

    1.set linesize   100 2.col  XX format  a30 3.col  XXX format 9,999,999,999 3.set heading off  表头不显示

  9. Memcached服务器UDP反射放大攻击

    1.前言 2月28日,Memcache服务器被曝出存在UDP反射放大攻击漏洞.攻击者可利用这个漏洞来发起大规模的DDoS攻击,从而影响网络正常运行.漏洞的形成原因为Memcache 服务器UDP 协议 ...

  10. ARM Linux 3.x的设备树(Device Tree)【转】

    转自:http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1.  ...