cobbler自动化部署指南

前言:

给电脑装过系统的同学都知道,不论是从U盘、光驱或者其他设备装系统,都需要先在BIOS里设置开机启动项(或用开机快捷键设置)。从上大学到现在,我帮同学装系统少说也有上百次,但是还从来没有使用从网卡启动安装过,虽然以前也注意到,但一直不知道那是个什么玩意,见图(1)。前段时间在实习公司做Openstack的自动化安装与部署工作,才有幸接触到,原来这是一种从网卡远程启动的技术!
172009182642370

要从网卡启动,首先你的网卡要支持PXE(Preboot eXecution Environment,预启动环境),而PXE客户端存在于网卡的ROM中。PXE是由Intel开发,提供了一种由网卡启动计算机的机制,工作于Client/Server模式。通常有一台主机作为PXE的server端,并开通了PXE远程启动所依赖的DHCPTFTP等服务,客户机在通过网卡启动的过程中,会先向server端发出DHCP请求,从PXE服务器获得IP地址、网关及TFTP服务器信息后,然后通过TFTP协议(网卡ROM中已包含TFTP客户端)自动下载用于引导操作系统的引导文件(boot loader)到本地内存中(不同的操作系统架构使用不同的引导文件,后文会继续提到),然后通过引导程序加载内核与虚拟磁盘(initrd.img、vmlinuz),再通过http下载系统定制文件(ks文件)开始安装操作系统。

在实践操作中,以CentOS6.5为例,上文中提到的PXE引导文件为/var/tftboot/pxelinux.0,而要完成某种定制安装,需要新建/var/tftboot/pxtlinux文件夹,并在此文件夹下自定义*.cfg文件来完成操作系统的定制(如:语言,时区,密码,分区,网络配置,安装包选择,安装完系统的后续操作等),另外还要在此目录下新建一个名为default的文件,指定系统定制文件*.cfg的位置等。这么一连串的操作和系统定制显然非常繁琐,只会增加运维人员的负担!Redhat推出了kickstartcobbler两个软件,专门用来完成操作系统的定制与自动化部署安装,其中cobbler更是集成了kickstart,功能更为强大!

下面就一步步从安装cobbler开始学习!

cobbler安装:

0. 环境:Vmware虚拟环境 CentOS6.5-x86_64 (basic-server)

Ubuntu环境参考:http://blog.csdn.net/quqi99/article/details/7739798

IP:192.168.10.160 HOSTNAME:cobbler.test.com

注:需要关闭Vmware自带的DHCP服务;

1. 系统更新

yum -y update

2. 软件包安装:

yum –y install httpd tftp-server xinetd dhcp cobbler bind puppet puppet–server facter

注:(a) http用于PXE客户端从服务端下载安装操作系统所需的文件;(b) cobbler可以完成puppet的安装和给puppet客户端的签名认证;(c) 也可安装cobbler-web,提供了web界面,操作更容易。

3. 修改配置文件及启动服务:

(1) 关闭SELinux

sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config # 重启生效,setenforce 0 临时生效

(2) 设置cobbler server IP:

vim /etc/cobblet/settings
server: set your cobbler ip here, e.g. 192.168.10.160
next_server:  set your cobbler ip here, e.g. 192.168.10.160

(3) 设置DHCP:

a. vim /etc/cobbler/settings

manage_dhcp: 1

b. vim /etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板

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 {                       # 修改为cobbler所在主机的网段
     option routers             192.168.10.5;                     # 路由
     option domain-name-servers 192.168.10.160;                   # DNS server
     option subnet-mask         255.255.255.0;                    # netmast
     range dynamic-bootp        192.168.10.161 192.168.10.170;    # DHCP服务分配的IP范围
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                $next_server;
     class "pxeclients" {
          match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
          if option pxe-system-type = 00:06 {
                  filename "grub/grub-x86.efi";
          } else if option pxe-system-type = 00:07 {
                  filename "grub/grub-x86_64.efi";
          } else {
                  filename "pxelinux.0";
          }
     }
 
}

(4) 设置DNS:

a. vim /etc/cobbler/settings

manage_dns: 1
bind_master: 192.168.10.160
manage_forward_zones: [test.com]
manage_reverse_zones: [192.168.10]

b. DNS查询:vim /etc/cobbler/named.template

listen-on port 53 { any; }
allow-query { any; }

(5) 设置ntp服务:

vim /etc/ntp.conf  
server 192.168.10.160
fudge  192.168.10.160 stratum 10

(6) 防火墙设置

如iptables开启,需开放udp 53/67/69,tcp 80/443/25151/8140端口;

(7) 更改系统默认密码 (可选):

vim /etc/cobbler/settings
default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac." # 默认为"cobbler"

用 openssl passwd -1 重设密码;

(8) 设置tftp:vim /etc/xinetd.d/tftp

将disable 项设置成 no;

(9) 下载get-loaders (即前文中提到的引导文件)

cobbler get-loaders # 自动下载loaders文件在/var/lib/cobbler/loaders/目录下

其中README文件注明了不同系统架构所需的引导文件:

The requirements for netbooting each are as follows:
x86/x86_64 require syslinux (pxelinux.0), and menu.c32
ppc/ppc64  use yaboot
ia64       uses elilo

(10) 配置puppet:

a.

vim /etc/cobbler/setting
puppet_auto_setup: 1
sign_puppet_certs_automatically: 1
remove_ols_puppet_cert_automatically: 1

b. 修改puppet的配置文件: vim /etc/puppet/puppet.conf

[main]
    logdir = /var/log/puppet  
    rundir = /var/run/puppet
    ssldir = $vardir/ssl
 
[agent]
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    server = cobbler.test.com
    certname = cobbler.test.com
 
[master]
certname = cobbler.test.com
autosign = /etc/puppet/autosign.conf # 自动认证配置文件

新建自动认证文件:

touch /etc/puppet/autosign.conf
echo "*.test.com" >> /etc/puppet/autosign.conf # 假设cobbler部署的节点主机名为:*.test.com

(11) 启动服务

/etc/init.d/puppetmaster start
chkconfig puppetmaster on
 
service cobblerd start
chkconfig cobblerd on
 
service httpd start
chkconfig httpd on
 
service xinetd start
chkconfig xinetd on

# cobbler sync会自动启动named和dhcpd

(12) cobbler 设置信息同步

cobbler sync

注(坑):不要在/var/www/cobbler下创建软连接,或者放需要用的文件,因为cobbler sync会重写这个文件夹!

(13) cobbler 检查

cobbler check

注:如果前面临时关闭selinux,那么selinux错误提示可不用管;其他例如:端口设置,debmirror,cman,pykickstart等不需要的也可以不用管;

到此:cobbler安装完成!

系统定制

1. 导入镜像 :镜像目录 /mnt/ CentOS-6.5-x86_64-bin-DVD1.iso

mkdir -p /mnt/centos6.5
mount -o loop /mnt/ CentOS-6.5-x86_64-bin-DVD1.iso  /mnt/centos6.5/  # 挂载
cobbler import --path=/mnt/centos6.5/ --name=centos6.5

注:导入过程可能需要几分钟,可查看/var/www/cobbler/ks_mirror/centos5.5/目录文件生成情况或通过浏览器查看;

2. 信息查看

cobbler report       # 信息查看
cobbler distro list  # 查看导入distro列表,默认生成有一个与distro同名的profile
cobbler profile list # 查看profile列表

cobbler的系统结构:distro-->profile-->system,可以根据导入的distro定制profile,然后再由profile定制system;

3. 定制kickstart文件和SINPPET文件

例如:需要部署三类节点,控制节点、计算节点和存储节点,可分别定制以下三个ks文件(可通过图形界面软件system-config-kickstart很方便地定义)

Centos6.5-control.ks
Centos6.5-compute.ks
Centos6.5-storage.ks

定制的ks文件放置于 /var/lib/cobbler/kickstart/*ks,自定义的Snippet文件放置于 /var/lib/cobbler/snippet/下;

可以在ks文件中引用自定义的SNIPPET,这样不至于所有代码片段写在一起组成一个庞大的ks文件!最后系统调用的ks文件会从SNIPPETS中逐个去解析(复制);

4. 定制cobbler profile

(1) 控制节点profile

cobbler profile add --name=centos6.5-control  --kickstart=\
/var/lib/cobbler/kickstarts/centos6.5-control.ks --distro=centos6.5-x86_64

(2) 计算节点profile

cobbler profile add --name=centos6.5-compute --kickstart=\
/var/lib/cobbler/kickstarts/centos6.5-compute.ks --distro=centos6.5-x86_64

(3) 存储节点profile

cobbler profile add --name=centos6.5-storage --kickstart=\
/var/lib/cobbler/kickstarts/centos6.5-storage.ks --distro=centos6.5-x86_64

(4) 查看profile:cobbler profile list

[root@cobbler ~]cobbler profile list
centos6.5-compute
centos6.5-control
centos6.5-storage
centos6.5-x86_64

5. 定制系统

(1) 硬件发现

依次开启所有需要部署的节点,从PXE启动,会提示从DHCP服务器获取到IP;

节点的网络相关信息(主要:IP和对应的MAC地址)保存在/var/lib/dhcpd/dhcpd.leases;

(2) 系统定制(可根据MAC地址指定静态IP)

cobbler system add --name=node1 --mac=00:24:E8:64:24:59 --ip-address=192.168.10.161 --subnet=255.255.255.0 --gateway=192.168.10.5 --interface=eth0 --static=1 --if-gateway=192.168.10.5 --profile=centos6.5-control --name-servers-search=test.com --dns-name=node1.test.com --hostname=node1.test.com --netboot-enabled=true --name-servers=192.168.10.170

其中name和mac不能重复,mac是唯一指定到节点的凭证。--dns-name比较关键,cobbler会把 dns-name和ip写入DNS记录中,用于DNS解析;

(3) 重启所有节点,安装系统,并完成puppet注册(可在cobbler节点查看);

参考链接:

[1] http://zh.wikipedia.org/wiki/预启动执行环境

[2] 张子凡,OpenStack部署实践,人民邮电出版社,2014

[3] http://docs.fedoraproject.org/en-US/Fedora/17/html/Installation_Guide/s1-netboot-pxe-config.html

[4] http://www.cobblerd.org/manuals/2.6.0/

[5] http://fedoraproject.org/wiki/Anaconda/Kickstart

[6] http://skybug.blog.51cto.com/132577/1337792

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 68 queries in 0.419 seconds