目录 [隐藏] Cobbler介绍Cobbler 是一个系统启动服务(boot server),可以通过网络启动(PXE)的方式用来快速安装、重装物理服务器和虚拟机,支持安装不同的 Linux 发行版和 Windows。该工具使用python开发,小巧轻便(才15k行代码),使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP,DNS,以及yum包镜像。 Cobbler 使用命令行方式管理,也提供了基于 Web 的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。 Cobbler提供以下服务集成: 同时,它和apache做了深度整合。通过 cobbler,可以实现对RedHat/Centos/Fedora系统的快速部署,同时也支持Suse 和Debian(Ubuntu)系统。 cobbler装机系统是较早前kickstart的升级版,优点比较容易配置,还自带web界面比较易于管理,不足在于中文资料较少。和Kickstart不同的是,使用cobbler不会因为在局域网中启动了dhcp而导致有些机器因为默认从pxe启动在重启服务器后加载tftp内容导致启动终止。 通过配置cobbler自动部署DHCP、TFTP、HTTP,在安装过程中加载kiskstart无人值守安装应答文件实现无人值守。从客户端使用PXE引导启动安装。 常用架构如下图: Cobbler的工作流程Cobbler工作流程: 综上所述,一个理想的安装环境是: Cobbler实验环境及目的Cobbler服务器系统:CentOS 6.5 64位 子网掩码:255.255.255.0 Cobbler的安装部署配置Cobbler安装环境准备使用前提1、你有一个DVD或ISO文件,您的操作系统的分布。 定义Yum源对于centos本身源 ,可根据自己所在地选择离自己近的镜像源,比如mirrors.163.com或mirrors.sohu.com cd /etc/yum.repos.d/mkdir backupmv *.repo ./backupwget -c -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repoyum list 安装epel源Cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新,当前最新版本为6-8 Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/5/i386/epel-release-5-4.noarch.rpmCentos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpmCentos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpmCentos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm安装:# rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'# yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)# yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)确定是否正确安装:yum list|grep -E '^epel'epel-release.noarch 6-8 installed也可以用这个命令: rpm -qa |grep -i epel 关闭selinux和防火墙关闭SELINUX sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/configsetenforce 0 # 使配置立即生效这个需要重启机器才能生效,所以建议修改完重启[root@cobbler ~]# sestatusSELinux status: disabled关闭防火墙Cobbler会使用到好几个端口,为了简化,直接把iptables关闭chkconfig ip6tables offchkconfig iptables off/etc/init.d/ip6tables stop/etc/init.d/iptables stop关闭防火墙和 SELinux 后重启系统# reboot Cobbler安装配置安装Cobbleryum安装cobbler包 yum -y install cobbler 确认是否正确安装 : rpm -qa |grep -i cobbler 安装cobbler相关的包 yum install tftp-server xinetd dhcp httpd rsync 安装运行cobbler需要的软件包 yum install pykickstart debmirror python-ctypes cman 根据需要来,如果要部署 debian/ubuntu 系统需要 debmirror 软件包;想使用电源管理功能的话需要安装 cman 或fence-agents;我的测试环境不需要bind,就没有安装 打开服务需要使用的端口 [root@localhost ~]# cat /etc/sysconfig/iptables# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT# SSH-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT# DNS - TCP/UDP-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT# DHCP-A INPUT -m state --state NEW -m udp -p udp --dport 68 -j ACCEPT# TFTP - TCP/UDP-A INPUT -m state --state NEW -m tcp -p tcp --dport 69 -j ACCEPT-A INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT# NTP-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT# HTTP/HTTPS-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT# Syslog for cobbler-A INPUT -m state --state NEW -m udp -p udp --dport 25150 -j ACCEPT# Koan XMLRPC ports-A INPUT -m state --state NEW -m tcp -p tcp --dport 25151 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 25152 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT/etc/init.d/iptables restart # 最后重启防火墙使配置生效 启动Cobbler服务 /etc/init.d/cobblerd start 可能会缺少的包: yum -y install python-ctypes 配置Cobbler设置http服务配置httpd配置文件 # vi /etc/httpd/conf/httpd.confServerName 127.0.0.1:80 启用wsgi模块 yum -y install mod_wsgi 启用wsgi模块只需要取消 /etc/httpd/conf.d/wsgi.conf 文件中 sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf 配置tftp与rsync修改 rsync 和 tftp 这两个服务的 xinetd 配置,只需修改 rsync 和tftp的配置文件,将 disable = yes 修改为 disable = no来开启tftp与rsync服务的开机启动 sed -i '/disable/c disable = no' /etc/xinetd.d/tftpsed -i -e 's/= yes/= no/g' /etc/xinetd.d/rsyncservice xinetd restart 配置Cobbler主配置文件在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。 Server 和 Next_Serverserver 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP。 sed -i 's/server: 127.0.0.1/server: 192.168.21.128/g' /etc/cobbler/settings next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings 防止误重装系统pxe安装 只允许一次,防止误操作 ( 在正式环境有用。实际测试来看,这个功能可以屏蔽掉 ) sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings 生成Cobbler安装系统root初始密码(1)这里生成密钥和配置默认密钥。这个设置只针对centos有效。用 openssl 生成一串密码后加入到 cobbler 的配置文件(/etc/cobbler/settings)里,替换 default_password_crypted 字段 # openssl passwd -1 -salt 'random-phrase-here' '111111'$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z. openssl passwd -1 -salt ‘任间字符’ ‘密码’ (是数字1 不是字母L) (2) 将上面的加密串加入cobbler配置文件中。 # vi /etc/cobbler/settings# 修改为如下配置default_password_crypted: '$1$random-p$WbZ3JxhRzCS/1Ne4S9g4Z.' Cobbler管理rsync默认为0,不对rsync进行管理,可以修改为1 进行管理 sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings Cobbler管理dhcp为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理 配置dhcp服务 sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings 接下来修改/etc/cobbler/dhcp.template,此文件是cobbler管理dhcp的模板,确保DHCP分配的地址和Cobbler在同一网段 # cp /etc/cobbler/dhcp.template{,.bak}# vi /etc/cobbler/dhcp.template # 需要修改192.168.0.0为自己网段subnet 192.168.21.0 netmask 255.255.255.0 { # 修改自己的路由 option routers 192.168.21.1; # 域名服务器地址 option domain-name-servers 8.8.8.8; # 子网掩码 option subnet-mask 255.255.255.0; # 设置dhcp服务器IP地址租用的范围 range dynamic-bootp 192.168.21.160 192.168.21.200; filename '/pxelinux.0'; default-lease-time 21600; #缺省租约时间 max-lease-time 43200; #最大租约时间 next-server $next_server; #指定引导服务器 } 其余部分维持默认值即可。 如果是多网卡需要指定DHCP服务的网络接口 #vi /etc/sysconfig/dhcpd修改内容如下:#Command line options here DHCPDARGS=eth0DHCPDARGS=eth0# 测试dhcp服务器配置是否正确# dhcpd # 在执行cobbler sync 之后测试才有效,因为没同步之前文件/etc/dhcp/dhcpd.conf还没有被同步修改 设置debmirror注释掉@dists和@arches的行 sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.confsed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf 下载引导操作系统文件加载部分缺失的网络boot-loaders cobbler get-loaders 检查Cobbler配置cobbler check 出现下面的提示,SELinux和防火墙前面已经设置过了,不用理会 The following are potential configuration items that you may want to fix:1 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:https://github.com/cobbler/cobbler/wiki/Selinux2 : since iptables may be running, ensure 69, 80/443, and 25151 are unblockedRestart cobblerd and then run 'cobbler sync' to apply changes 更多详情请看文后“可能遇到的错误”部分。 重启cobbler和更新相关配置重启服务 /etc/init.d/cobblerd restart 同步最新cobbler配置,它会根据配置自动修改dhcp,bind 等服务,因此我称之为容器的原因。 cobbler sync # 同步配置文件到dhcp服务器 启动相关服务并设置开机启动chkconfig httpd on chkconfig xinetd on chkconfig cobblerd onchkconfig dhcpd on/etc/init.d/httpd restart/etc/init.d/xinetd restart/etc/init.d/cobblerd restart/etc/init.d/dhcpd restart 设置Cobbler相关服务启动脚本cat <>< 'eof'=""> /etc/rc.d/init.d/cobbler#!/bin/sh# chkconfig: - 80 90# description:cobblercase $1 instart)/etc/init.d/httpd start/etc/init.d/xinetd start/etc/init.d/dhcpd start/etc/init.d/cobblerd start;;stop)/etc/init.d/httpd stop/etc/init.d/xinetd stop/etc/init.d/dhcpd stop/etc/init.d/cobblerd stop;;restart)/etc/init.d/httpd restart/etc/init.d/xinetd restart/etc/init.d/dhcpd restart/etc/init.d/cobblerd restart;;status)/etc/init.d/httpd status/etc/init.d/xinetd status/etc/init.d/dhcpd status/etc/init.d/cobblerd status;;sync)cobbler sync;;*)echo 'Input error,please in put 'start|stop|restart|status|sync'!';exit 2>&1 >/dev/null &;;esacEOFchmod +x /etc/rc.d/init.d/cobbler #添加脚本执行权限chkconfig cobbler on #添加开机启动service cobbler restart #重启cobbler Cobbler的使用挂载系统安装镜像到http服务器站点目录1、上传ISO镜像至服务器/usr/local/src/目录 mkdir -p /var/www/html/os/CentOS-6.5-x86_64 #创建挂载目录 3、挂载ISO镜像到/var/www/html/os/CentOS-6.5-x86_64目录 mount -t iso9660 -o loop /usr/local/src/CentOS-6.5-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.5-x86_64vi /etc/fstab #添加以下代码。实现开机自动挂载/usr/local/src/CentOS-6.5-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.5-x86_64 iso9660 defaults,ro,loop 0 0 备注:iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64 导入系统镜像到Cobbler从DVD中导入客户端的OS。这将自动设置了“x86_64”,并将其命名为CentOS-6.5-x86_64。{注:这需要一点时间,不要急。可查看/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/目录文件生成情况。} cobbler import --path=/var/www/html/os/CentOS-6.5-x86_64 --name=CentOS-6.5-x86_64 --arch=x86_64 #导入系统镜像文件,需要一段时间命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位参数说明: --name 为安装源定义一个名字--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64 注意1: 这个安装源的唯一标示 就是根据这两个参数来定义 从上面显示信息所知,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirrors下的centos6.5-x86_64目录下。同时会创建一个名字为centos6.5-x86_64的一个发布版本,以及一个名字为centos6.5-x86_64的profile文件。 注意2:/var/www/cobbler 目录必须具有足够容纳 Linux安装文件的空间。如果空间不够,可以对/var/www/cobbler目录进行移动,建软链接来修改文件存储位置。 # ln -s /home/cobbler /var/www 导入时间较长, 请耐心等待!!!在正常导完之后会给出如下提示: ……(省略)associating kickstarts*** TASK COMPLETE *** 有时可能会出现卡住的现象,如果导入时间过长,可通过比对文件大小来确定是否已经正常导入 比对文件大小的方法 [root@cobbler ~]# du -sh /var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/3.9G/var/www/cobbler/ks_mirror/CentOS-6.5-x86_64/[root@cobbler ~]# du -sh /var/www/html/os/CentOS-6.5-x86_644.1G/system/CentOS-6.5-x86_64/ 如果上述两个命令执行过显示的结果出入较大, 则可能文件没有正常导入 创建kickstarts自动安装脚本(For Centos/RHEL)注意:这是关键步骤之一 另外:操作系统 版本不同,KS也存在一定的差异,比如CentOS5 ,和CentOS6下就有不同,切记! 官网的文档在此: CentOS6 的 (能看到的配置案例很少) : https://access./knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html 默认kickstart文件是/var/lib/cobbler/kickstarts/sample.ks,需要手动为每个发行版单独指定,或单独修改。 cd /var/lib/cobbler/kickstarts #进入默认Kickstart模板目录vi /var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks #创建CentOS-6.5-x86_64安装脚本#platform=x86, AMD64, or Intel EM64T# System authorization informationauth --useshadow --enablemd5# System bootloader configurationbootloader --location=mbr# Partition clearing informationclearpart --all --initlabel#Partition informationpart swap --fstype swap --size=24000part /boot --fstype ext4 --size=200part / --fstype ext4 --size=15000part /opt --fstype ext4 --size=100 --grow # Use text mode installtext # keykey --skip# Firewall configurationfirewall --disable# Run the Setup Agent on first bootfirstboot --disable# System keyboardkeyboard us# System languagelang en_US# Use network installationurl --url=$tree# If any cobbler repo definitions were referenced in the kickstart profile, include them here.$yum_repo_stanza# Network information$SNIPPET('network_config')#network --bootproto=dhcp --device=em1# Reboot after installationreboot#Root passwordrootpw --iscrypted $default_password_crypted# SELinux configurationselinux --disabled# Do not configure the X Window Systemskipx# System timezonetimezone Asia/Shanghai# Install OS instead of upgradeinstall# Clear the Master Boot Recordzerombr %packages@ base@ coree2fsprogs-ckermitgrub-bluez-pin-firstboot-rhgb-zshkernel-devel-OpenIPMI-tools-xdeltanet-snmpsysstatlslk-nmapkernel-synapticscontrol-centerlibaiocompat-libstdc++-33subversion %pre$SNIPPET('log_ks_pre')$SNIPPET('kickstart_start')$SNIPPET('pre_install_network_config')# Enable installation monitoring$SNIPPET('pre_anamon') %post# Set default language[ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ksbakcat <>< eof=""> /etc/sysconfig/i18nLANG='en_US'SUPPORTED='en_US.UTF-8:en_US:en'SYSFONT='latarcyrheb-sun16'EOF ## Disable ipv6#/bin/cat >> /etc/modprobe.conf <>< eof="" #alias="" net-pf-10="" off="" #alias="" ipv6="" off="" #eof="" in/sed="" -i="" 's/networking_ipv6.*$/networking_ipv6="no/'" tc/sysconfig/network="" #disable="" ctrl-alt-del="" sed="" -i="" 's/^ca/#ca/'="" tc/inittab="" #="" set="" default="" run="" level="" to="" 3="" sed="" -i="" 's/^id:5/id:3/'="" tc/inittab="" cat="">> /etc/yum.repos.d/163.repo <>< eof="" [base]="" name="CentOS-$releasever" -="" base="" -="" 163.com="" baseurl="http://mirrors.163.com/centos/6/os/$basearch/" gpgcheck="1" gpgkey="http://mirrors.163.com/centos/6/os/x86_64/RPM-GPG-KEY-CentOS-6" eof="" #="" tune="" snmp="" settings="" [="" -d="" tc/snmp="" ]="" ||="" mkdir="" tc/snmp="" if="" [="" -f="" tc/snmp/snmpd.conf="" ];="" then="" cp="" tc/snmp/snmpd.conf="" tc/snmp/snmpd.conf.ksbak="" fi="" #="" stop="" unuseful="" services="" #="" nsrvs="" is="" the="" list="" for="" stop="" for="" i="" in="" `ls="" tc/rc3.d/s*`="" do="" cursrv="`echo" $i|cut="" -c="" 15-`="" echo="" $cursrv="" case="" $cursrv="" in="" crond="" |="" irqbalance="" |="" network="" |="" sshd="" |="" syslog="" )="" echo="" 'base="" services,="" skip!'="" ;;="" *)="" echo="" 'change="" $cursrv="" to="" off'="" chkconfig="" --level="" 235="" $cursrv="" off="" service="" $cursrv="" stop="" ;;="" esac="" done="" echo="" 'kernel.core_uses_pid="1'"> /etc/sysctl.confecho 'kernel.msgmax = 65536' >> /etc/sysctl.confecho 'kernel.msgmnb = 65536' >> /etc/sysctl.confecho 'kernel.shmall = 4294967296' >> /etc/sysctl.confecho 'kernel.shmmax = 68719476736' >> /etc/sysctl.confecho 'kernel.sysrq = 0' >> /etc/sysctl.confecho 'net.ipv4.conf.default.accept_source_route = 0' >> /etc/sysctl.confecho 'net.ipv4.conf.default.rp_filter = 1' >> /etc/sysctl.confecho 'net.ipv4.ip_forward = 0' >> /etc/sysctl.confecho 'net.ipv4.tcp_retrans_collapse = 0' >> /etc/sysctl.confecho 'net.ipv4.tcp_syncookies = 1' >> /etc/sysctl.confecho 'net.ipv4.tcp_max_tw_buckets = 6000 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_sack = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_window_scaling = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_rmem = 4096 87380 4194304 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_wmem = 4096 16384 4194304 ' >> /etc/sysctl.confecho 'net.core.wmem_default = 8388608 ' >> /etc/sysctl.confecho 'net.core.rmem_default = 8388608 ' >> /etc/sysctl.confecho 'net.core.rmem_max = 16777216 ' >> /etc/sysctl.confecho 'net.core.wmem_max = 16777216 ' >> /etc/sysctl.confecho 'net.core.netdev_max_backlog = 262144 ' >> /etc/sysctl.confecho 'net.core.somaxconn = 262144 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_max_orphans = 3276800 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_max_syn_backlog = 262144 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_timestamps = 0 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_synack_retries = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_syn_retries = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_tw_recycle = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_tw_reuse = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_mem = 94500000 915000000 927000000 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_fin_timeout = 1 ' >> /etc/sysctl.confecho 'net.ipv4.tcp_keepalive_time = 1200 ' >> /etc/sysctl.confecho 'net.ipv4.ip_local_port_range = 1024 65535 ' >> /etc/sysctl.conf echo '* soft nofile 65535' >> /etc/security/limits.confecho '* hard nofile 65535' >> /etc/security/limits.confecho '* soft nproc 65535' >> /etc/security/limits.confecho '* hard nproc 65535' >> /etc/security/limits.conf # configuratioin of the nameserver#cat > /etc/resolv.conf <>< eof#search="" localdomain#nameserver="" 8.8.8.8#eof#add="" a="" default="" gw#route="" add="" -net="" 10.0.0.0/16="" dev="" eth0="" gw="" 192.168.1.140="" #="" execute="" external="" scriptscd="" ootwget="" http://192.168.21.128/cobbler/ks_mirror/config/autoip.shsh="" oot/autoip.sh="" chmod="" 600="" tc/passwd="" chmod="" 600="" tc/shadow="" chmod="" 600="" tc/group="" chmod="" 600="" tc/gshadow:wq!=""> vi /var/www/cobbler/ks_mirror/config/autoip.sh #创建脚本,自动设置Linux系统静态IP地址、DNS、网关、计算机名称#!/bin/shROUTE=$(route -n|grep '^0.0.0.0'|awk '{print $2}')BROADCAST=$(/sbin/ifconfig eth0|grep -i bcast|awk '{print $3}'|awk -F':' '{print $2}')HWADDR=$(/sbin/ifconfig eth0|grep -i HWaddr|awk '{print $5}')IPADDR=$(/sbin/ifconfig eth0|grep 'inet addr'|awk '{print $2}'|awk -F':' '{print $2}')NETMASK=$(/sbin/ifconfig eth0|grep 'inet addr'|awk '{print $4}'|awk -F':' '{print $2}')cat >/etc/sysconfig/network-scripts/ifcfg-eth0<><><> /etc/hostshostname=$HOSTNAMEecho 'nameserver 8.8.8.8' > /etc/resolv.confecho 'nameserver 8.8.4.4' >> /etc/resolv.conf:wq! #保存退出 注意:kickstarts自动安装脚本中不允许有中文(注释有中文也不行),否则会报错 修改profile指定新的KS启动文件按照操作系统版本分别关联系统镜像文件和kickstart自动安装文件 例如:CentOS-6.5-x86_64版本的kickstart自动安装文件为:/var/lib/cobbler/kickstarts/sample.ks cobbler profile report --name CentOS-6.5-x86_64 #查看profile设置cobbler distro report --name CentOS-6.5-x86_64 #查看安装镜像文件信息cobbler profile remove --name=CentOS-6.5-x86_64 #移除profilecobbler profile add --name=CentOS-6.5-x86_64 --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks #添加cobbler profile edit --name=CentOS-6.5-x86_64 --distro=CentOS-6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6.5-x86_64.ks #编辑命令:cobbler profile add|edit|remove --name=安装引导名 --distro=系统镜像名 --kickstart=kickstart自动安装文件路径参数说明:--name:自定义的安装引导名,注意不能重复--distro:系统安装镜像名,用cobbler distro list可以查看--kickstart:与系统镜像文件相关联的kickstart自动安装文件(此文件必须预先准备好 )更多命令参数可执行cobbler --help查看再次执行cobbler check 检查下配置#查看Cobbler列表cobbler listcobbler reportcobbler profile reportcobbler distro list # 查看导入列表#通过profile查找对应的kickstart自动安装文件例如:ksfile=$( cobbler profile report --name CentOS-6.5-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );cat $ksfile; 重复上面的操作,把其他的系统镜像文件和kickstart自动安装文件关联起来 注意: yum install system-config-kickstart #安装yum groupinstall 'X Window System' #安装X Window图形界面system-config-kickstart #运行kickstart配置service cobbler sync #与cobbler sync作用相同service cobbler restart #重启cobbler 为Cobbler添加RPM仓库命令行下操作,添加epel和epel-test的repo cobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/6/x86_64/ --name=epel6-x86_64 --arch=x86_64 --breed=yumcobbler repo add --mirror=http://mirrors.ustc.edu.cn/epel/testing/6/x86_64/ --name=epel6-x86_64-testing --arch=x86_64 --breed=yum 这个只是对centos有效,如果你吧repo添加到profle,他会自动添加到节点上的repo上,指向内网,非常方便。 cobbler profile edit --name=CentOS6.5-x86_64 --repos='epel6-x86_64 epel6-x86_64-testing' 这个时候,就需要同步epel的源到本地,考验你的网络速度 cobbler reposync 也可以通过设置–mirror-locally=0不下载到本地,而通过kickstart server去仓库下载rpm包。 我内网已经有,所以就直接同步就可以。 rsync -avlH root@10.1.199.11:/var/www/cobbler/repo_mirror/ /var/www/cobbler/repo_mirror 另外还有两个源,你可以考虑使用 centos update和centos plus cobbler repo add --name=Centos6-CENTOSPLUS --mirror=http://mirrors.ustc.edu.cn/centos/6/centosplus/x86_64/ --arch=x86_64 --breed=yumcobbler repo add --name=Centos6-UPDATES --mirror=http://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ --arch=x86_64 --breed=yum 同步Cobbler配置获取上述所有配置的cobbler(包括启动DHCP等) cobbler sync cobbler会自动进行初始化工作,移除已经存在的启动项,然后根据模板拷贝loader文件。之后再生成pxe的配置文件,生成dhcp的配置文件,最后再重启dhcp服务。 到目前为止,全部的准备工作已经算全部完成,接下来要做的就是启动服务了。在之前的调试过程中,很多服务已经启动过了,这里只需要启动xinetd服务即可: /etc/init.d/xinetd start 至此,就可以使用虚拟机来测试Cobbler安装了。 添加指定客户机系统配置到Cobbler1. 指定一个网段使用特定的装机配置 cobbler system add --name=test_000 --ip=192.168.1.0/24 --profile=CentOS-5.9-x86_64 2. 添加一个指定服务器的装机配置 还可以指定ks参数。–kickstart=/var/lib/cobbler/kickstarts/webserver.ks cobbler system add --name=test_001 --hostname=test_001 --mac=00:0C:29:E3:81:32 --interface=eth0 --ip-address=192.168.1.123 --subnet=255.255.255.0 --gateway=192.168.1.1 --static=1 --profile=Centos-5.9-x86_64 3. 修改system配置 cobbler system add --name=test_001 --ip=192.168.21.118 变更system配置名称 cobbler system rename --name=test001 --newname=abc 4. 删除system配置 cobbler system remove --name=test_001 5. 查看定义的系统列表 cobbler system listtest_001 设置好后,需要执行排错和同步 cobbler checkcobbler sync Cobbler的Web管理界面的安装与配置用web 界面进行管理Cobbler是一个非常简便的方法, 只需要安装cobbler_web 软件包即可 yum -y install cobbler_web 2. 设置cobbler web登陆,用户登陆密码 htdigest /etc/cobbler/users.digest 'Cobbler' cobbler # 添加cobbler用户,提示输入2遍密码确认 3. 配置cobbler web 登录认证 vi /etc/cobbler/modules.conf修改authentication 部分中的module,修改后如下:module = authn_configfile # 修改认证方式为密码文件类型命令自动修改sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf 4. 同步cobbler # cobbler sync /输出*** TASK COMPLETE *** 表示配置无错误 5. 重启cobbler 与http # /etc/init.d/httpd restart# /etc/init.d/cobblerd restart 6. 访问web页面: https://192.168.21.128/cobbler_web 使用刚才创建的用户登录,密码就是上面设置的。 cobbler的使用,主要是集中在上面几个菜单里。这里简单解析一下。 Distros:这个其实就是发行版,类似Centos,ubuntu,suse。centos6.2和centos6.3,是不同的distros。假设我们导入一个centos6.3的iso,就是增加了一个Distros Profiles:针对Distros的设置,一个distros,可以保护多个profiles,包括不同的kickstart文件。源的设置,都是在这里设置。 Systems:针对是每个节点,这里可以指定节点的ip地址,dns name,还有就是ipmi的用户名和密码,实现远程开机,关机。这是一个重点,日后对机器的操作,全部在sytem的菜单里操作。system里,会指定节点使用哪个profile。 Repos:这个主要是针对Redhat和Centos有效,可以管理源,并且这些源,可以在profile里添加。比较方便。需要注意的是,对于ubuntu的源,只能在kickstart 脚本里指定。 Images:这个我没用到,看说明主要是针对不能pxe的机器,采用iso启动。 Kicsstart Templates:这是核心,cobbler内置了几个ks文件,你如果导入一个centos,系统会默认关联一个ks文件,你不需要做任何设置,就可以把os自动装完。对于ubuntu,我们就需要单独创建一个preseed文件,这些文件可以通过web管理和修改。非常方便。 Snippets:这是cobbler的精华。一些常用的设置,写成一个模块,让ks文件调用。这样更加灵活。例如centos的网络固定IP地址的设置,就是通过这里实现。 使用web页面管理Cobbler1:添加DVD源, 2:Events观察日志 5:客户端从网络启动后选择对应的工程文件开始自动部署 Cobbler测试安装1. 为了增加装机的安全,可设置装机密码 openssl passwd -1 -salt 'root' minunix$1$root$oZ2U5GhxaJ1b4q4tpPQnE0编辑pxedefault.template,加入密码部分vim /etc/cobbler/pxe/pxedefault.template在TIMEOUT 上面加入一行MENU MASTER PASSWD $1$root$oZ2U5GhxaJ1b4q4tpPQnE0vim /etc/cobbler/pxe/pxeprofile.template在LABEL 标签中加入一行 MENU PASSWD修改完之后记得同步配置, cobbler check && cobbler sync 2. 自定义PXE 菜单TITLE 3. 自定义安装系统 把需要安装系统的机器的bios设置为优先通过网络启动,然后重启机器,会看到一个启动界面,第一项默认是local,也就是说20秒如果不选择其它安装选项系统将正常启动,所以不用担心正常机器会受到影响。 首次安装操作系统1、 将需要安装系统的服务器,以下简称客户端,放到和cobbler服务端同样的子网中。 然后就能看到下面的图示内容。虚拟机通过dhcp获得了122段的ip,然后通过tftp获得到pxe的启动文件。 下图是cobbler的pxe安装启动菜单,这里有我们刚刚创建好的CentOS版本。 系统安装使用默认的ks文件,经过短暂的等待,系统就自动被安装好了。 完成后自动重启,可以用先前定义好的密码(“111111”)登陆了. Linux系统重装测试重装节点的系统,你可以在cobbler上设置,无论web还是命令行。不过你还有一种选择,就是直接在客户机上进行。 yum install koan 查看cobbler server上的配置文件,对于centos5.x 的系统koan不能采用yum安装,否则会因python版本过低而报错。 1,先确定当前linux系统中已经安装了koan软件。对于koan的安装可以放到ks文件中在安装系统的过程中完成安装操作。执行如下命令检查 # rpm -qa|grep koankoan-2.0.11-2.el6.noarch koan的命令使用,倒是比较简单:http://linux./man/1/koan 2,有了koan软件后可以执行如下操作,查看cobbler上的系统版本列表 # koan --server=192.168.21.128 --list=profiles- looking for Cobbler at http://192.168.21.128/cobbler_apicentos-6.0-i386centos-6.0-i386-kvmcentos6-vmcentos-6.0-x86_64 这里我们选择centos-6.0-i386来重装。可以执行如下命令 # koan --server=192.168.21.128 --profile=centos-6.0-i386 --replace-self- looking for Cobbler at http://192.168.21.128/cobbler_api- reading URL: http://192.168.21.128/cblr/svc/op/ks/profile/centos-6.0-i386install_tree: http://192.168.21.128/cobbler/ks_mirror/centos-6.0-i386downloading initrd initrd.img to /boot/initrd.imgurl=http://192.168.21.128/cobbler/images/centos-6.0-i386/initrd.img- reading URL: http://192.168.21.128/cobbler/images/centos-6.0-i386/initrd.imgdownloading kernel vmlinuz to /boot/vmlinuzurl=http://192.168.21.128/cobbler/images/centos-6.0-i386/vmlinuz- reading URL: http://192.168.21.128/cobbler/images/centos-6.0-i386/vmlinuz- ['/sbin/grubby', '--add-kernel', '/boot/vmlinuz', '--initrd', '/boot/initrd.img', '--args', ''ks=http://192.168.21.128/cblr/svc/op/ks/profile/centos-6.0-i386 ksdevice=link kssendmac lang= text '', '--copy-default', '--make-default', '--title=kick1313675750']- reboot to apply changes# reboot 红色部分是手工输入的,从其他部分信息可以看到,koan帮我们做了很多本该人工操作的内容。 由此看到,系统已经进入重装的状态了。 安装使用心得网上绝大部分资料中用到的IOS镜像都是DVD文件,我用minimal版本的iso也能成功安装。 在xen上测试安装客户机时,xen上新建的客户机网卡需要使用桥接模式,默认是NAT模式,如果是默认模式,则xen将会通过xen宿主机自带的DHCP服务器获取IP(192.168.122.*),从而导致通过网络安装失败。 以上所有内容虽然是在xen虚拟机上测试的,但完全可以直接使用于生产环境中,不会给现有环境带来任何影响。唯一需要做的就是规划好现有网络。 对于很多人担心的生成环境开启DHCP服务问题,我认为不会对现有生产环境产生任何影响,理由有二: 1、没有人会在装好系统后让网卡使用dhcp模式,通常都是为网卡配置静态ip 2、从测试过程中看到,就算是服务器默认设置成了通过pxe启动,而且也顺利的通过pxe启动了,但之后会收到cobbler的引导菜单。如果默认没有任何选择的话,20秒后会使用local方式加载,也就是启动硬盘上的系统。 综上所述,cobbler还是很安全的。 可能遇到的错误cobbler check检查出现的错误# cobbler check 可自动 检查安装环境是否满足cobbler服务的需要 执行完后可能出现下面的信息(按提示解决相关问题即可): The following are potential configuration items that you may want to fix: 1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost,or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. 2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network. 3 : you need to set some SELinux content rules to ensure cobbler works correctly in your SELinux environment, run the following: /usr/sbin/semanage fcontext -a -t public_content_t '/tftpboot/.*' && \ /usr/sbin/semanage fcontext -a -t public_content_t '/var/www/cobbler/images/.*' 4 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot.The 'cobbler get-loaders' command is the easiest way to resolve these requirements. 5 : change 'disable' to 'no' in /etc/xinetd.d/tftp 6 : change 'disable' to 'no' in /etc/xinetd.d/rsync 7 : since iptables may be running, ensure 69, 80, and 25151 are unblocked 8 : debmirror package is not installed, it will be required to manage debian deployments and repositories 9 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: 'openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'' to generate new one Restart cobblerd and then run 'cobbler sync' to apply changes. 上面这段信息大意就是: 1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,本实例配置ip为:192.168.21.128(此为cobbler服务地址) HostIP=$(/sbin/ip addr show dev eth0 | sed -n 3p | awk '{print $2}'| awk -F\/ '{print $1}')sed -i 's/^\(server:\).*$/\1 '$HostIP'/g' /etc/cobbler/settingssed -i 's/^\(next_server:\).*$/\1 '$HostIP'/g' /etc/cobbler/settings 2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,本实例配置ip为:192.168.21.128(注:此为DHCP服务地址) 3,SELinux的设置。如果上面已经关闭了SELinux就不用管了 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config[root@cobbler ~]# sestatusSELinux status: disabled 4,执行 cobbler get-loaders,系统将自动下载loader程序(下载引导文件),完成提示4的修复工作。 5,编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no sed -i 's/disable.*$/disable = no/g' /etc/xinetd.d/tftpsed -i 's/disable.*$/disable = no/g' /etc/xinetd.d/rsync或sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp sed -i 's/\=\ yes/\=\ no /g' /etc/xinetd.d/rsync 6,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no(注:此为使cobbler管理rsync功能) 7,在iptables中将69,80,25151端口打开。如果仅仅只是在内部环境中使用,建议直接将防火墙关掉 chkconfig ip6tables offchkconfig iptables off/etc/init.d/ip6tables stop/etc/init.d/iptables stop 8,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装, yum -y install debmirror cman安装debmirror和cman注释掉如下两行。#@dists='sid';#@arches='i386'; 9,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令: openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'其中“random-phrase-here”为干扰码# openssl passwd -1 -salt 'random-phrase-here''root123' # 生产cobbler安装系统root密码,密码为root123$1$random-p$99lAzJZEl9uunSaThe9oM0加入cobbler配置,修改 /etc/cobbler/settings#default_password_crypted: '$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.'default_password_crypted: '$1$random-p$99lAzJZEl9uunSaThe9oM0' 较验cobbler check出错Traceback (most recent call last):File '/usr/bin/cobbler', line 35, in ?sys.exit(app.main())File '/usr/lib/python2.4/site-packages/cobbler/cli.py', line 558, in mainrc = cli.run(sys.argv)File '/usr/lib/python2.4/site-packages/cobbler/cli.py', line 202, in runself.token = self.remote.login('', self.shared_secret)File '/usr/lib64/python2.4/xmlrpclib.py', line 1096, in __call__return self.__send(self.__name, args)File '/usr/lib64/python2.4/xmlrpclib.py', line 1383, in __requestverbose=self.__verboseFile '/usr/lib64/python2.4/xmlrpclib.py', line 1147, in requestreturn self._parse_response(h.getfile(), sock)File '/usr/lib64/python2.4/xmlrpclib.py', line 1286, in _parse_responsereturn u.close()File '/usr/lib64/python2.4/xmlrpclib.py', line 744, in closeraise Fault(**self._stack[0])xmlrpclib.Fault: 解决方法:此为BUG,按下方操作执行即可。 service cobblerd restartcobbler get-loaders 所有提示全部fix之后,执行 /etc/init.d/cobblerd restart 在此使用cobbler check检查系统,只出现如下提示,可以不用管 同步cobbler配置 cobbler sync 其它错误1、Dell机器安装报错:linux error parsing kickstart provice the etho does not exist 遇错误多看/var/log/message再根据百度谷歌解决。 附录Cobbler命令说明
命令参考: cobbler --helpcobbler distro --helpcobbler distro add --help Cobbler配置文件cobbler有许多的配置文件,但是只有少部分基本功能需要修改。 cd /etc/cobbler/cp settings settings.savesed -i 's/^[[:space:]]\+/ /' /etc/cobbler/settingssed -i 's/allow_dynamic_settings: 0/allow_dynamic_settings: 1/g' /etc/cobbler/settings修改该配置后重启cobbler服务/etc/init.d/cobblerd restart这个时候,你就可以通过命令行来编辑配置cobbler setting reportcobbler setting report [--name=option]cobbler setting edit --name=option --value=xxx 命令来动态修改cobbler配置 Cobbler目录说明1、Cobbler配置文件目录:/etc/cobbler 2、Cobbler数据目录:/var/lib/cobbler 3、系统安装镜像目录:/var/www/cobbler 4、日志目录:/var/log/cobbler 什么是PXE严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。 更多内容请参考:Linux Kickstart无人值守安装(上):http://baidu.blog.51cto.com/71938/158675 kickstart是什么许多系统管理员宁愿使用自动化的安装方法来安装红帽企业Linux.为了满足这种需要,红帽创建了kickstart安装方法。KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找?KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。 Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择. Kickstart给用户提供了一种自动化安装红帽企业Linux的方法. 如何执行kickstart安装kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行. 参考资料: 配置参考: kickstart自动安装文件配置参考: |
|
来自: 昵称25533110 > 《待分类1》