CentOS6.5安装和配置Cobbler 2.6实现自动化无人値守网络批量安装部署Linux系统

目录

Cobbler介绍

Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。

Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

Cobbler提供以下服务集成:
PXE服务支持
DHCP服务管理
DNS服务管理(可选bind,dnsmasq)
电源管理
Kickstart服务支持
yum仓库管理
TFTP (PXE启动时需要)
Apache(提供kickstart 的安装源,并提供定制化的kickstart配置)

同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统。

cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。

通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。

常用架构如下图:

2

Cobbler的工作流程

Cobbler工作流程:

3

综上所述,一个理想的安装环境是:

4

Cobbler实验环境及目的

Cobbler服务器系统:CentOS 6.5 64位
IP地址:192.168.21.128
需要安装部署的Linux系统:
eth0(第一块网卡,用于外网)IP地址段:192.168.21.160-192.168.21.200
eth1(第二块网卡,用于内网)IP地址段:10.0.0.160-10.0.0.200

子网掩码:255.255.255.0
网关:192.168.21.2
DNS:8.8.8.8 8.8.4.4
所有服务器均支持PXE网络启动
实现目的:通过配置Cobbler服务器,全自动批量安装部署Linux系统

Cobbler的安装部署配置

Cobbler安装环境准备

使用前提

1、你有一个DVD或ISO文件,您的操作系统的分布。
2、服务器有足够的本地磁盘的可用空间在/var/www/cobbler 解压缩DVD/ISO。
3、服务器和客户端都有一个共同的IP网络。
4、这个网络上的DHCP服务器是唯一的实例。
5、在此网络上的客户端是支持PXE网络启动。

定义Yum源

对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.163.com或mirrors.sohu.com
相关配置文件: /etc/yum.repos.d/CentOS-Base.repo
采用网易的源

cd /etc/yum.repos.d/
mkdir backup
mv *.repo ./backup
wget -c -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
yum list

安装epel源

Cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新,当前最新版本为6-8

Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/5/i386/epel-release-5-4.noarch.rpm

Centos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm

Centos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

Centos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装:
# rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'
# yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)
# yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)
确定是否正确安装:

yum list|grep -E "^epel"
epel-release.noarch                       6-8                           installed

也可以用这个命令: rpm -qa |grep -i epel

关闭selinux和防火墙

关闭SELINUX

sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 # 使配置立即生效
这个需要重启机器才能生效,所以建议修改完重启
[root@cobbler ~]# sestatus
SELinux status:                 disabled

关闭防火墙
Cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop

关闭防火墙和 SELinux 后重启系统
# reboot

Cobbler安装配置

安装Cobbler

yum安装cobbler包

yum -y install cobbler

确认是否正确安装 :

rpm -qa |grep -i cobbler

安装cobbler相关的包
额外需要的服务还有httpd rsync tftp-server xinetd,如果系统没有装上的话,可以执行以下命令安装。

yum  install tftp-server xinetd  dhcp  httpd  rsync

安装运行cobbler需要的软件包

yum  install  pykickstart  debmirror  python-ctypes   cman

根据需要来,如果要部署 debian/ubuntu 系统需要 debmirror 软件包;想使用电源管理功能的话需要安装 cman 或fence-agents;我的测试环境不需要bind,就没有安装

打开服务需要使用的端口
udp 69 tftp
udp 53 dns
tcp 80 443 web
dhcp 67 68
直接关闭防火墙(参考上文关闭防火墙的部分)或设置iptables,直接修改/etc/sysconfig/iptables

[root@localhost ~]# cat /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# DNS - TCP/UDP
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
# DHCP
-A INPUT -m state --state NEW -m udp -p udp --dport 68 -j ACCEPT
# TFTP - TCP/UDP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 69 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT
# NTP
-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
# HTTP/HTTPS
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# Syslog for cobbler
-A INPUT -m state --state NEW -m udp -p udp --dport 25150 -j ACCEPT
# Koan XMLRPC ports
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25151 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25152 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

/etc/init.d/iptables restart # 最后重启防火墙使配置生效

启动Cobbler服务

/etc/init.d/cobblerd start

可能会缺少的包:
请注意察看 cobbler服务启动的报错信息,我第一次安装时候就遇到有关ctypes的报错,只能手动安装:

yum -y install python-ctypes

配置Cobbler

设置http服务

配置httpd配置文件

# vi /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80

启用wsgi模块
需要确认mod_wsgi已经正确安装,否则需要手动安装

yum -y install mod_wsgi

启用wsgi模块只需要取消 /etc/httpd/conf.d/wsgi.conf 文件中
LoadModule wsgi_module modules/mod_wsgi.so 行的注释

sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf

配置tftp与rsync

修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,将 disable = yes 修改为 disable = no来开启tftp与rsync服务的开机启动

sed -i '/disable/c disable = no' /etc/xinetd.d/tftp
sed -i -e 's/= yes/= no/g' /etc/xinetd.d/rsync
service xinetd restart

配置Cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。
根据需要修改 cobbler主配置文件: /etc/cobbler/settings

Server 和 Next_Server

server 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP。

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

next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP

sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings
防止误重装系统

pxe安装 只允许一次,防止误操作 ( 在正式环境有用。实际测试来看,这个功能可以屏蔽掉 )

sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings
生成Cobbler安装系统root初始密码

(1)这里生成密钥和配置默认密钥。这个设置只针对centos有效。用 openssl 生成一串密码后加入到 cobbler 的配置文件(/etc/cobbler/settings)里,替换 default_password_crypted 字段

# openssl passwd -1 -salt 'random-phrase-here' '111111'
$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z.

openssl passwd -1 -salt '任间字符' '密码' (是数字1 不是字母L)
这个命令的用法,任意字符可以随便写,这个密码就是安装完系统root的密码了。

(2) 将上面的加密串加入cobbler配置文件中。

# vi /etc/cobbler/settings
# 修改为如下配置
default_password_crypted: "$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z."
Cobbler管理rsync

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

sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
Cobbler管理dhcp

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理

配置dhcp服务
首先修改cobbler配置,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings
manage_dhcp: 1 (注:默认为0 ,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync])
也可用命令修改:

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

接下来修改/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保DHCP分配的地址和Cobbler在同一网段
对于此文件,本例中只需要修改如下部分

# cp /etc/cobbler/dhcp.template{,.bak}
# vi /etc/cobbler/dhcp.template 

# 需要修改192.168.0.0为自己网段
subnet 192.168.21.0 netmask 255.255.255.0 {
	# 修改自己的路由
     option routers             192.168.21.1;
	 # 域名服务器地址
     option domain-name-servers 8.8.8.8;
	 # 子网掩码
     option subnet-mask         255.255.255.0;
	 # 设置dhcp服务器IP地址租用的范围
     range dynamic-bootp        192.168.21.160 192.168.21.200;
     filename                   "/pxelinux.0";
     default-lease-time         21600; #缺省租约时间
     max-lease-time             43200; #最大租约时间  
     next-server                $next_server; #指定引导服务器  
}

其余部分维持默认值即可。

如果是多网卡需要指定DHCP服务的网络接口

#vi /etc/sysconfig/dhcpd
修改内容如下:
#Command line options here DHCPDARGS=eth0
DHCPDARGS=eth0

# 测试dhcp服务器配置是否正确
# dhcpd # 在执行cobbler sync 之后测试才有效,因为没同步之前文件/etc/dhcp/dhcpd.conf还没有被同步修改
设置debmirror

注释掉@dists和@arches的行

sed -i -e 's|@dists=.*|#@dists=|'  /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|'  /etc/debmirror.conf
下载引导操作系统文件

加载部分缺失的网络boot-loaders

cobbler get-loaders
检查Cobbler配置
cobbler check

出现下面的提示,SELinux和防火墙前面已经设置过了,不用理会

The following are potential configuration items that you may want to fix:
1 : 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
2 : since iptables may be running, ensure 69, 80/443, and 25151 are unblocked
Restart cobblerd and then run 'cobbler sync' to apply changes

更多详情请看文后“可能遇到的错误”部分。

重启cobbler和更新相关配置

重启服务

/etc/init.d/cobblerd restart

同步最新cobbler配置,它会根据配置自动修改dhcp,bind 等服务,因此我称之为容器的原因。

cobbler sync # 同步配置文件到dhcp服务器
启动相关服务并设置开机启动
chkconfig httpd on 
chkconfig xinetd on 
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart

设置Cobbler相关服务启动脚本

cat < < "EOF" > /etc/rc.d/init.d/cobbler

#!/bin/sh
# chkconfig: - 80 90
# description:cobbler

case $1 in

start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;

stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;

restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;

status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;

sync)
cobbler sync
;;
*)

echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&1 >/dev/null &
;;
esac
EOF

chmod +x /etc/rc.d/init.d/cobbler  #添加脚本执行权限
chkconfig cobbler on  #添加开机启动
service cobbler  restart  #重启cobbler

Cobbler的使用

挂载系统安装镜像到http服务器站点目录

1、上传ISO镜像至服务器/usr/local/src/目录
2、创建文件夹

mkdir -p /var/www/html/os/CentOS-6.5-x86_64  #创建挂载目录

3、挂载ISO镜像到/var/www/html/os/CentOS-6.5-x86_64目录

mount -t iso9660 -o loop /usr/local/src/CentOS-6.5-x86_64-bin-DVD1.iso  /var/www/html/os/CentOS-6.5-x86_64

vi /etc/fstab   #添加以下代码。实现开机自动挂载
/usr/local/src/CentOS-6.5-x86_64-bin-DVD1.iso   /var/www/html/os/CentOS-6.5-x86_64   iso9660    defaults,ro,loop  0 0

备注:iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64
重复上面的操作,把自己需要安装的CentOS系统镜像文件都挂载到/var/www/html/os/目录下
例如:
CentOS-5.10-x86_64-bin-DVD-1of2.iso
CentOS-7.0-1406-x86_64-DVD.iso

导入系统镜像到Cobbler

从DVD中导入客户端的OS。这将自动设置了“x86_64”,并将其命名为CentOS-6.5-x86_64。{注:这需要一点时间,不要急。可查看/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/目录文件生成情况。}

cobbler import --path=/var/www/html/os/CentOS-6.5-x86_64  --name=CentOS-6.5-x86_64  --arch=x86_64  #导入系统镜像文件,需要一段时间

命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明: 
--name    为安装源定义一个名字
--arch    指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64

注意1: 这个安装源的唯一标示 就是根据这两个参数来定义
本例导入成功后,安装源的唯一标示就是:centos6.5-x86_64 ,如果重复,系统会提示导入失败,其它命令可通过cobbler --help来进行查看。如果需要更多的参数定制,也可以查看官方文档: man cobbler ,然后查找 import 的配置,可以使用另外一个命令: cobbler distro。

从上面显示信息所知,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.5-x86_64目录下。同时会创建一个名字为centos6.5-x86_64的一个发布版本,以及一个名字为centos6.5-x86_64的profile文件。

注意2:/var/www/cobbler 目录必须具有足够容纳 Linux安装文件的空间。如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。
例如:

# ln -s /home/cobbler /var/www

导入时间较长, 请耐心等待!!!在正常导完之后会给出如下提示:

……(省略)
associating kickstarts
*** TASK COMPLETE ***

有时可能会出现卡住的现象,如果导入时间过长,可通过比对文件大小来确定是否已经正常导入

比对文件大小的方法

[root@cobbler ~]# du -sh /var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/
3.9G/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/

[root@cobbler ~]# du -sh /var/www/html/os/CentOS-6.5-x86_64
4.1G/system/CentOS-6.5-x86_64/

如果上述两个命令执行过显示的结果出入较大, 则可能文件没有正常导入
在重新导入之前最好先把之前的内容删除再导入
cobbler [distro] remove --name=[CentOS-6.5-x86_64] 方括号中的内容根据自己的情况来填写 , 更多命令通过cobbler --help 来查看
剩下其它系统导入方法类似,只是名字和路径更改下即可。重复上面的操作,把其他的系统镜像文件导入到Cobbler导入完成之后,可通过 cobbler list 来查看导入的结果。

创建kickstarts自动安装脚本(For Centos/RHEL)

注意:这是关键步骤之一
由于需要安装的操作系统发行厂商不同,因此KS文件的写法要求,也不一而足。
本文只讨论 CentOs/RHEL 系列的 KS配置

另外:操作系统 版本不同,KS也存在一定的差异,比如CentOS5 ,和CentOS6下就有不同,切记!

官网的文档在此:
CentOS5 的 (网上大多是这个系列的) : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html

CentOS6 的 (能看到的配置案例很少) : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

默认kickstart文件是/var/lib/cobbler/kickstarts/sample.ks,需要手动为每个发行版单独指定,或单独修改。
自定义ks文件,下面是我自己定义的一个centos6.5模板

cd /var/lib/cobbler/kickstarts  #进入默认Kickstart模板目录
vi /var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks  #创建CentOS-6.5-x86_64安装脚本

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
#Partition information
part swap --fstype swap --size=24000
part /boot --fstype ext4 --size=200
part / --fstype ext4 --size=15000
part /opt --fstype ext4 --size=100 --grow
  
# Use text mode install
text
  
# key
key --skip
# Firewall configuration
firewall --disable
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
#network --bootproto=dhcp   --device=em1
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $default_password_crypted
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone   Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
  
%packages
@ base
@ core
e2fsprogs
-ckermit
grub
-bluez-pin
-firstboot
-rhgb
-zsh
kernel-devel
-OpenIPMI-tools
-xdelta
net-snmp
sysstat
lslk
-nmap
kernel
-synaptics
control-center
libaio
compat-libstdc++-33
subversion
  
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
  
%post
# Set default language
[ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ksbak
cat < < EOF > /etc/sysconfig/i18n
LANG="en_US"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
EOF
  
## Disable ipv6
#/bin/cat >> /etc/modprobe.conf < < EOF #alias net-pf-10 off #alias ipv6 off #EOF /bin/sed -i 's/NETWORKING_IPV6.*$/NETWORKING_IPV6=no/' /etc/sysconfig/network    #disable ctrl-alt-del sed -i 's/^ca/#ca/' /etc/inittab # Set default run level to 3 sed -i  's/^id:5/id:3/'  /etc/inittab    cat >> /etc/yum.repos.d/163.repo < < EOF [base] name=CentOS-$releasever - Base - 163.com baseurl=http://mirrors.163.com/centos/6/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6 EOF       # Tune snmp settings [ -d /etc/snmp ] || mkdir /etc/snmp if [ -f /etc/snmp/snmpd.conf ]; then   cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.ksbak fi    # stop unuseful services # nsrvs is the list for stop for i in `ls /etc/rc3.d/S*`   do       CURSRV=`echo $i|cut -c 15-`   echo $CURSRV   case $CURSRV in           crond | irqbalance | network |  sshd | syslog )       echo "Base services, Skip!"       ;;       *)           echo "change $CURSRV to off"           chkconfig --level 235 $CURSRV off           service $CURSRV stop       ;;   esac   done         echo "kernel.core_uses_pid = 1" > /etc/sysctl.conf
echo "kernel.msgmax = 65536" >> /etc/sysctl.conf
echo "kernel.msgmnb = 65536" >> /etc/sysctl.conf
echo "kernel.shmall = 4294967296" >> /etc/sysctl.conf
echo "kernel.shmmax = 68719476736" >> /etc/sysctl.conf
echo "kernel.sysrq = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.accept_source_route = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.rp_filter = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
echo "net.ipv4.tcp_retrans_collapse = 0" >> /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_tw_buckets = 6000 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_sack = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_window_scaling = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4096 87380 4194304  " >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 16384 4194304  " >> /etc/sysctl.conf
echo "net.core.wmem_default = 8388608 " >> /etc/sysctl.conf
echo "net.core.rmem_default = 8388608 " >> /etc/sysctl.conf
echo "net.core.rmem_max = 16777216 " >> /etc/sysctl.conf
echo "net.core.wmem_max = 16777216 " >> /etc/sysctl.conf
echo "net.core.netdev_max_backlog = 262144 " >> /etc/sysctl.conf
echo "net.core.somaxconn = 262144 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_orphans = 3276800 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_syn_backlog = 262144 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_timestamps = 0 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_synack_retries = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_syn_retries = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_mem = 94500000 915000000 927000000  " >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 1 " >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time = 1200 " >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65535 " >> /etc/sysctl.conf
  
  
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf
  
# configuratioin of  the nameserver
#cat > /etc/resolv.conf < < EOF
#search localdomain
#nameserver 8.8.8.8
#EOF
#add a default gw
#route add -net  10.0.0.0/16  dev eth0 gw 192.168.1.140
 
# Execute external scripts
cd /root
wget http://192.168.21.128/cobbler/ks_mirror/config/autoip.sh
sh /root/autoip.sh
  
chmod 600 /etc/passwd  
chmod 600 /etc/shadow  
chmod 600 /etc/group  
chmod 600 /etc/gshadow

:wq! #保存退出
vi /var/www/cobbler/ks_mirror/config/autoip.sh  #创建脚本,自动设置Linux系统静态IP地址、DNS、网关、计算机名称

#!/bin/sh
ROUTE=$(route -n|grep "^0.0.0.0"|awk '{print $2}')
BROADCAST=$(/sbin/ifconfig eth0|grep -i bcast|awk '{print $3}'|awk -F":" '{print $2}')
HWADDR=$(/sbin/ifconfig eth0|grep -i HWaddr|awk '{print $5}')
IPADDR=$(/sbin/ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F":" '{print $2}')
NETMASK=$(/sbin/ifconfig eth0|grep "inet addr"|awk '{print $4}'|awk -F":" '{print $2}')
cat >/etc/sysconfig/network-scripts/ifcfg-eth0< /etc/sysconfig/network-scripts/ifcfg-eth1< /etc/sysconfig/network< > /etc/hosts
hostname=$HOSTNAME
echo "nameserver  8.8.8.8"  > /etc/resolv.conf
echo "nameserver  8.8.4.4" >> /etc/resolv.conf

:wq!  #保存退出

注意:kickstarts自动安装脚本中不允许有中文(注释有中文也不行),否则会报错

修改profile指定新的KS启动文件

按照操作系统版本分别关联系统镜像文件和kickstart自动安装文件
在第一次导入系统镜像时,cobbler会给安装镜像指定一个默认的kickstart自动安装文件

例如:CentOS-6.5-x86_64版本的kickstart自动安装文件为:/var/lib/cobbler/kickstarts/sample.ks

cobbler profile report --name  CentOS-6.5-x86_64  #查看profile设置

cobbler distro report --name CentOS-6.5-x86_64 #查看安装镜像文件信息

cobbler profile remove --name=CentOS-6.5-x86_64  #移除profile

cobbler profile add --name=CentOS-6.5-x86_64 --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks  #添加

cobbler profile edit --name=CentOS-6.5-x86_64 --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks  #编辑

命令:cobbler profile add|edit|remove --name=安装引导名 --distro=系统镜像名 --kickstart=kickstart自动安装文件路径
参数说明:
--name:自定义的安装引导名,注意不能重复
--distro:系统安装镜像名,用cobbler distro list可以查看
--kickstart:与系统镜像文件相关联的kickstart自动安装文件(此文件必须预先准备好 )
更多命令参数可执行cobbler --help查看

再次执行cobbler check 检查下配置

#查看Cobbler列表

cobbler list
cobbler report
cobbler profile report
cobbler distro list # 查看导入列表

#通过profile查找对应的kickstart自动安装文件

例如:
ksfile=$( cobbler profile report --name  CentOS-6.5-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );cat $ksfile;

重复上面的操作,把其他的系统镜像文件和kickstart自动安装文件关联起来

注意:
1、kickstart自动安装文件需要预先配置好
2、每次修改完配置文件,需要执行一次同步操作:cobbler sync 配置才能生效
3、kickstart自动安装文件可以用工具生成(需要用到图形界面操作)

yum  install system-config-kickstart #安装
yum groupinstall "X Window System" #安装X Window图形界面
system-config-kickstart #运行kickstart配置
service  cobbler  sync  #与cobbler sync作用相同
service  cobbler  restart  #重启cobbler

为Cobbler添加RPM仓库

命令行下操作,添加epel和epel-test的repo
把repo添加到profle

cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/6/x86_64/ --name=epel6-x86_64 --arch=x86_64 --breed=yum
cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/testing/6/x86_64/ --name=epel6-x86_64-testing --arch=x86_64 --breed=yum

这个只是对centos有效,如果你吧repo添加到profle,他会自动添加到节点上的repo上,指向内网,非常方便。

cobbler profile edit --name=CentOS6.5-x86_64 --repos="epel6-x86_64 epel6-x86_64-testing"

这个时候,就需要同步epel的源到本地,考验你的网络速度

cobbler reposync

也可以通过设置--mirror-locally=0不下载到本地,而通过kickstart server去仓库下载rpm包。

我内网已经有,所以就直接同步就可以。

rsync -avlH root@10.1.199.11:/var/www/cobbler/repo_mirror/ /var/www/cobbler/repo_mirror

另外还有两个源,你可以考虑使用 centos update和centos plus

cobbler repo add --name=Centos6-CENTOSPLUS --mirror=http://mirrors.ustc.edu.cn/centos/6/centosplus/x86_64/ --arch=x86_64 --breed=yum
cobbler repo add --name=Centos6-UPDATES --mirror=http://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ --arch=x86_64 --breed=yum

同步Cobbler配置

获取上述所有配置的cobbler(包括启动DHCP等)

cobbler sync

cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。
注:每次更改Kickstart 配置文件,都需要使用cobbler sync重新同步所有配置

到目前为止,全部的准备工作已经算全部完成,接下来要做的就是启动服务了。在之前的调试过程中,很多服务已经启动过了,这里只需要启动xinetd服务即可:

/etc/init.d/xinetd start

至此,就可以使用虚拟机来测试Cobbler安装了。

添加指定客户机系统配置到Cobbler

1. 指定一个网段使用特定的装机配置

cobbler system add --name=test_000 --ip=192.168.1.0/24 --profile=CentOS-5.9-x86_64

2. 添加一个指定服务器的装机配置
指定服务器的mac地址,并设置好主机名、IP地址等信息,需要提示知道服务器MAC地址,根据MAC应用到具体机器上。

还可以指定ks参数。--kickstart=/var/lib/cobbler/kickstarts/webserver.ks

cobbler system add --name=test_001 --hostname=test_001 --mac=00:0C:29:E3:81:32 --interface=eth0 --ip-address=192.168.1.123 --subnet=255.255.255.0 --gateway=192.168.1.1 --static=1 --profile=Centos-5.9-x86_64

3. 修改system配置
机器IP地址变更为192.168.21.118

cobbler system add --name=test_001 --ip=192.168.21.118

变更system配置名称

cobbler system rename --name=test001 --newname=abc

4. 删除system配置
需要删除的profile名称为test_001

cobbler system remove --name=test_001

5. 查看定义的系统列表

cobbler system list
test_001

设置好后,需要执行排错和同步

cobbler check
cobbler sync

Cobbler的Web管理界面的安装与配置

用web 界面进行管理Cobbler是一个非常简便的方法, 只需要安装cobbler_web 软件包即可
1.

yum  -y  install  cobbler_web

2. 设置cobbler web登陆,用户登陆密码
为cobbler添加cobbler用户,并设置密码

htdigest /etc/cobbler/users.digest "Cobbler" cobbler # 添加cobbler用户,提示输入2遍密码确认

3. 配置cobbler web 登录认证

vi /etc/cobbler/modules.conf
修改authentication 部分中的module,修改后如下:
module = authn_configfile # 修改认证方式为密码文件类型
命令自动修改
sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf

4. 同步cobbler

# cobbler sync    /输出*** TASK COMPLETE *** 表示配置无错误

5. 重启cobbler 与http

# /etc/init.d/httpd restart
# /etc/init.d/cobblerd restart

6. 访问web页面: https://192.168.21.128/cobbler_web 使用刚才创建的用户登录,密码就是上面设置的。

5

cobbler的使用,主要是集中在上面几个菜单里。这里简单解析一下。

Distros:这个其实就是发行版,类似Centos,ubuntu,suse。centos6.2和centos6.3,是不同的distros。假设我们导入一个centos6.3的iso,就是增加了一个Distros

Profiles:针对Distros的设置,一个distros,可以保护多个profiles,包括不同的kickstart文件。源的设置,都是在这里设置。

Systems:针对是每个节点,这里可以指定节点的ip地址,dns name,还有就是ipmi的用户名和密码,实现远程开机,关机。这是一个重点,日后对机器的操作,全部在sytem的菜单里操作。system里,会指定节点使用哪个profile。

Repos:这个主要是针对Redhat和Centos有效,可以管理源,并且这些源,可以在profile里添加。比较方便。需要注意的是,对于ubuntu的源,只能在kickstart 脚本里指定。

Images:这个我没用到,看说明主要是针对不能pxe的机器,采用iso启动。

Kicsstart Templates:这是核心,cobbler内置了几个ks文件,你如果导入一个centos,系统会默认关联一个ks文件,你不需要做任何设置,就可以把os自动装完。对于ubuntu,我们就需要单独创建一个preseed文件,这些文件可以通过web管理和修改。非常方便。

Snippets:这是cobbler的精华。一些常用的设置,写成一个模块,让ks文件调用。这样更加灵活。例如centos的网络固定IP地址的设置,就是通过这里实现。

使用web页面管理Cobbler

1:添加DVD源,
点击Importer DVD (先挂载镜像ISO),然后再Importer,点击run

6

2:Events观察日志
Tue Nov 19 08:11:54 2013 Sync complete log /complete表示完成:
3:Distros里面查看源
CentOS6.4-x86_64
4:Profiles里添加部署工程
选择Distros和ks文件位置,然后保存

7

5:客户端从网络启动后选择对应的工程文件开始自动部署

Cobbler测试安装

1. 为了增加装机的安全,可设置装机密码

openssl  passwd  -1  -salt  'root'  minunix
$1$root$oZ2U5GhxaJ1b4q4tpPQnE0
编辑pxedefault.template,加入密码部分
vim  /etc/cobbler/pxe/pxedefault.template
在TIMEOUT 上面加入一行
MENU MASTER PASSWD $1$root$oZ2U5GhxaJ1b4q4tpPQnE0
vim /etc/cobbler/pxe/pxeprofile.template
在LABEL 标签中加入一行 MENU PASSWD
修改完之后记得同步配置, cobbler check && cobbler sync

2. 自定义PXE 菜单TITLE
修改pxedefault.template 文件
修改MENU TITLE 后面的内容为自己想要的内容
eg: MENU TITLE MinUnix Install System| http://www.minunix.com
修改完之后记得同步配置, cobbler check && cobbler sync

3. 自定义安装系统
可以通过命令 cobbler system add 进行自定义安装某个版本的系统,
更多命令可通过cobbler system add --help 获得帮助

把需要安装系统的机器的bios设置为优先通过网络启动,然后重启机器,会看到一个启动界面,第一项默认是local,也就是说20秒如果不选择其它安装选项系统将正常启动,所以不用担心正常机器会受到影响。

首次安装操作系统

1、 将需要安装系统的服务器,以下简称客户端,放到和cobbler服务端同样的子网中。
2、 启动cobbler服务端上的cobblerd等相关服务。
3、 从PXE启动客户端主机。
(1) 客户端寻找设置DHCP。
(2) 客户端从PXE启动。
(3) 客户端进入cobbler profile选择界面,用户可以根据应用的不同,选择不同的cobbler配置文件。
在启动的时候选择PXE的模式。
8

然后就能看到下面的图示内容。虚拟机通过dhcp获得了122段的ip,然后通过tftp获得到pxe的启动文件。
9

下图是cobbler的pxe安装启动菜单,这里有我们刚刚创建好的CentOS版本。
10

系统安装使用默认的ks文件,经过短暂的等待,系统就自动被安装好了。
11

完成后自动重启,可以用先前定义好的密码("111111")登陆了.
安装好的系统如下图所示。
12

Linux系统重装测试

重装节点的系统,你可以在cobbler上设置,无论web还是命令行。不过你还有一种选择,就是直接在客户机上进行。
koan:kickstart over a network。就可以实现这个功能。需要在客户端安装koan,就可以。
要使用koan,有一个前提,就是需要你网络里有dhcp。koan安装系统不需要PXE支持,我觉得应该像Windos下通过ghost文件安装或还原系统,重启系统后就进入自己安装或还原状态。
在要重装的机器安装koan,需要先安装epel源

yum install koan

查看cobbler server上的配置文件,对于centos5.x 的系统koan不能采用yum安装,否则会因python版本过低而报错。

1,先确定当前linux系统中已经安装了koan软件。对于koan的安装可以放到ks文件中在安装系统的过程中完成安装操作。执行如下命令检查

# rpm -qa|grep koan
koan-2.0.11-2.el6.noarch

koan的命令使用,倒是比较简单:http://linux.die.net/man/1/koan

2,有了koan软件后可以执行如下操作,查看cobbler上的系统版本列表

# koan --server=192.168.21.128 --list=profiles
- looking for Cobbler at http://192.168.21.128/cobbler_api
centos-6.0-i386
centos-6.0-i386-kvm
centos6-vm
centos-6.0-x86_64

这里我们选择centos-6.0-i386来重装。可以执行如下命令

# koan --server=192.168.21.128 --profile=centos-6.0-i386 --replace-self
- looking for Cobbler at http://192.168.21.128/cobbler_api
- reading URL: http://192.168.21.128/cblr/svc/op/ks/profile/centos-6.0-i386
install_tree: http://192.168.21.128/cobbler/ks_mirror/centos-6.0-i386
downloading initrd initrd.img to /boot/initrd.img
url=http://192.168.21.128/cobbler/images/centos-6.0-i386/initrd.img
- reading URL: http://192.168.21.128/cobbler/images/centos-6.0-i386/initrd.img
downloading kernel vmlinuz to /boot/vmlinuz
url=http://192.168.21.128/cobbler/images/centos-6.0-i386/vmlinuz
- reading URL: http://192.168.21.128/cobbler/images/centos-6.0-i386/vmlinuz
- ['/sbin/grubby', '--add-kernel', '/boot/vmlinuz', '--initrd', '/boot/initrd.img', '--args', '"ks=http://192.168.21.128/cblr/svc/op/ks/profile/centos-6.0-i386 ksdevice=link kssendmac lang= text "', '--copy-default', '--make-default', '--title=kick1313675750']
- reboot to apply changes
# reboot

红色部分是手工输入的,从其他部分信息可以看到,koan帮我们做了很多本该人工操作的内容。

接下来看下重启的过程:
13

14

15

由此看到,系统已经进入重装的状态了。

安装使用心得

网上绝大部分资料中用到的IOS镜像都是DVD文件,我用minimal版本的iso也能成功安装。

在xen上测试安装客户机时,xen上新建的客户机网卡需要使用桥接模式,默认是NAT模式,如果是默认模式,则xen将会通过xen宿主机自带的DHCP服务器获取IP(192.168.122.*),从而导致通过网络安装失败。

以上所有内容虽然是在xen虚拟机上测试的,但完全可以直接使用于生产环境中,不会给现有环境带来任何影响。唯一需要做的就是规划好现有网络。

对于很多人担心的生成环境开启DHCP服务问题,我认为不会对现有生产环境产生任何影响,理由有二:

1、没有人会在装好系统后让网卡使用dhcp模式,通常都是为网卡配置静态ip

2、从测试过程中看到,就算是服务器默认设置成了通过pxe启动,而且也顺利的通过pxe启动了,但之后会收到cobbler的引导菜单。如果默认没有任何选择的话,20秒后会使用local方式加载,也就是启动硬盘上的系统。

综上所述,cobbler还是很安全的。

可能遇到的错误

cobbler check检查出现的错误

# cobbler check

可自动 检查安装环境是否满足cobbler服务的需要

执行完后可能出现下面的信息(按提示解决相关问题即可):

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 : you need to set some SELinux content rules to ensure cobbler works correctly in your SELinux environment, run the following:
      /usr/sbin/semanage fcontext -a -t public_content_t "/tftpboot/.*" && \
      /usr/sbin/semanage fcontext -a -t public_content_t "/var/www/cobbler/images/.*"
 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/tftp
 6 : change 'disable' to 'no' in /etc/xinetd.d/rsync
 7 : since iptables may be running, ensure 69, 80, and 25151 are unblocked
 8 : debmirror package is not installed, it will be required to manage debian deployments and repositories
 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.

上面这段信息大意就是:

1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,本实例配置ip为:192.168.21.128(此为cobbler服务地址)
问题1和2可用shell代码自动修改

HostIP=$(/sbin/ip addr show dev eth0 | sed -n 3p | awk '{print $2}'| awk -F\/ '{print $1}')
sed -i 's/^\(server:\).*$/\1 '$HostIP'/g' /etc/cobbler/settings
sed -i 's/^\(next_server:\).*$/\1 '$HostIP'/g' /etc/cobbler/settings

2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,本实例配置ip为:192.168.21.128(注:此为DHCP服务地址)

3,SELinux的设置。如果上面已经关闭了SELinux就不用管了
这个需要重启机器才能生效,所以建议修改完重启

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
[root@cobbler ~]# sestatus
SELinux status:                 disabled

4,执行 cobbler get-loaders,系统将自动下载loader程序(下载引导文件),完成提示4的修复工作。

5,编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no
问题5和6可用shell代码自动修改

sed -i 's/disable.*$/disable = no/g' /etc/xinetd.d/tftp
sed -i 's/disable.*$/disable = no/g' /etc/xinetd.d/rsync
或
sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp 
sed -i 's/\=\ yes/\=\ no /g' /etc/xinetd.d/rsync

6,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no(注:此为使cobbler管理rsync功能)

7,在iptables中将69,80,25151端口打开。如果仅仅只是在内部环境中使用,建议直接将防火墙关掉

chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop

8,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装,
执行

yum -y install debmirror cman
安装debmirror和cman
注释掉如下两行。
#@dists="sid";
#@arches="i386";

9,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令:

openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'

其中“random-phrase-here”为干扰码

# openssl passwd -1 -salt 'random-phrase-here''root123' # 生产cobbler安装系统root密码,密码为root123
$1$random-p$99lAzJZEl9uunSaThe9oM0

加入cobbler配置,修改 /etc/cobbler/settings

#default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."
default_password_crypted: "$1$random-p$99lAzJZEl9uunSaThe9oM0"

较验cobbler check出错

Traceback (most recent call last):
File "/usr/bin/cobbler", line 35, in ?
sys.exit(app.main())
File "/usr/lib/python2.4/site-packages/cobbler/cli.py", line 558, in main
rc = cli.run(sys.argv)
File "/usr/lib/python2.4/site-packages/cobbler/cli.py", line 202, in run
self.token = self.remote.login("", self.shared_secret)
File "/usr/lib64/python2.4/xmlrpclib.py", line 1096, in __call__
return self.__send(self.__name, args)
File "/usr/lib64/python2.4/xmlrpclib.py", line 1383, in __request
verbose=self.__verbose
File "/usr/lib64/python2.4/xmlrpclib.py", line 1147, in request
return self._parse_response(h.getfile(), sock)
File "/usr/lib64/python2.4/xmlrpclib.py", line 1286, in _parse_response
return u.close()
File "/usr/lib64/python2.4/xmlrpclib.py", line 744, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault:

解决方法:此为BUG,按下方操作执行即可。

service cobblerd restart
cobbler get-loaders

所有提示全部fix之后,执行

/etc/init.d/cobblerd restart

在此使用cobbler check检查系统,只出现如下提示,可以不用管

16

同步cobbler配置
对cobbler所有修改,需要

cobbler sync

其它错误

1、Dell机器安装报错:linux error parsing kickstart provice the etho does not exist
解决方法:
在kickstarts自动安装脚本中注释掉#$SNIPPET('network_config')
添加一行:network --bootproto=dhcp --device=em1

遇错误多看/var/log/message再根据百度谷歌解决。

附录

Cobbler命令说明

命令名称 命令用途
cobbler check 核对当前设置是否有问题
cobbler list 列出所有的cobbler元素
cobbler report 列出元素的详细信息
cobbler sync 同步配置到数据目录,更改配置最好都要执行下
cobbler reposync 同步yum仓库
cobbler distro 查看导入的发行版系统信息
cobbler system 查看添加的系统信息
cobbler profile 查看配置信息

命令参考:

cobbler --help
cobbler distro --help
cobbler distro add --help

Cobbler配置文件

cobbler有许多的配置文件,但是只有少部分基本功能需要修改。
Cobbler最主要的setting file就是/etc/cobbler/settings。Cobbler2.4.0开始引入动态修改模式(Dynamic Settings),我们只需启动这一模式,便不用再手动修改这个文件了。该文件是YAML格式的,如果直接修改setting文件,则必须重启cobbler服务才会生效,但如果是通过CLI命令或者是Web GUI进行修改的话,改动会立即生效,无需重启服务。
修改allow_dynamic_settings的值为1

cd /etc/cobbler/
cp settings settings.save
sed -i 's/^[[:space:]]\+/ /' /etc/cobbler/settings
sed -i 's/allow_dynamic_settings: 0/allow_dynamic_settings: 1/g' /etc/cobbler/settings
修改该配置后重启cobbler服务

/etc/init.d/cobblerd restart

这个时候,你就可以通过命令行来编辑配置

cobbler setting report
cobbler setting report [--name=option]
cobbler setting edit --name=option --value=xxx

命令来动态修改cobbler配置
命令用法参考:CentOS6.5安装和配置Cobbler 2.4:http://www.chenshake.com/centos6-4-installation-and-configuration-cobbler-2-4/

Cobbler目录说明

1、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模块配置文件

2、Cobbler数据目录:/var/lib/cobbler
/var/lib/cobbler/config #配置文件
/var/lib/cobbler/triggers #Cobbler命令
/var/lib/cobbler/kickstarts #默认存放kickstart文件
/var/lib/cobbler/loaders #存放的各种引导程序

3、系统安装镜像目录:/var/www/cobbler
/var/www/cobbler/ks_mirror #导入的系统镜像列表
/var/www/cobbler/images #导入的系统镜像启动文件
/var/www/cobbler/repo_mirror #yum源存储目录

4、日志目录:/var/log/cobbler
/var/log/cobbler/install.log #客户端系统安装日志
/var/log/cobbler/cobbler.log #cobbler日志

什么是PXE

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

更多内容请参考:Linux Kickstart无人值守安装(上):http://baidu.blog.51cto.com/71938/158675

kickstart是什么

许多系统管理员宁愿使用自动化的安装方法来安装红帽企业Linux.为了满足这种需要,红帽创建了kickstart安装方法。KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找?KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择.

Kickstart给用户提供了一种自动化安装红帽企业Linux的方法.

如何执行kickstart安装

kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行.
要使用 kickstart,必须:
1.创建一个kickstart文件.
2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.
3.筹备安装树.
4.开始kickstart安装.
更多详细内容请参考:
kickstart配置文件详解:http://blog.chinaunix.net/uid-17240700-id-2813881.html

参考资料:
安装参考:
官方文档:http://www.cobblerd.org/manuals/2.6.0/
git wiki:https://github.com/cobbler/cobbler/wiki/
Cobbler全自动批量安装部署Linux系统:http://www.osyunwei.com/archives/7606.html
CentOS6.5安装和配置Cobbler 2.4:http://www.chenshake.com/centos6-4-installation-and-configuration-cobbler-2-4/
运维自动化之Cobbler系统安装详解:http://os.51cto.com/art/201109/288604_all.htm
使用 Cobbler 自动化和管理系统安装:http://www.ibm.com/developerworks/cn/linux/l-cobbler/#configsome
CentOS 6.3 安装和配置cobbler:http://blog.xymvp.com/?thread-index-fid-1-tid-129.htm
定制自己的CentOS6.4系统的ISO,及制作网络安装CentOS系统:http://wenku.baidu.com/link?url=_qfHMfepD2SnCzjY3MTh-NXvzLojjIQfU9LBfYAxw_qbPsLV2tcB7dDku7zuZNfFuePY8UccjbDRuGtWvrU3tByO1brsLuxBnTJxbzry7oW

配置参考:
品运维自动化之cobbler的安装序:http://cwtea.blog.51cto.com/4500217/1047410/
运维自动化部署Cobbler之实战使用-Centos篇:http://blog.sina.com.cn/s/blog_5372b96d0101fjuv.html
利用Cobbler批量布署CentOS:http://kerry.blog.51cto.com/172631/648430/

kickstart自动安装文件配置参考:
基于Cobbler建立网络安装环境:http://tangobean.com/server/network-installation-with-cobbler/

发表评论?

5 条评论。

  1. 帮忙解决下

  2. Unable to download the kickstart file. Please modify the kickstart parameter below or press Cancel to proceed as an interactive installation.

  3. Could not open display because no X server is running.
    Try running ‘system-config-kickstart –help’ for a list of options.

    你好,请教一下我在装cobbler的时间。碰到以上的问题。请问一下我该如何去解决呢

  4. cobbler import报以下错误:
    [root@myql-nginx ~]# cobbler import –path=/var/www/html/os/CentOS-6.5-x86_64 –name=CentOS-6.5-x86_64 –arch=x86_64
    task started: 2015-04-16_171602_import
    task started (id=Media import, time=Thu Apr 16 17:16:02 2015)
    Exception occured:
    Exception value: ‘Command failed’
    Exception Info:
    File “/usr/lib/python2.6/site-packages/cobbler/remote.py”, line 87, in run
    rc = self._run(self)
    File “/usr/lib/python2.6/site-packages/cobbler/remote.py”, line 231, in runner
    self.logger
    File “/usr/lib/python2.6/site-packages/cobbler/api.py”, line 890, in import_tree
    utils.run_this(rsync_cmd, (spacer, mirror_url, path), self.logger)
    File “/usr/lib/python2.6/site-packages/cobbler/utils.py”, line 917, in run_this
    die(logger,”Command failed”)
    File “/usr/lib/python2.6/site-packages/cobbler/utils.py”, line 134, in die
    raise CX(msg)

    !!! TASK FAILED !!!

    咨询一下是什么问题,谢谢~~

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据