Cobbler自动部署主机系统

简介:

Cobbler由python语言开发,是对PXE和 Kickstart以及DHCP的封装。融合很多特性,提供了CLI和Web的管理形式。更加方便的实行网络安装。同时,Cobbler也提供了API接 口,使用其它语言也很容易做扩展。它不紧可以安装物理机,同时也支持kvm、xen虚拟化、Guest OS的安装。更多的是它还能结合Puppet等集中化管理软件,实现自动化的管理。

PXE 预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。

Cobbler提供以下服务集成:

* PXE服务支持

* DHCP服务管理

* DNS服务管理

电源管理

* Kickstart服务支持

* yum仓库管理

本机:系统Centos6.5_x64

      ip : 192.168.10.128

1、安装Cobbler

1
[root@master ~] #yum install cobbler httpd rsync tftp-server xinetd dhcp python-ctypes cman pykickstart debmirror -y

1.1、Cobbler命令说明

wKioL1QQTyjAUt9SAAGtL0jXAfs680.jpg

命令参考

cobbler --help

cobbler distro --help

cobbler distro add --help

1.2、Cobbler配置文件说明

Cobbler配置文件存放在/etc/cobbler下

wKiom1QQT02D9AXpAAIC3JOMZ5U423.jpg

  1. 系统镜像数据目录/var/www/cobbler

导入的系统发行版,repos镜像和kickstart文件都放置在/var/www/cobbler目录下。确保/var目录有足够的空间来存储这些文件。

wKioL1QQT4vTJLXVAAE51tieXT0810.jpg

  1. 4 Cobbler数据目录/var/lib/cobbler

此目录存储和Cobbler profiles、systems、distros相关的配置

wKioL1QQT87BFpryAAFmI7qYYB0600.jpg

1.5 相关日志文件

------------------------------------------------------------------------------------------

web日志存放点

/var/log/httpd/access_log

/var/log/httpd/error_log

 

/var/log/httpd/ssl_access_log

/var/log/httpd/ssl_error_log

Cobbler日志

/var/log/cobbler/cobbler.log

/var/log/cobbler/install.log

通过Cobbler日志可以获取系统的安装状态

--------------------------------------------------------------------------------------------

1.6 配置Cobbler

[root@master ~]# vim /etc/cobbler/setting

1
2
3
4
5
6
242 manage_dhcp: 1            ##启用cobbler管理DHCP功能
261 manage_rsync: 1           ##启用cobbler管理rsync功能
246 manage_dns: 0             ##启用cobbler管理dns,这里没有开启
272 next_server: 192.168.10.128     ##DHCP服务地址
292 pxe_just_once: 1           ##预防将机器中的安装循环配置为始终从网络引导
384 server: 192.168.10.128       ##cobbler服务器地址

1.7配置tftprsync

1
[root@master ~] # sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp
1
[root@master ~] # sed -i  's/\=\ yes/\=\ no/g' /etc/xinetd.d/rsync

启用wsgi模块;Python应用程序或框架和Web服务器之间的一种接口

1
2
[root@master ~] # cat /etc/httpd/conf.d/wsgi.conf 
LoadModule wsgi_module modules /mod_wsgi .so

1.8 生成Cobbler安装系统root初始密码  #  这里生成密钥和配置默认密钥,后面ks文件引用、

1
2
3
4
[root@master ~] # openssl passwd -1 -salt 'random-phrase-here' 'password' 
$1$random-p$sFftrCTxKKsDZ.Sdr8mDG0
[root@master ~] # vim /etc/cobbler/settings +101
101 default_password_crypted:  "$1$random-p$sFftrCTxKKsDZ.Sdr8mDG0"

1.9 配置DHCP

1
2
3
4
5
6
7
8
9
10
[root@master ~] # vim /etc/cobbler/dhcp.template     
  21 subnet 192.168.10.0 netmask 255.255.255.0 {         # 分配所属网段
  22      option routers             192.168.10.2;       # 默认网关
  23      option domain-name-servers 192.168.10.2;       #dns ip
  24      option subnet-mask         255.255.255.0;      #掩码
  25      range dynamic-bootp        192.168.10.200 192.168.10.254;    # 分配地址段
  26        filename                    "/pxelinux.0" ;    ##指定的网络引导程序
  27      default-lease- time          21600;              #租约时间,秒
  28      max-lease- time              43200;              #最大租约时间,秒
  29      next-server                192.168.10.128;    #指定的TFTP服务器的地址

编辑dhcp配置文件,不然可能无法启动dhcp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@master ~] # cat /etc/dhcp/dhcpd.conf |grep -v ^# |grep -v ^$
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set  vendorclass = option vendor-class-identifier;
option pxe-system- type  code 93 = unsigned integer 16;
subnet 192.168.10.0 netmask 255.255.255.0 {
      option routers             192.168.10.2;
      option domain-name-servers 192.168.10.2;
      option subnet-mask         255.255.255.0;
      range dynamic-bootp        192.168.10.200 192.168.10.254;
      filename             "/pxelinux.0" ;
      default-lease- time          21600;
      max-lease- time              43200;
      next-server                192.168.10.128;
      }

启动服务:

1
2
3
4
/etc/init .d /xinetd  start
/etc/init .d /dhcpd  start
/etc/init .d /cobblerd  start
/etc/init .d /httpd  restart

2.管理cobbler

1
[root@master ~] # cobbler get-loaders

2.1 编辑debmiror

1
2
3
[root@master ~] # vim /etc/debmirror.conf 
28  #@dists="sid";
30  #@arches="i386";

2.2 检查cobbler配置  # 我们的防火墙及selinux已经关闭,下面提示先不管

1
2
3
4
[root@master ~] # cobbler check
The following are potential configuration items that you may want to fix:
1 : since iptables may be running, ensure 69, 80 /443 , and 25151 are unblocked
Restart cobblerd and  then  run  'cobbler sync'  to apply changes.

2.3 完成后运行cobbler sync 命令让配置生效,使dhcp、http被cobbler接管,不然会报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@master ~] # cobbler sync
task started: 2014-09-11_082844_sync
task started ( id =Sync,  time =Thu Sep 11 08:28:44 2014)
running pre- sync  triggers
cleaning trees
removing:  /var/lib/tftpboot/pxelinux .cfg /default
removing:  /var/lib/tftpboot/grub/grub-x86_64 .efi
removing:  /var/lib/tftpboot/grub/efidefault
removing:  /var/lib/tftpboot/grub/images
removing:  /var/lib/tftpboot/grub/grub-x86 .efi
removing:  /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink  /var/lib/cobbler/loaders/grub-x86_64 .efi ->  /var/lib/tftpboot/grub/grub-x86_64 .efi
trying hardlink  /var/lib/cobbler/loaders/grub-x86 .efi ->  /var/lib/tftpboot/grub/grub-x86 .efi
copying distros to tftpboot
copying images
generating PXE configuration files
generating PXE menu structure
rendering DHCP files
generating  /etc/dhcp/dhcpd .conf
rendering TFTPD files
generating  /etc/xinetd .d /tftp
cleaning link caches
rendering Rsync files
running post- sync  triggers
running python triggers from  /var/lib/cobbler/triggers/sync/post/ *
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout: 
received on stderr: 
running: service dhcpd restart
received on stdout: 关闭 dhcpd:[确定]
正在启动 dhcpd:[确定]
received on stderr: 
running shell triggers from  /var/lib/cobbler/triggers/sync/post/ *
running python triggers from  /var/lib/cobbler/triggers/change/ *
running python trigger cobbler.modules.scm_track
running shell triggers from  /var/lib/cobbler/triggers/change/ *
*** TASK COMPLETE ***

上传ISO镜像至服务器

3.1 上传ISO镜像至服务器

1
2
3
4
5
6
7
[root@master ~] # mkdir -p /opt/os/Linux/x64/Centos6.5/dvd
[root@master ~] # mkdir /opt/os/Linux/x64/Centos6.2/dvd -p
[root@master ~] # mkdir /opt/iso
[root@master iso] # pwd
/opt/iso
[root@master iso] # ls
CentOS-6.2-x86_64-bin-DVD1.iso   CentOS-6.5-x86_64-bin-DVD1.iso

3.2 挂载ISO镜像

1
2
[root@master iso] # mount -o loop /opt/iso/CentOS-6.5-x86_64-bin-DVD1.iso /opt/os/Linux/x64/Centos6.5/dvd/
[root@master ~] # mount -o loop /opt/iso/CentOS-6.2-x86_64-bin-DVD1.iso /opt/os/Linux/x64/Centos6.2/dvd/

3.3 从DVD中导入OS数据

系统版本命名为centos6.5 架构x86_64,这时间长,耐性等待。可查看ls /var/www/cobbler/ks_mirror/centos6.5-x86_64/目录文件生成情况。

1
2
3
4
5
6
7
8
9
10
[root@master iso] # cobbler import --path=/opt/os/Linux/x64/Centos6.5/dvd/ --name=centos6.5 --arch=x86_64
task started: 2014-09-14_051537_import
task started ( id =Media  import time =Sun Sep 14 05:15:37 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path  /var/www/cobbler/ks_mirror/centos6 .5-x86_64:
creating new distro: centos6.5-x86_64
************省略
Keeping repodata as-is : /var/www/cobbler/ks_mirror/centos6 .2-x86_64 /repodata
*** TASK COMPLETE ***

查看导入的信息

1
2
[root@master ks_mirror] # ls
centos6.2-x86_64  centos6.5-x86_64  config

3.4 列出导入后的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@master ~] # cobbler list           # # 列出详细信息可以使用cobbler report
distros:
    centos6.2-x86_64
    centos6.5-x86_64
profiles:
    centos6.2-x86_64
    centos6.5-x86_64
systems:
repos:
images:
mgmtclasses:
packages:
files:

查看配置是否存在

1
2
[root@master ~] # cobbler profile find --distro=centos6.2-x86_64
centos6.2-x86_64

删除配置文件

1
[root@master ~] # cobbler profile remove --name=centos6.2-x86_64

删除distro

1
[root@master ~] # cobbler distro remove --name=centos6.2-x86_64

查看配置是否存在(已无)   ##删掉后重新import下。便于后面安装测试多版本系统选择

1
[root@master ~] # cobbler profile find --distro=centos6.2-x86_64

4.ks文件

4.1 定义ks文件,更改kickstart文件,可为http等,具体cobbler --help查看,这里采用我们自定制ks文件

默认ks文件位置,以.ks结尾  # 其中 sample.ks 为默认的ks文件

1
/var/lib/cobbler/kickstarts

4.2 更改指定系统版本对应的ks配置文件        #也可以自己编辑

1
2
3
4
[root@master kickstarts] # cp sample.ks centos6u5-x64.cfg
[root@master kickstarts] # cp sample.ks centos6u2-x64.cfg
[root@master ~] # cobbler profile edit --name=centos6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6u5-x64.cfg
[root@master ~] # cobbler profile edit --name=centos6.2-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6u2-x64.cfg

4.3 核实下配置详情

1
[root@master ~] # cobbler report

4.4 查看系统列表

1
2
3
[root@master ~] #  cobbler distro list
    centos6.2-x86_64
    centos6.5-x86_64

4.5 同步Cobbler配置 ##建议先执行cobbler check进行配置检查再执行cobbler sync,修改cobbler配置后都需要执行此步骤   这里列出,字数限制

4.6 创建PXE菜单密码  增加装机安全设置菜单密码

生成hash密码

支持两种不同类型的密码:  # sha1pass mypassword 或 openssl passwd -1 -salt sXiKzkus mypassword

1
2
[root@master ~] # openssl passwd -1 -salt leo lansgg
$1$leo$RWzbs9Ic6zwRbYj9qpkHp.

4.7 编辑装机密码

1
2
3
[root@master ~] # vim /etc/cobbler/pxe/pxedefault.template 
MENU TITLE Automation Install System with pxe  #修改
MENU MASTER PASSWD $1$leo$RWzbs9Ic6zwRbYj9qpkHp. #新增
1
2
[root@master ~] # vim /etc/cobbler/pxe/pxeprofile.template 
         MENU PASSWD  #新增

一样进行 cobbler check ; cobbler sync

PXE装机时选择装机系统版本,输入装机密码,效果图  #这里密码为lansgg

wKioL1QUXoTyTMyNAADgy0jQ840412.jpg

测试系统已经装好;密码是password  (上面配置好的)

wKioL1QUYOHgEVSxAAIVloUizmM710.jpg


本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1552525


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
9月前
|
网络协议 网络安全 数据安全/隐私保护
个人笔记-cobbler自动部署系统
个人笔记-cobbler自动部署系统
63 0
|
10月前
|
Linux 网络安全 开发工具
部署PXE远程安装服务
部署PXE远程安装服务
213 0
|
网络安全 Windows Shell
Ansible 管理windwos服务器(一)
不废话了,开始吧 Ansible管理Windwos需要在windows上执行Powershell脚本,并且Powershell脚本还有版本要求有必要条件:必要条件: (1) 必须开启以及配置Powershellhttps://github.
1554 0
|
存储 网络协议 开发工具