5.1 Cobbler(系统自动化部署)

cobbler简介

cobbler介绍

Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等。

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

Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。

Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。

cobbler集成的服务

  • PXE服务支持

  • DHCP服务管理

  • DNS服务管理(可选bind,dnsmasq)

  • 电源管理

  • Kickstart服务支持

  • YUM仓库管理

  • TFTP(PXE启动时需要)

  • Apache(提供kickstart的安装源,并提供定制化的kickstart配置)

cobbler部署

cobbler服务器基本设置:CentOS7最小化安装,关闭防火墙,selinux设置为disabled,虚拟机网卡这里为桥接模式

安装EPEL源

rpm -ivh http://mirrors.kernel.org/fedora-epel/7/x86_64/e/epel-release-7-10.noarch.rpm
yum repolist

yum安装cobbler

yum install -y httpd dhcp tftp cobbler cobbler-web pykickstart

用命令(rpm -ql cobbler)查看安装的文件,下面列出部分。

配置文件目录 /etc/cobbler

/etc/cobbler # 配置文件目录
/etc/cobbler/settings # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
/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模块配置文件

数据目录

/var/lib/cobbler # Cobbler数据目录
/var/lib/cobbler/config # 用于存放distros,system,profiles等信息配置文件
/var/lib/cobbler/kickstarts # 默认存放kickstart文件
/var/lib/cobbler/loaders # 存放的各种引导程序

镜像目录

/var/www/cobbler # 系统安装镜像目录
/var/www/cobbler/ks_mirror # 导入的发行版系统的所有数据
/var/www/cobbler/images # 导入发行版的kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror # yum源存储目录

日志目录

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

启动并检测cobbler

systemctl start httpd
systemctl enable httpd
systemctl start cobblerd
systemctl enable cobblerd
cobbler check

附加解析:

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

修改cobbler主配置文件

vim /etc/cobbler/settings
1-1
1-2

保证xinetd服务为开机自动启动状态

vim /etc/xinetd.d/tftp
1-3

启动rsyncd服务

systemctl start rsyncd
cobbler get-loaders

生成cobbler安装系统root初始密码

openssl passwd -1 -salt 'cobler' 'cobler'
$1$cobler$XJnisBweZJlhL651HxAM00
1-4

将上面的加密串加入cobbler配置文件中

vim /etc/cobbler/settings
1-5

重启cobblerd服务:

systemctl restart cobblerd
cobbler check

让cobblerd管理dhcp

vim /etc/cobbler/settings
1-6

修改dhcp模板文件:

vim /etc/cobbler/dhcp.template
1-7

重启cobblerd

systemctl restart cobblerd

同步:

cobbler sync

导入镜像

1-8
mount /dev/cdrom /mnt
cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64
1-9

导入centos6的步骤在这里略去!

1-10

CentOS-6-x86_64.cfg配置文件:

# Kickstart file automatically generated by anaconda.
#version=DEVEL
install #表示是安装,而不是升级
text #文本方式安装
cdrom #安装方式,如果是网络安装的话可以写成 url ––url ftp://192.168.1.254/dir 或者 nfs --server=192.168.0.241 --dir=/centosinstall
key –skip #这个是我另外添加的,如果是RedHat的系统,会要求输入key,这里配置为跳过,如果不配置安装时会停在那里要求用户输入key
lang en_US.UTF-8 #语言
keyboard us #键盘样式
network --onboot no --device eth0 --noipv4 --noipv6 #网络配置 配置具体参数样例:network –onboot yes --bootproto=static --ip=192.168.1.1 --netmask=255.255.255.0 其他网关,DNS等格式和ifcfg-ethx的方式一样
rootpw --iscrypted $6$PEJ49S7OkrNra3UM #管理员密码,是加密过的 要是使用不加密的方式则这样写:rootpw 123456
firewall --service=ssh #开启防火墙,并打开ssh端口
authconfig --enableshadow --passalgo=sha512 #用户认证和密码加密方式
selinux --enforcing #强制打开selinux
timezone --utc Etc/GMT+8 #时区设置
zerombr yes #清空磁盘的mbr
bootloader --location=mbr --driveorder=sda #引导程序相关参数
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart –all –initlabel #初始化磁盘
part / --fstype=ext4 --size=18000 #开始分区
part swap --grow --size=1024
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
reboot
%packages --nobase #安装的软件包,这里由于我安装的是最小mini版,所以只安装了核心软件包组
@core
%post #后安装脚本(这里是我另外添加的,原来文件中没有)
id lustlost &>; /dev/null || useradd lustlost #检查是否有lustlost用户,如果没有则添加
echo 123456 | passwd –stdin lustlost #配置密码
cat >> /etc/yum.repos.d/base.repo << eof
[base]
name=baseserver
baseurl=http://192.168.1.254/yum
gpgcheck=0
enable=1
eof #这里在安装系统成功后执行脚本自动配置一个yum源,其他脚本可以按照需要定义
%end

CentOS-7-x86_64.cfg配置文件:

# Cobbler for Kickstart Configurator for CentOS 7 by clsn
install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
#Network information
$SNIPPET('network_config')
#network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 -- hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $default_password_crypted
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 1 --grow
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end
%packages
@^minimal
@compat-libraries
@core
@debugging
@development
bash-completion
chrony
dos2unix
kexec-tools
lrzsz
nmap
sysstat
telnet
tree
vim
wget
%end
%post
systemctl disable postfix.service
$yum_config_stanza
%end

上传配置文件到/var/lib/cobbler/kickstarts目录下

修改自定义配置文件:

cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg
cobbler profile edit --name=CentOS-6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6-x86_64.cfg
1-11

定义自动化安装时centos7的网卡信息文件(自动生成eth1,eth2)

cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=O biosdevname=O'
1-12

cobbler sync #使修改的配置文件生效

然后随便添加一台虚拟机,开机!

1-13

cobbler服务器端查看日志

1-14

(14)安装xinetd

yum -y install xinetd
systemctl start xinetd

安装好后就会可以选择安装centos版本,选择对应版本后就会自动执行安装程序!

1-15
1-16

自动重装和cobbler-web

安装koan

yum -y install koan

查看可以重装的系统:

koan --server=192.168.0.100 --list=profiles
1-17

指定要重装成centos6:

koan --replace-self --server=192.168.0.100 --profile=CentOS-6-x86_64
1-18

通过web访问cobbler

在浏览器输入:https://192.168.0.100/cobbler_web,用户名和密码都是默认的cobbler

1-19

cobbler修改密码

htdigest /etc/cobbler/users.digest "Cobbler" cobbler
1-20

所有操作都可在web界面进行

1-21
1-22

修改提示信息的选单

vim /etc/cobbler/pxe/pxedefault.template

修改前:

1-23

修改后:

1-24

然后执行命令:cobbler sync

新建一台虚拟机查看效果:

1-25

cobbler自定义yum源

添加repo

cobbler repo add --name=openstack-ocata --mirror=http://192.168.0.5:8080/openstack-ocata/ --arch=x86_64 --breed=yum

注:http://192.168.0.5:8080/openstack-ocata/为我本地搭建的本地yum源

同步repo

cobbler reposync

添加repo到对应的repolist

cobbler profile edit --name=CentOS-7-x86_64 --repos="openstack-ocata"

修改kicstart文件

%post
systemctl disable postfix.service
$yum_config_stanza
%end

添加定时任务,定期同步repo

echo "1 3 * * * /usr/bin/cobbler reposync --tries=3 --no-fail" >> /var/spool/cron/root

cobbler自定义系统安装

自动化装机平台基本信息

mac地址:00:50:56:3E:3D:06

1-26

主机名:cobbler-test03 IP:192.168.0.111 掩码:255.255.255.0 网关:192.168.0.1 DNS:192.168.0.1

执行安装的命令

cobbler system add --name=cobbler-test03 --mac=00:50:56:3E:3D:06 --profile=CentOS-7-x86_64 \
--ip-address=192.168.0.111 --subnet=255.255.255.0 --gateway=192.168.0.1 --intterface=eth0 \
--static=1 --hostname=cobbler-test03 --name-servers="192.168.0.1" \
--kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg
1-27

同步:cobbler sync

启动虚拟机跳过选择界面自动安装:

1-28