基于Cobbler实现多版本操作系统部署

前言

    在生产环境中,当需要批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装是不可想象的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解决此问题而设计的,本文简单介绍Cobbler的安装配置及使用。

简介

    Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统。 Cobbler 集成了 DNS, DHCP, 软件包更新, 带外管理以及配置管理, 方便操作系统安装自动化。Cobbler 可以支持PXE启动, 操作系统重新安装, 以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler 可以支持管理复杂网路环境,如建立在链路聚合以太网的桥接环境。

Cobbler组件结构图

安装配置过程:

① 安装cobbler、dhcp、rsync

② 配置cobbler

③ 导入操作系统及kickstart文件到cobbler

④ 配置yum仓库

⑤ 配置dhcp、tftp、http

安装cobbler

#安装cobbler会把依赖的服务一并安装,如tftp-server、httpd
[[email protected] ~]# yum  install cobbler
[[email protected] ~]# yum -y install dhcp rsync
#设置开机启动
[[email protected] ~]# chkconfig tftp on
[[email protected] ~]# chkconfig rsync on

配置cobbler

[[email protected] ~]# service xinetd restart
[[email protected] ~]# service cobblerd start
[[email protected] ~]# 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 : 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.
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
5 : ksvalidator was not found, install pykickstart
6 : 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
7 : 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,2:
[[email protected] ~]# vim /etc/cobbler/settings 
server: 192.168.18.45
next_server: 192.168.18.45
3:
[[email protected] ~]# cobbler get-loaders
4:可忽略
5:
[[email protected] ~]# yum -y install pykickstart
6:
[[email protected] ~]# openssl passwd -1 -salt 345223 123456
$1$345223$/jb8Mdzzy3SRfwM5RbG3D.
[[email protected] ~]# vim /etc/cobbler/settings 
default_password_crypted: "$1$345223$/jb8Mdzzy3SRfwM5RbG3D."
7:可忽略

同步cobbler配置,再检查有无报错

[[email protected] ~]# cobbler sync
[[email protected] ~]# service cobblerd restart
[[email protected] ~]# cobbler check
The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
2 : 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.
#配置成功

准备kickstart文件

[[email protected] ~]# cp /var/lib/cobbler/kickstarts/sample_end.ks /var/lib/cobbler/kickstarts/basic.ks
[[email protected] ~]# vim /var/lib/cobbler/kickstarts/basic.ks 
# kickstart template for Fedora 8 and later.
# (includes %end blocks)
# do not use with earlier distros

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# 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‘)
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $default_password_crypted   #md5加密的密码串,默认保存在/etc/cobbler/settings
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Chongqing
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
part pv.01 --grow --size=1            
part /boot --fstype=ext4 --size=400
part /boot/efi --fstype=efi --size 200   #EFI模式需要创建该分区
volgroup VolGroup --pesize=4096 pv.01
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1984 --maxsize=4096

%pre
$SNIPPET(‘log_ks_pre‘)
$SNIPPET(‘kickstart_start‘)
$SNIPPET(‘pre_install_network_config‘)
# Enable installation monitoring
$SNIPPET(‘pre_anamon‘)
%end

%packages
@base
@development
@server-platform-devel
samba-client
lftp
openssh-clients
epel-release
#$SNIPPET(‘func_install_if_enabled‘)
%end

%post --nochroot
$SNIPPET(‘log_ks_post_nochroot‘)
%end

%post
echo -e "alias net-pf-10 off\noptions ipv6 disable=1" >/etc/modprobe.d/ipv6.conf
echo "NETWORKING_IPV6=no" >> /etc/sysconfig/network
chkconfig ip6tables off
cat >> /etc/security/limits.conf <<EOF
*           soft    nproc           65535
*           hard    nproc           65535
*           soft    nofile          102400
*           hard    nofile          204800
EOF
$SNIPPET(‘log_ks_post‘)
# Start yum configuration
$yum_config_stanza
# End yum configuration
$SNIPPET(‘post_install_kernel_options‘)
$SNIPPET(‘post_install_network_config‘)
$SNIPPET(‘func_register_if_enabled‘)
$SNIPPET(‘download_config_files‘)
$SNIPPET(‘koan_environment‘)
$SNIPPET(‘redhat_register‘)
$SNIPPET(‘cobbler_register‘)
# Enable post-install boot notification
$SNIPPET(‘post_anamon‘)
# Start final steps
$SNIPPET(‘kickstart_done‘)
# End final steps
%end

导入操作系统到cobbler,添加profile

[[email protected] ~]# mount /dev/sr0 /mnt  #挂载光驱
[[email protected] ~]# cobbler import --name=CentOS-6.6-x86_64 --path=/mnt  #导入操作系统
[[email protected] ~]# ll /var/www/cobbler/ks_mirror/  #验证一下是否导成功
[[email protected] ~]# cobbler profile add --name=CentOS-6.6-basic --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/basic.ks
[[email protected] ~]# cobbler profile list  #验证一下
[[email protected] ~]# cobbler sync  #同步一下

配置本地yum仓库及epel仓库

#配置本地yum仓库
[[email protected] ~]# mkdir /tmp/rpms
[[email protected] ~]# createrepo /tmp/rpms  #放入rpm包,执行此步骤
[[email protected] ~]# cobbler repo add --mirror=/tmp/rpms --name=local
[[email protected] ~]# cobbler reposync
#配置epel仓库
[[email protected] ~]# cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel
[[email protected] ~]# cobbler reposync --tries=3 --no-fail  #同步epel仓库到本地,需要较长时间
#查看已添加的repo
[[email protected] ~]# cobbler repo list
   epel
   local
#添加repo到profile
[[email protected] ~]# cobbler profile edit --name=CentOS-6.6-basic --repos="epel local"
[[email protected] ~]# cobbler sync

配置dhcp服务器

[[email protected] ~]# vim /etc/dhcp/dhcpd.conf   #BIOS或EFI模式网络启动都能引导
option arch code 93 = unsigned integer 16; # RFC4578
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.18.0 netmask 255.255.255.0 {
    range 192.168.18.150 192.168.18.230;
    option domain-name "example.org";
    option domain-name-servers 114.114.114.114,8.8.8.8;
    option routers 192.168.18.1;
          class "pxeclients" {
                  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
                  next-server 192.168.18.45;

                  if option arch = 00:06 {
                          filename "grub/grub-x86.efi";
                  } else if option arch = 00:07 {
                          filename "grub/grub-x86_64.efi";
                  } else {
                          filename "pxelinux.0";
                  }
        }
}

重新启动服务

[[email protected] ~]# service dhcpd restart
[[email protected] ~]# service xinetd restart
[[email protected] ~]# service httpd restart
[[email protected] ~]# service cobblerd restart

客户端安装测试

EFI模式

BIOS模式

客户端验证,可以看到生成了一个repo文件,指向cobbler服务器

[[email protected] ~]# cat /etc/yum.repos.d/cobbler-config.repo 
[core-0]
name=core-0
baseurl=http://192.168.18.45/cobbler/ks_mirror/CentOS-6.6-x86_64
enabled=1
gpgcheck=0
priority=1

[local]
name=local
baseurl=http://192.168.18.45/cobbler/repo_mirror/local
enabled=1
priority=99
gpgcheck=0

至此安装完成,本文只简要介绍了cobbler的安装及配置

可登陆官网 http://cobbler.github.io/ 获取帮助

时间: 2024-11-05 02:33:49

基于Cobbler实现多版本操作系统部署的相关文章

基于Cobbler实现多版本系统批量部署

前言 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的.记得前面我们探究了基于PXE实现系统全自动安装,但PXE同时只能提供单一操作系统的批量部署,面对生产环境中不同服务器的需求,该如何实现批量部署多版本的操作系统呢?Cobbler便可以的满足这一实际需求,本文带来的是基于Cobbler实现多版本操作系统批量部署. Cobbler 简介 Cobbler是一款自动化操作系统部署的实现工具,由Pyt

基于cobbler实现多版本的系统部署

背景 cobbler简介   Cobbler:是快速网络安装linux操作系统的服务,支持众多的Linux发行版:Red Hat. Fedora.CentOS.Debian.Ubuntu和SuSE,也可以支持网络安装windows.cobbler是PXE的二次封装,将多种安装参数封装到一个菜单 .  cobbler是由Python编写并且提供了CLI和Web的管理形式,相对于pxe来说大量机械性工作被程序替代,整个部署流程来说简洁明了,个人操作操作导致的无法正常部署系统的概率有了明显的降低. c

Centos7操作系统部署指南

一.硬件环境: Dell R620 二.软件环境: Centos6.4 X86_64 +KVM Windows7+vnc 三.安装说明 操作系统更新之迅速,让作为新手的系统运维人员有点措手不及,相对于老手就胸有成竹.怎么讲?因为老手对技术方向把握的很好,哪些技术需要深入研究,哪些需要基本了解即可,优先级早已安排妥当. 接下来要讲的"Centos7操作系统的部署"同样基于此思想,我们只需了解大致的安装过程,有哪些新功能.至于在centos7环境下各种软件的安装,我们可以等到用之前,紧急突

Centos6.7安装部署cobbler完成无人值守化安装部署

 Centos6.7部署cobbler完成无人值守化安装部署                   Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统.在生产环境中,经常批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装工作量是不可预估的:此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS.EFI)时,此种方式就不够灵活.而Cobbler正是为了解决此问题而设计的.

基于cobbler搭建本地的yum仓库源

概述: 前面的文章已经大致描述并配置了通过cobbler服务结合PXE+Kickstart+DHCP+TFTP+HTTP无人值守安装多系统的自动化运维安装系统服务;利用这一特性,cobbler还有一个妙用,用来搭建(同步)本好的yum源仓库;用来统一安装更新本地的(IDC)系统软件与第三方软件仓库;需要用到的无非还是cobbler rsync httpd,本文是线上部署时的整理笔记,旨在备忘与分享,如有错误和遗漏欢迎指正- 安装配置:由于基于cobbler所以请参考前前方自动化运维之cobble

基于Windows Server 2012 r2环境部署 SharePoint 2013 SP1

在安装SharePoint 2013 服务器之前,请先了解硬件和软件要求 http://technet.microsoft.com/library/cc262485(office.15)?ocid=fwlink#section4 Microsoft SharePoint 产品准备工具会为具有内置数据库的单台服务器安装以下必备软件: Web 服务器 (IIS) 角色 应用程序服务器角色 Microsoft .NET Framework 4.5 SQL Server 2008 R2 SP1 Nati

利用SCCM2012中的导入计算机功能来实现定制化的操作系统部署

前言 在我们通过MDT工具或SCCM系统给客户机部属操作系统时, 常遇到各种各样的需求.有些需求很容易实现, 如自动加域,格式化硬盘,预置管理员密码等.有些功能可能就稍微麻烦一些. 比如,在部署操作系统时, 要求客户能自定义输入计算机名称. 这个要求在MDT的环境下, 很容易实现,但是在SCCM的环境下, 就需要做额外的设置和脚本等, 可以做到在系统部署时提示客户输入计算机名. 通过SCCM和MDT的集成, 也能很好的解决这个问题. 客户需求: 现有一个情景,客户是使用的SCCM2012,管理的

基于Jenkins,docker实现自动化部署(持续交付)

前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此,传统的人工部署已经心有余而力不足.持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环.合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量.本文不对三个概念做过多的介绍,有兴趣可以读读这篇文章:The Product Managers' Guide to

kvm cobbler无人值守批量安装操作系统

kvm cobbler无人值守批量安装操作系统 cobbler:一个自动网络安装系统的工具,集成PEX.dhcp.dns.tftpd.sync等服务.可以供大家管理安装操作系统 kvm:Linux系统自带的虚拟化软件,自行找资料学习. 环境描述: cobbler: 系统:CentOS_x86 6.8 网卡: eth0:vm1 (管理)10.10.100.131 ech1:NAT (上网)DHCP kvm: 系统:CentOS_x86 6.8 网卡: eth0:vm1 (管理)10.10.100.