利用Cobbler批量布署CentOS

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://kerry.blog.51cto.com/172631/648430

  从事网游运维的兄弟们应该深有感触,往往在开新服的时候需要大批量的布署新的服务器,时间紧迫而且量大,装系统、初始化,枯燥而又乏味,有时还容易出错,为了解放我们的双手,所以要实现自动化,Red Hat 最新发布了网络安装服务器套件 Cobbler(补鞋匠)集成了PXE、DHCP、DNS、Kickstart服务管理和yum仓库管理工具,相对之前的 Kickstart 更加快捷、方便的批量布署red hat、centos类系统

1、安装rpmforce源
CentOS 5.5默认的Repository里找不到Cobbler,先安装rpmforce这个Repository
cd /opt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

2、安装相关软件
yum -y install cobbler dhcp httpd xinetd tftp-server

3、检查cobbler配置
cobbler check

根椐提示修改配置文件
/var/lib/cobbler/settings 中的 server 和 next_server 对应的127.0.0.1修改为本服务器的 IP 地址,
manage_dhcp 设为 1,以便管理 DHCP

将 /etc/xinetd.d/tftp 中 disable = no

4、导入精简后的ISO
mkdir -p /mnt/iso
mount -o loop /data/KerryOS-1.0-i386.iso /mnt/iso
cobbler import --mirror=/mnt/iso --name=kerryOS-1.0-i386

查看导入结果
cobbler distro list

5、修改 DHCP 和 Kickstart 配置模板
#修改DHCP配置模板
vi /etc/dhcpd.conf
vi /etc/cobbler/dhcp.template


  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. subnet 192.168.9.0 netmask 255.255.255.0 {  
  10.      option routers          192.168.9.1;   #路由器地址  
  11.      option subnet-mask      255.255.255.0;  #子网掩码选项  
  12.      option domain-name-servers  192.168.9.1;  #DNS地址  
  13.      range dynamic-bootp     192.168.9.200 192.168.9.254;  #动态IP范围  
  14.      filename                "/pxelinux.0";  
  15.      default-lease-time      21600;     #缺省租约时间  
  16.      max-lease-time          43200; #最大租约时间  
  17.      next-server             192.168.9.230;  #指定引导服务器  

#修改 Kickstart 配置模板
mv /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg.bak
mv /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg.bak
vi /etc/cobbler/default.ks
vi /var/www/cobbler/kickstarts/kerryOS-1.0-i386/ks.cfg
vi /var/www/cobbler/kickstarts/kerryOS-1.0-xen-i386/ks.cfg
 


  1. # Kickstart file automatically generated by anaconda.  
  2. #Install OS instead of upgrade  
  3. install  
  4. #Use text mode install   
  5. text  
  6. #Use CDROM installation media   
  7. cdrom  
  8. lang en_US.UTF-8  
  9. keyboard us  
  10.  
  11. #Skip the X Configuration  
  12. skipx  
  13. #Use network installation  
  14. url --url=http://192.168.9.230/cobbler/ks_mirror/kerryOS-1.0-i386  
  15. #Network information   
  16. #network --device eth0 --bootproto static --ip 192.168.9.226 --netmask 255.255.255.0 --gateway 192.168.9.1 --nameserver 192.168.9.1 --noipv6 --onboot=yes --hostname kerry-web-001  
  17. network --device eth0 --bootproto dhcp --noipv6 --hostname kerry-web-001  
  18. #root -- 1q2w3e  
  19. rootpw --iscrypted $1$n07CbCot$GP.VBeICPHj.QkJb5Y2C2.  
  20. firewall --disabled  
  21. #System authorization information  
  22. authconfig --enableshadow --enablemd5  
  23. selinux --disabled  
  24. timezone --utc Asia/Shanghai  
  25. #System bootloader configuration   
  26. bootloader --location=mbr 
  27. #Clear the Master Boot Record  
  28. zerombr yes  
  29.  
  30. # Set the Mouse  
  31. mouse generic3ps/2  
  32.  
  33. # The following is the partition information you requested  
  34. # Note that any partitions you deleted are not expressed  
  35. # here so unless you clear all partitions first, this is  
  36. # not guaranteed to work  
  37.  
  38. #Partition clearing information  
  39. clearpart --all --initlabel  
  40. part /boot --fstype ext3 --size=200 --asprimary  
  41. part / --fstype ext3 --size=10000 
  42. part swap --size=2048 
  43. part /data --fstype ext3 --size=1 --grow  
  44.  
  45. #--- Reboot the host after installation is done  
  46. reboot  
  47.  
  48. %packages  
  49. %packages  
  50. @base  
  51. @core  
  52. @development-libs  
  53. @development-tools  
  54. @editors  
  55. @text-internet  
  56. keyutils  
  57. trousers  
  58. fipscheck  
  59. device-mapper-multipath  
  60. imake  
  61.  
  62. %post --nochroot  
  63. # Mount CDROM  
  64. mkdir -p /mnt/cdrom  
  65. mount -r -t iso9660 /tmp/cdrom /mnt/cdrom  
  66. cp /mnt/cdrom/ipmod /mnt/sysimage/root/ipmod > /dev/null  
  67.  
  68. umount /mnt/cdrom  
  69.  
  70. %post  
  71. #vim syntax on  
  72. sed -i "8 s/^/alias vi='vim'/" /root/.bashrc 2>/dev/null  
  73. echo 'syntax on' > /root/.vimrc 2>/dev/null  
  74.  
  75. #init_ssh  
  76. ssh_cf="/etc/ssh/sshd_config" 
  77. sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf  
  78. sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf  
  79.  
  80. #client  
  81. sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf  
  82.  
  83. # Remove the ISO File translation files  
  84. find / -name TRANS.TBL -exec rm {} \; /dev/null 2>/dev/null  
  85.  
  86. # Remove some unneeded services  
  87. #--------------------------------------------------------------------------------  
  88. cat << EOF 
  89. +--------------------------------------------------------------+  
  90. | === Welcome to Tunoff services === |  
  91. +--------------------------------------------------------------+  
  92. EOF  
  93. #---------------------------------------------------------------------------------  
  94. for i in `ls /etc/rc3.d/S*`  
  95. do  
  96.     CURSRV=`echo $i|cut -c 15-`  
  97. echo $CURSRV  
  98. case $CURSRV in  
  99.         crond | irqbalance | microcode_ctl | network | random | sshd | syslog | local )  
  100.     echo "Base services, Skip!"  
  101.     ;;  
  102.     *)  
  103.         echo "change $CURSRV to off"  
  104.         chkconfig --level 235 $CURSRV off  
  105.         service $CURSRV stop  
  106.     ;;  
  107. esac  
  108. done  
  109.  
  110. # file descriptors  
  111. ulimit -HSn 65535  
  112.  
  113. echo -ne "  
  114. * soft nofile 65536  
  115. * hard nofile 65536  
  116. " >>/etc/security/limits.conf  
  117.  
  118. #set sysctl  
  119. true > /etc/sysctl.conf  
  120. cat >> /etc/sysctl.conf << EOF 
  121. net.ipv4.ip_forward = 0 
  122. net.ipv4.conf.default.rp_filter = 1 
  123. net.ipv4.conf.default.accept_source_route = 0 
  124. kernel.sysrq = 0 
  125. kernel.core_uses_pid = 1 
  126. net.ipv4.tcp_syncookies = 1 
  127. kernel.msgmnb = 65536 
  128. kernel.msgmax = 65536 
  129. kernel.shmmax = 68719476736 
  130. kernel.shmall = 4294967296 
  131. net.ipv4.tcp_max_tw_buckets = 6000 
  132. net.ipv4.tcp_sack = 1 
  133. net.ipv4.tcp_window_scaling = 1 
  134. net.ipv4.tcp_rmem = 4096 87380 4194304  
  135. net.ipv4.tcp_wmem = 4096 16384 4194304  
  136. net.core.wmem_default = 8388608 
  137. net.core.rmem_default = 8388608 
  138. net.core.rmem_max = 16777216 
  139. net.core.wmem_max = 16777216 
  140. net.core.netdev_max_backlog = 262144 
  141. net.core.somaxconn = 262144 
  142. net.ipv4.tcp_max_orphans = 3276800 
  143. net.ipv4.tcp_max_syn_backlog = 262144 
  144. net.ipv4.tcp_timestamps = 0 
  145. net.ipv4.tcp_synack_retries = 1 
  146. net.ipv4.tcp_syn_retries = 1 
  147. net.ipv4.tcp_tw_recycle = 1 
  148. net.ipv4.tcp_tw_reuse = 1 
  149. net.ipv4.tcp_mem = 94500000 915000000 927000000  
  150. net.ipv4.tcp_fin_timeout = 1 
  151. net.ipv4.tcp_keepalive_time = 1200 
  152. net.ipv4.ip_local_port_range = 1024 65535  
  153. EOF  
  154.  
  155. /sbin/sysctl -p  
  156.  
  157. #close ctrl+alt+del  
  158. sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/" /etc/inittab  
  159.  
  160. #set purview   
  161. chmod 600 /etc/passwd  
  162. chmod 600 /etc/shadow  
  163. chmod 600 /etc/group  
  164. chmod 600 /etc/gshadow 

6、生成并同步所有配置
cobbler sync

7、启动相关的服务
/etc/init.d/httpd start
/etc/init.d/xinetd start 
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start

chkconfig --level 35 httpd on
chkconfig --level 35 xinetd on
chkconfig --level 35 dhcpd on
chkconfig --level 35 cobblerd on

#记得关闭防火墙
/etc/init.d/iptables stop
chkconfig --level 35 iptables off

8、相关配置文件及目录
cobbler相关配置文件: /etc/cobbler
cobbler数据存储目录: /var/www/cobbler
dhcp配置文件: /etc/dhcpd.conf
dhcp租期缓存文件: /var/lib/dhcpd/dhcpd.leases
pxe配置文件: /tftpboot/pxelinux.cfg/default
ks模板文件: /var/lib/cobbler/kickstarts_*.ks

9、客户端通过PXE安装系统
启动另一台新服务器,通过 PXE 启动进入,提示"boot:"时输入"menu"即可进入蓝色的 Cobbler 安装界面,选择安装项,自动完成系统安装。

10、重装系统
CentOS 5.5默认的Repository里找不到koan,先安装rpmforce这个Repository
cd /opt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

#在要重装的机器安装koan  
yum -y install koan 

#查看cobbler服务器有哪些安装盘  
koan --list-profiles --server=192.168.9.230

#选择要重装的系统并重启  
koan --replace-self --server=192.168.9.230 --profile=kerryOS-1.0-i386
reboot 

11、服务控制脚本
vi /etc/init.d/cobbler_all


  1. #!/bin/sh  
  2.  
  3. case $1 in  
  4.         start)  
  5.                /etc/init.d/httpd start  
  6.                /etc/init.d/xinetd start   
  7.                /etc/init.d/dhcpd start  
  8.                /etc/init.d/cobblerd start  
  9.                 ;;  
  10.         stop)  
  11.                /etc/init.d/httpd stop  
  12.                /etc/init.d/xinetd stop   
  13.                /etc/init.d/dhcpd stop  
  14.                /etc/init.d/cobblerd stop  
  15.                 ;;  
  16.         status)  
  17.                 /etc/init.d/httpd status  
  18.                 /etc/init.d/xinetd status   
  19.                 /etc/init.d/dhcpd status  
  20.                 /etc/init.d/cobblerd status  
  21.                 ;;       
  22.          sync)  
  23.                 cobbler sync  
  24.                 ;;                            
  25.         *)  
  26.                 echo "Input error,please in put 'start|stop|status|sync'!";   
  27.                 exit 2>&1 >/dev/null &  
  28.                 ;;   
  29.         esac 

chmod +x /etc/init.d/cobbler_all

/etc/init.d/cobbler_all  start|stop|startus|sync

本文出自 “聆听未来” 博客,请务必保留此出处http://kerry.blog.51cto.com/172631/648430

时间: 2024-12-31 02:41:29

利用Cobbler批量布署CentOS的相关文章

将ASP.NET Web应用程序布署至Windows Azure Web Sites

以下内容示范如何使用 Visual Studio 2012 将一个 http://www.aliyun.com/zixun/aggregation/14156.html">ASP.NET 撰写之Web 应用程序快速部署到 Windows Azure Web Sites. 首先您必须已经开启了 Windows Azure 三个月免费试用的测试账号,并且已经启用了技术预览功能 Windows Azure Web Sites,倘若您尚未开启 Windows Azure 账号,可准备一张信用卡并至

使用Cobbler批量安装操作系统

前言    在实际生产中,我们常常会遇到这样一种情况,就是我们需要同时安装几十甚至上百台服务器,如果我们使用U盘或者光盘的方式的话,或许老板直接就将我们辞退了.这里我们介绍一种能够实现自动化安装操作系统的方式.   我们搭建Cobbler的实验环境是基于CentOS 7.3 -1611 的基础的.   同时这个实验可以帮助你一步步的完成所有的操作,不过,如果你想自定义安装的内容的话,建议你先看本文 自定义kickstart文件 部分,以便有所印象. Cobbler 简介    Cobbler项目

Fabric:通过SSH来自动化管理Linux任务和布署应用

当要管理远程机器或者要布署应用时,虽然你有多种命令行工具可以选择,但是其中很多工具都缺少详细的使用文档. 在这篇教程中,我们将会一步一步地向你介绍如何使用 fabric 来帮助你更好得管理多台服务器. Fabric 是一个用 Python 编写的命令行工具库,它可以帮助系统管理员高效地执行某些任务,比如通过 SSH 到多台机器上执行某些命令,远程布署应用等. 在使用之前,如果你拥有使用 Python 的经验能帮你更好的使用 Fabric.当然,如果没有那也不影响使用 Fabric. 我们为什么要

Fabric - 通过 SSH 来自动化管理 Linux 任务和布署应用

当要管理远程机器或者要布署应用时,虽然你有多种命令行工具可以选择,但是其中很多工具都缺少详细的使用文档. 在这篇教程中,我们将会一步一步地向你介绍如何使用 fabric 来帮助你更好得管理多台服务器. 使用 Fabric 来自动化地管理 Linux 任务 Fabric 是一个用 Python 编写的命令行工具库,它可以帮助系统管理员高效地执行某些任务,比如通过 SSH 到多台机器上执行某些命令,远程布署应用等. 在使用之前,如果你拥有使用 Python 的经验能帮你更好的使用 Fabric.当然

类找不到-jaxws,WebService,布署到独立Tomcat7,无法启动

问题描述 jaxws,WebService,布署到独立Tomcat7,无法启动 工具:MyEclipse2014 for spring 问题: 使用jaxws开发的WebService服务端,布署到独立的Tomcat7.0.54时,无法启动. 日志 严重: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener java.lang.

flex项目怎么布署到iis服务器上啊?

问题描述 flex项目怎么布署到iis服务器上啊? 解决方案 解决方案二:不太了解解决方案三:FLEX只有java版本的吧?好像

通过Graphics将文字转换为图片,布署在win2003和win2008中却产生不同的文字效果

问题描述 发现布署在win2008的IIS7.5中,生成的文字要比在2003中粗很多(同一字型和字号),且锯齿严重.尝试将系统字体更换为2003的字体,重启后结果还是一样.有人遇到过同样问题吗?求解.bm=newBitmap(width,height);gp=Graphics.FromImage(bm);...gp.DrawString(text,font,brush,0,0); 解决方案 解决方案二:确定这个字体在两个系统里都安装了吧?且确定你的font确实指向的是该字体吧解决方案三:应该是没

为什么现在企业的ERP和MIS都在选用WEB方式,我发现C/S的VPN连接很好的呀,速度也快,现在的布署也不难

问题描述 为什么现在企业的ERP和MIS都在选用WEB方式,我发现C/S的VPN连接很好的呀,速度也快,现在的NET布署也不难,拷过去就行了,这样安全又快速,除了及时部署的考虑为,还有那些不足,让企业选用WEB的ERP进行企业管理呢??????????? 解决方案 解决方案二:web主要是考虑到产品实施.升级方便解决方案三:web方式的好处就在于绝大多数时候服务器端完成部署就可以了.c/s方式目前还是大量的客户端的更新比较麻烦.解决方案四:现在的ERP都是很成熟的,不用时常常更新啊除了更新的问题

利用Python批量生成任意尺寸的图片_python

实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- import threading from PIL import Image image_size = range(1, 1001) def start(): for size in image_size: t = threading.Thread(target=create_image, args=(s