首页 > 代码库 > cobbler自动化部署指南

cobbler自动化部署指南

 文章结构

1. 前言2. cobbler安装3. 系统定制4. 参考链接

前言:

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

图1 BIOS启动项界面

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

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

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

 

cobbler安装:

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

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

1 server: set your cobbler ip here, e.g. 192.168.10.1602 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的模板

 1 ddns-update-style interim; 2  3 allow booting; 4 allow bootp; 5  6 ignore client-updates; 7 set vendorclass = option vendor-class-identifier; 8  9 option pxe-system-type code 93 = unsigned integer 16;10 11 subnet 192.168.10.0 netmask 255.255.255.0 {                       # 修改为cobbler所在主机的网段12      option routers             192.168.10.5;                     # 路由13      option domain-name-servers 192.168.10.160;                   # DNS server14      option subnet-mask         255.255.255.0;                    # netmast15      range dynamic-bootp        192.168.10.161 192.168.10.170;    # DHCP服务分配的IP范围16      default-lease-time         21600;17      max-lease-time             43200;18      next-server                $next_server;19      class "pxeclients" {20           match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";21           if option pxe-system-type = 00:06 {22                   filename "grub/grub-x86.efi";23           } else if option pxe-system-type = 00:07 {24                   filename "grub/grub-x86_64.efi";25           } else {26                   filename "pxelinux.0";27           }28      }29 30 }

(4) 设置DNS:

a. vim /etc/cobbler/settings

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

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

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

(5) 设置ntp服务:vim /etc/ntp.conf  

1 server 192.168.10.1602 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文件注明了不同系统架构所需的引导文件:

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

(10) 配置puppet:

a. vim /etc/cobbler/setting

1 puppet_auto_setup: 12 sign_puppet_certs_automatically: 13 remove_ols_puppet_cert_automatically: 1

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

 1 [main] 2     logdir = /var/log/puppet   3     rundir = /var/run/puppet 4     ssldir = $vardir/ssl 5  6 [agent] 7     classfile = $vardir/classes.txt 8     localconfig = $vardir/localconfig 9     server = cobbler.test.com10     certname = cobbler.test.com11 12 [master]13 certname = cobbler.test.com14 autosign = /etc/puppet/autosign.conf # 自动认证配置文件

新建自动认证文件:

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

(11) 启动服务

 1 /etc/init.d/puppetmaster start 2 chkconfig puppetmaster on 3  4 service cobblerd start 5 chkconfig cobblerd on 6  7 service httpd start 8 chkconfig httpd on 9 10 service xinetd start11 chkconfig xinetd on

# cobbler sync会自动启动named和dhcpd

(12) cobbler 设置信息同步

cobbler sync

(13) cobbler 检查

cobbler check

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

到此:cobbler安装完成!

 

系统定制

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

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

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

2. 信息查看

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

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

3. 定制kickstart文件和SINPPET文件

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

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

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

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

4. 定制cobbler profile

(1) 控制节点profile

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

(2) 计算节点profile

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

(3) 存储节点profile

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

(4) 查看profile:cobbler profile list

1 [root@cobbler ~]cobbler profile list2 centos6.5-compute3 centos6.5-control4 centos6.5-storage
5 centos6.5-x86_64

5. 定制系统

(1) 硬件发现

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

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

(2) 系统定制

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.160

其中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