cobbler自动化部署指南

本文发布时间: 2019-Mar-22
前言:  给电脑装过系统的同学都知道,不论是从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)到本地内存中(不同的操作系统架构使用不同的引导文件,后文会继续提到),然后通过引导程序加载内核与虚拟磁盘(initrd.img、vmlinuz),再通过http下载系统定制文件(ks文件)开始安装操作系统。  在实践操作中,以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 update2. 软件包安装: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) 关闭SELinuxsed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config # 重启生效,setenforce 0 临时生效(2)设置cobbler server IP:vim/etc/cobblet/settings1 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/settingsmanage_dhcp: 1b. 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/settingsmanage_dns: 1bind_master: 192.168.10.160manage_forward_zones: [test.com]manage_reverse_zones: [192.168.10] b. DNS查询:vim /etc/cobbler/named.template1 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/settingsdefault_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/setting1 puppet_auto_setup: 12 sign_puppet_certs_automatically: 13 remove_ols_puppet_cert_automatically: 1b. 修改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.iso1 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) 控制节点profile1 cobbler profile add --name=centos6.5-control --kickstart=2 /var/lib/cobbler/kickstarts/centos6.5-control.ks --distro=centos6.5-x86_64(2) 计算节点profile1 cobbler profile add --name=centos6.5-compute --kickstart=2 /var/lib/cobbler/kickstarts/centos6.5-compute.ks --distro=centos6.5-x86_64(3) 存储节点profile1 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 list1 [root@cobbler ~]cobbler profile list2 centos6.5-compute3 centos6.5-control4 centos6.5-storage5 centos6.5-x86_645. 定制系统(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节点查看);


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:10pm
栏目列表