cobbler介绍
cobbler是Redhat支持的一个开源项目,用来部署和安装系统。所以对Redhat系列os支持是比较好的。不过对ubuntu支持是非常差的。cobbler里不少设置,只针对redhat有效,同时也由于不同发行版的安装是有差异。cobbler感觉好像和ubuntu关系比较紧张.
cobbler不仅仅是一个pxe服务器,他还可以管理dns(bind),dhcp。一般数据中心里或者生产环境,是不允许dhcp, 但是pxe,必须需要dhcp,所以我们需要根据mac地址来分配IP,这样dhcp就不会影响到网络. 目标希望实现
- 自动化安装:centos和ubuntu
- 采用内网的源:centos会启用epel的源,ubuntu会把源指向内网。
- IP,网络,路由,主机名,FQDN 设置
一:准备OS
Centos 6.3,采用最小化安装就可以。设置采用默认,设置固定的IP地址。
设置源
采用网易的源和EPEL的源
http://mirror.bjtu.edu.cn/fedora-epel/6/i386/repoview/epel-release.html #yum -y install wget vim-enhanced #mv /bin/vi /bin/vi.save #ln -s /usr/bin/vim /bin/vi cd /etc/yum.repos.d/ mkdir backup mv *.repo ./backup wget http://mirrors.163.com/.help/CentOS6-Base-163.repo rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-7.noarch.rpm yum list |
设置hostname
cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.1.199.12 cobbler.test.com cobbler |
关闭selinux 这个需要重启机器才能生效,所以建议修改完重启
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config |
这个需要重启机器才能生效,所以建议修改完重启
[root@cobbler ~]# sestatus SELinux status: disabled |
关闭iptables cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off chkconfig iptables off /etc/init.d/ip6tables stop /etc/init.d/iptables stop |
二: 安装cobbler安装cobbler相关的包
如果希望cobbler可以管理dhcp,dns,需要把dns和dhcp都安装在同一台服务器上。如果你不管理dns,可以不需要安装bind.
yum -y install cman tftp-server dhcp cobbler cobbler-web bind pykickstart |
安装debmirror 需要用debmirror来下载ubuntu 12.04的源,做本地源.目前debmirrors, 只能使用rpm包安装, 先装依赖包
yum -y install ed patch perl perl-Compress-Zlib perl-Cwd perl-Digest-MD5 \ perl-Digest-SHA1 perl-LockFile-Simple perl-libwww-perl |
下载安装debmirrors
wget http://mirrors.sohu.com/fedora-epel/5Server/i386/debmirror-20090807-1.el5.noarch.rpm rpm -ivh debmirror-20090807-1.el5.noarch.rpm |
三:设置cobbler1:tftp服务和rsync服务
sed -i '/disable/c\\tdisable\t\t\t= no' /etc/xinetd.d/tftp sed -i -e 's/\=\ yes/\=\ no/g' /etc/xinetd.d/rsync service xinetd restart |
2: web可以登陆
sed -i 's/authn_denyall/authn_configfile/g' /etc/cobbler/modules.conf |
3: 设置cobbler web登陆,用户登陆密码
htdigest /etc/cobbler/users.digest "Cobbler" cobbler |
4: 设置cobbler登陆服务器地址
sed -i 's/server: 127.0.0.1/server: 10.1.199.12/g' /etc/cobbler/settings |
5:ks脚本关闭pxe,这样就不会重复安装
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings |
6:TFTP服务器 IP地址
sed -i 's/next_server: 127.0.0.1/next_server: 10.1.199.12/g' /etc/cobbler/settings |
7:cobbler管理rsync
sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings |
8:cobbler管理dhcp
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings |
dhcp服务是有cobbler来管理 /etc/cobbler/dhcp.template 修改下面的内容就可以。注释掉 range dynamic-bootp 。不然你内网就会出现一个dhcp服务器。
subnet 10.1.199.0 netmask 255.255.255.0 { option routers 10.1.199.1; option domain-name-servers 10.1.199.12; option subnet-mask 255.255.255.0; #range dynamic-bootp 10.1.199.100 10.1.199.150; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server $next_server; } |
9:cobbler管理dns (可选)
sed -i 's/manage_dns: 0/manage_dns: 1/g' /etc/cobbler/settings |
假设我们希望bind管理 chenshake.com ,反向 10.1.199.0 编辑 /etc/cobbler/settings
#manage_forward_zones: [] #manage_reverse_zones: [] manage_forward_zones: ['chenshake.com'] manage_reverse_zones: ['10.1.199'] |
编辑 /etc/cobbler/named.template, 只需要修改注释掉两行下的内容。
options { #listen-on port 53 { 127.0.0.1; }; listen-on port 53 { 127.0.0.1;10.1.199.12; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; #allow-query { localhost; }; allow-query { localhost;10.1.199.0/24; }; recursion yes; }; |
创建/ etc/cobbler/zone_templates/chenshake.com 文件
cp /etc/cobbler/dnsmasq.template /etc/cobbler/zone_templates/chenshake |
修改成下面的内容就可以, 我这里是为了方便,增加了一个A记录和CNAME,你可以去掉。(这是为了日后测试puppet准备的,你可以作为一个参考)
\$TTL 300 @ IN SOA $cobbler_server. nobody.chenshake.com. ( $serial ; Serial 600 ; Refresh 1800 ; Retry 604800 ; Expire 300 ; TTL ) IN NS $cobbler_server. www A 66.147.244.244 #puppet CNAME node06 $host_record |
10; 设置root默认密码 这个设置只针对centos有效。我默认的root密码是:root123
# openssl passwd -1 -salt 'random-phrase-here' 'root123' $1$random-p$99lAzJZEl9uunSaThe9oM0 |
修改/etc/cobbler/settings
#default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac." default_password_crypted: "$1$random-p$99lAzJZEl9uunSaThe9oM0" |
11: 启动相关服务 dhcp服务由于没有设置,所以无法启动。后面我们会对dhcp进行设置。另外启动named的服务时候,需要等待1,2分钟,生成一个key。
chkconfig httpd on chkconfig cobblerd on chkconfig named on chkconfig dhcpd on /etc/init.d/httpd restart /etc/init.d/cobblerd restart /etc/init.d/named restart |
12:设置debmirror
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf |
13:启动菜单
cobbler get-loaders |
检查cobbler cobbler提供一个工具,检查你的设置。看到提示,就表示全部工作都已经完成。 对cobbler所有修改,需要
cobbler sync |
检查
# cobbler check
No configuration problems found. All systems go. |
可以看到dns的zone文件已经生成
# ls /var/named/
10.1.199 chenshake.com data dynamic named.ca named.empty named.localhost named.loopback slaves |
四:web登陆
https://10.1.199.12/cobbler_web user:cobbler 密码就是上面设置的。
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地址的设置,就是通过这里实现。
Cobbler 文件解析
- /etc/cobbler 使用 yum 安装的 Cobbler 配置文件存放在
/etc/cobbler
下。 - /etc/cobbler/settings 为主配置文件,如果要使用基本的自动安装,修改这个文件就足够了
- /etc/cobbler/{dhcp,dns,pxe,dnsmasq} 是模板文件
- /etc/cobbler/users.digest 用于验证 web 访问方式的认证文件
- /etc/cobbler/modules.conf 模块配置文件
- /etc/cobbler/users.conf web 访问方式的授权文件 而具体的数据则在
/var/www/cobbler/
目录下。需要有足够的空间来存储这些文件。 - /var/www/cobbler/images/ 目录存放的是网络启动需要的 initrd 以及 linux 文件的链接
- /var/www/cobbler/ks_mirror/ 各个发行版的镜像文件
- /var/www/cobbler/repo_mirror/ cobbler 可用来生成 repos,此目录是用来存放 repo 的
- /var/log/cobbler 日志文件。
- /var/lib/cobbler/config/ cobbler 中 distros,profiles,systems 的 json 文件
- /var/lib/cobbler/backup/ 备份
- /var/www/cobller/snippets/ kickstarts 导入的脚本
- /var/www/cobller/triggers/ 脚本文件,默认为空
- /var/www/cobller/kickstarts/ kickstart 模板文件
五:Squid安装
如果多个节点同时安装,用squid可以加快速度,至少对ubuntu是非常有效的。目前centos的ks文件里,我还没搞明白如何设置squid,ubuntu的preseed文件里已经启用squid。所以我们需要安装squid。
yum -y install squid /etc/init.d/squid restart chkconfig squid on |
六:设置apache根目录访问
我们希望直接访问IP,就可以看到源的目录,尤其对于ubuntu的源来说,这样看起来更加规范。
# cat /etc/httpd/conf.d/welcome.conf <LocationMatch "^/+$"> Options Indexes FollowSymLinks Order allow,deny Allow from all </LocationMatch> |
重启apache,就可以 http://ip 看到目录。实际目录是 /var/www/html/
参考文档
http://blog.milford.io/2012/03/getting-a-basic-cobbler-server-going-on-centos/ http://www.3u3c.com/a/qitalinuxjishu/20120318/11_2.html http://www.chenshake.com/installation-and-configuration-centos-6-3-cobbler-1/