前言

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

基于PXE实现系统全自动安装,参考:无人值守批量安装服务器

Cobbler简介

Cobbler是一款自动化操作系统部署的实现工具,由Python语言开发,是对PXE的二次封装。融合多种特性,提供了CLI和Web的管理形式。同时,Cobbler也提供了API接口,方便二次开发使用。它不仅可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。另外,它还能结合Puppet等集中化管理软件,实现自动化管理。

组件

Cobbler的各主要组件间关系如图所示

实现过程

安装cobbler

#需epel及updates支持
[root@scholar ~]# yum install cobbler -y 

cobbler的运行依赖于dhcp、tftp、rsync及dns服务,其中dhcp可由dhcpd提供,也可由dnsmasq提供,tftp可由tftp-server程序包提供,也可由cobbler功能提供,rsync有rsync程序包提供,dns可由bind提供,也可由dnsmasq提供,此处独立管理,即不通过cobbler来管理这些服务。

配置dhcp

#cobbler在安装时会将依赖包tftp-server和xinetd安装,dns服务非必需,所以还要手动安装dhcp
[root@scholar ~]# yum install dhcp -y
[root@scholar ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
[root@scholar ~]# vim /etc/dhcp/dhcpd.conf option domain-name "scholar.com";
option domain-name-servers 172.16.0.1;
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.10.60 172.16.10.70;
option routers 172.16.0.1;
next-server 172.16.10.125;
filename "pxelinux.0";
} [root@scholar ~]# service dhcpd start

配置rsync和tftp

[root@scholar ~]# chkconfig tftp on
[root@scholar ~]# chkconfig rsync on
[root@scholar ~]# service xinetd start

配置cobbler

#检查需要修改的配置,需启动httpd服务及cobblerd
[root@scholar ~]# service cobblerd start
[root@scholar ~]# service httpd start
[root@scholar ~]# 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 loc
alhost, or kickstarting features will not work. This should be a resolvable hostname o
r 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 th
e PXE network.
3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'c
obbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netboot
ing, 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 wa
nt to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and ya
boot. 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 deployment
s and repositories
5 : ksvalidator was not found, install pykickstart
6 : The default password used by the sample templates for newly installed machines (def
ault_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 g
enerate new one
7 : fencing tools were not found, and are required to use the (optional) power manageme
nt features. install cman or fence-agents to use them Restart cobblerd and then run 'cobbler sync' to apply changes. #解决方法
1:# vim /etc/cobbler/settings
server: 172.16.10.125
2:# vim /etc/cobbler/settings
next_server: 172.16.10.125
3:# cobbler get-loaders #需要可访问互联网,尝试此法返回404错误,只好手动复制文件
# yum install syslinux -y
# cp -r /usr/share/syslinux/* /var/lib/cobbler/loaders/
4:忽略即可
5:# yum install pykickstart -y
6:]# openssl passwd -1 -salt `openssl rand -hex 4`
Password:
$1$ebcbf370$s8C9mNday5b.lE5nh4.7N1
# vim /etc/cobbler/settings
default_password_crypted: "$1$ebcbf370$s8C9mNday5b.lE5nh4.7N1"
7:安装cman或fence-agents #可忽略 [root@scholar ~]# service cobblerd restart

添加distro(distribution)

#挂载光盘镜像,每换一个系统镜像都需重新挂载
[root@scholar ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
1

导入CentOS6镜像文件

导入CentOS7镜像文件,请确保已重新挂载镜像

验证是否导入成功

添加profile

#kickstart文件可按实际需要制作,这里直接修改/root/anaconda-ks.cfg,添加关键配置项如下:
url --url=http://172.16.10.125/cobbler/ks_mirror/CentOS-7.0-x86_64 #指定repo位置
#注:CentOS6与CentOS7文件系统不同,千万不能用相同kickstart文件

同步数据

[root@scholar ~]# cobbler sync

#CentOS7与CentOS6安装过程略有区别,CentOS7在数据同步完成后需要再次指定安装源
[root@scholar ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#将此项加入CentOS7的append行内
inst.repo=http://172.16.10.125/cobbler/ks_mirror/CentOS-7.0-x86_64

部署测试

设置为网卡启动

保存重启后进入引导界面,我们先安装CentOS6

引导成功,开始安装

安装CentOS7

引导成功,开始安装

至此,基于Cobbler实现多版本系统批量部署已成功实现,其实以上配置过程可以使用web界面配置,这样就可以不再刻意的去记繁琐的命令,下面我们就来简单看一下

CobblerWeb界面

安装cobbler-web

[root@scholar ~]#  yum install cobbler-web -y

cobbler-web支持多种认证方式,如authn_configfil、authn_ldap或authn_pam等,下面我们基于authn_pam做认证

#修改认证方式
[root@scholar ~]# vim /etc/cobbler/modules.conf [authentication]
module = authn_pam #添加系统用户
[root@scholar ~]# useradd cobuser
[root@scholar ~]# echo 'cobpass' | passwd --stdin cobuser
#添加用户至管理组
[root@scholar ~]# vim /etc/cobbler/users.conf
[admins]
admin = "cobuser" [root@scholar ~]# service cobblerd restart
Stopping cobbler daemon: [ OK ]
Starting cobbler daemon: [ OK ]
[root@scholar ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

访问测试

登陆成功便可配置根据选项来配置了

来源:https://blog.51cto.com/scholar/1672176

企业实战|基于Cobbler实现多版本系统批量部署的更多相关文章

  1. centos7使用cobbler(2.8)批量部署操作系统之一

    一.    批量部署操作系统的前提 要想批量部署操作系统,得具备以下条件: 客户机支持pxe网络引导 服务器端和客户端建立网络通信(DHCP) 服务器端要有可供客户机开机引导的引导文件 服务器端的可引 ...

  2. centos7使用cobbler(2.8)批量部署操作系统之二

    1. Cobbler常用命令 1.1 查看cobbler帮助 # cobbler --help usage ===== cobbler <distro|profile|system|repo|i ...

  3. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  4. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  5. 解放双手—Cobbler批量自动化部署多版本系统

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

  6. Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建

    Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...

  7. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  8. selenium2自动化测试实战--基于Python语言

    自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...

  9. Jenkins持续集成企业实战

    阅读目录: Jenkins持续集成企业实战1.1 目前主流网站部署的流程1.2 Jenkins持续集成简介1.3 Jenkins持续集成组件1.4 Jenkins平台安装部署1.5 Jenkins相关 ...

随机推荐

  1. Gradle 使用@Value注册编译报错

    报错信息:Expected '$(student - name)' to be an inline constant of type java.lang.String in @org.springfr ...

  2. Oracle入门基础(六)一一子查询

    SQL> --查询工资比SCOTT高的员工信息 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SA ...

  3. 32 位和 64 位的 JVM,int 类型变量的长度是多数?

    32 位和 64 位的 JVM 中,int 类型变量的长度是相同的,都是 32 位或者 4个字节.

  4. Netty + Spring + ZooKeeper搭建轻量级RPC框架

    本文参考 本篇文章主要参考自OSCHINA上的一篇"轻量级分布式 RPC 框架",因为原文对代码的注释和讲解较少,所以我打算对这篇文章的部分关键代码做出一些详细的解释 在本篇文章中 ...

  5. Python - 字符串基础知识

  6. iOS全埋点解决方案-界面预览事件

    前言 ​ 我们先了解 UIViewController 生命周期相关的内容和 iOS 的"黑魔法" Method Swizzling.然后再了解页面浏览事件($AppViewScr ...

  7. (stm32f103学习总结)—待机唤醒实验

    一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...

  8. c++中的赋值函数

    在c++中,对于任意一个类Class A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline 的默认函数,这4个函数最常见的形式为: A() //默认构 ...

  9. 激光雷达 LOAM 论文 解析

    转自:https://blog.csdn.net/hltt3838/article/details/109261334 固态激光雷达的一段视频:https://v.qq.com/x/page/a078 ...

  10. logback日志级别动态切换的终极方案(asm使用)

    背景 一切皆有因果,所有事情,都有事件驱动.本方案的日志级别切换是由这样的背景下产生的: 单个生产环境上,有几百近千个微服务 日志级别切换不重启服务,要求即时生效果 由业务开发人员去修改代码或增加相关 ...