Cobbler是自动化安装的工具,由python开发。使用cobbler可以快速简单的安装部署系统。
Cobbler具有以下功能:
使用一个模板来配置DHCP服务(如果启用了DHCP管理)
将一个存储库(yum或rsync)建立镜像或解压缩的媒介,用来注册一个新的操作系统。
在DHCP配置文件中为需要安装的机器创建一个条目,并指定参数(IP/MAC).
在TFTP服务目录下创建适当的PXE文件
重新启动DHCP服务以反映更改
重启机器以开始安装(如果电源管理已启动)
Cobbler部署
环境准备:
cobbler1 192.168.1.10
安装所需软件包:
1
<code>yum </code><code>install</code> <code>-y httpd dhcp tftp cobbler cobbler-web pykickstart</code>
安装完成之后,在httpd的conf.d目录下会生成cobbler.web.conf和cobber.conf 两个文件。
2
3
4
5
6
7
8
9
<code>[root@cobbler1 ~]</code><code># ls -l /etc/httpd/conf.d/</code>
<code>total 36</code>
<code>-rw-r--r--. 1 root root 2926 Jul 18 23:30 autoindex.conf</code>
<code>-rw-r--r--. 1 root root 1087 Jan 24 2016 cobbler.conf</code>
<code>-rw-r--r--. 1 root root 1165 Jan 24 2016 cobbler_web.conf</code>
<code>-rw-r--r--. 1 root root 366 Jul 18 23:30 README</code>
<code>-rw-r--r--. 1 root root 9438 Jul 18 23:22 ssl.conf</code>
<code>-rw-r--r--. 1 root root 1252 Jul 18 23:22 userdir.conf</code>
<code>-rw-r--r--. 1 root root 824 Jul 18 23:22 welcome.conf</code>
启动Apache和cobbler:
<code>systemctl start httpd</code>
<code>systemctl start cobblerd</code>
执行cobbler check,查看当前环境的配置说明,执行说明中的步骤:
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<code>[root@cobbler1 ~]</code><code># cobbler check </code>
<code>The following are potential configuration items that you may want to fix:</code>
<code>1 : The </code><code>'server'</code> <code>field </code><code>in</code> <code>/etc/cobbler/settings</code> <code>must be </code><code>set</code> <code>to something </code>
<code>other than localhost, or kickstarting features will not work. This should </code>
<code>be a resolvable </code><code>hostname</code> <code>or IP </code><code>for</code> <code>the boot server as reachable by all </code>
<code>machines that will use it.</code>
<code>2 : For PXE to be functional, the </code><code>'next_server'</code> <code>field </code><code>in</code>
<code>/etc/cobbler/settings</code> <code>must be </code><code>set</code> <code>to something other than 127.0.0.1, and </code>
<code>should match the IP of the boot server on the PXE network.</code>
<code>3 : SELinux is enabled. Please review the following wiki page </code><code>for</code> <code>details </code>
<code>on ensuring cobbler works correctly </code><code>in</code> <code>your SELinux environment:</code>
<code> </code><code>https:</code><code>//github</code><code>.com</code><code>/cobbler/cobbler/wiki/Selinux</code>
<code>4 : change </code><code>'disable'</code> <code>to </code><code>'no'</code> <code>in</code> <code>/etc/xinetd</code><code>.d</code><code>/tftp</code>
<code>5 : some network boot-loaders are missing from </code><code>/var/lib/cobbler/loaders</code><code>, </code>
<code>you may run </code><code>'cobbler get-loaders'</code> <code>to download them, or, </code><code>if</code> <code>you only want </code>
<code>to handle x86</code><code>/x86_64</code> <code>netbooting, you may ensure that you have installed a </code>
<code>*recent* version of the syslinux package installed and can ignore this </code>
<code>message entirely. Files </code><code>in</code> <code>this directory, should you want to support all</code>
<code> </code><code>architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. </code>
<code> </code><code>The </code><code>'cobbler get-loaders'</code> <code>command</code> <code>is the easiest way to resolve these </code>
<code> </code><code>requirements.</code>
<code>6 : </code><code>enable</code> <code>and start rsyncd.service with systemctl</code>
<code>7 : debmirror package is not installed, it will be required to manage debian</code>
<code> </code><code>deployments and repositories</code>
<code>8 : The default password used by the sample templates </code><code>for</code> <code>newly installed </code>
<code>machines (default_password_crypted </code><code>in</code> <code>/etc/cobbler/settings</code><code>) is still </code><code>set</code> <code>to</code>
<code> </code><code>'cobbler'</code> <code>and should be changed, try: "openssl </code><code>passwd</code> <code>-1 -salt </code>
<code> </code><code>'random-phrase-here'</code> <code>'your-password-here'</code><code>" to generate new one</code>
<code>9 : fencing tools were not found, and are required to use the (optional) </code>
<code>power management features. </code><code>install</code> <code>cman or fence-agents to use them</code>
<code>Restart cobblerd and </code><code>then</code> <code>run </code><code>'cobbler sync'</code> <code>to apply changes.</code>
根具体的提示来安装配置cobbler.
<code># vim /etc/cobbler/settings </code>
<code>next_server: 192.168.1.10</code>
<code>server: 192.168.1.10</code>
<code># vim /etc/xinetd.d/tftp</code>
<code> </code><code>disable = no</code>
<code># cobbler get-loaders</code>
<code># systemctl start rsyncd</code>
设置密码:
<code># openssl passwd -1 -salt 'cobbler' 'cobbler'</code>
<code>$1$cobbler$M6SE55xZodWc9.vAKLJs6.</code>
配置密码:
<code># vim /etc/cobbler/settings</code>
<code>default_password_crypted: </code><code>"$1$cobbler$M6SE55xZodWc9.vAKLJs6."</code>
重启cobbler,执行check:
<code># systemctl restart cobblerd</code>
<code># cobbler check</code>
配置cobbler, 使用cobbler管理DHCP(此配置文件是YAML格式,对格式要求严格):
<code>manage_dhcp: 1</code>
修改dhcp的模板文件:
<code># vim /etc/cobbler/dhcp.template </code>
<code>subnet 192.168.1.0 netmask 255.255.255.0 {</code>
<code> </code><code>option routers 192.168.1.2;</code>
<code> </code><code>option domain-name-servers 192.168.1.2;</code>
<code> </code><code>option subnet-mask 255.255.255.0;</code>
<code> </code><code>range dynamic-bootp 192.168.1.100 192.168.1.254;</code>
重启cobbler:
<code># cobbler sync</code>
导入一个cs7镜像(此处的镜像最好是完整镜像,方便包的定制安装):
<code># mount /dev/cdrom /mnt/</code>
<code># cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64</code>
导入一个cs6镜像:
导入前需要先卸载镜像,然后装载新的镜像,
<code># umount /mnt/</code>
<code># cobbler import --path=/mnt/ --name=CentOS-6-x86_64 --arch=x86_64</code>
提示:如果没有光驱,直接上传到本地的ISO镜像,通过下面的命令挂载到/mnt目录:
<code># ll</code>
<code>-rw-r--r--. 1 root root 632291328 Oct 7 17:10 CentOS-7-x86_64-DVD-1511.iso</code>
<code># mount -o loop /opt/CentOS-7-x86_64-DVD-1511.iso /mnt</code>
导入成功后,查看镜像信息:
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<code>[root@cobbler1 /]</code><code># cobbler profile</code>
<code>usage</code>
<code>=====</code>
<code>cobbler profile add</code>
<code>cobbler profile copy</code>
<code>cobbler profile dumpvars</code>
<code>cobbler profile edit</code>
<code>cobbler profile </code><code>find</code>
<code>cobbler profile getks</code>
<code>cobbler profile list</code>
<code>cobbler profile remove</code>
<code>cobbler profile rename</code>
<code>cobbler profile report</code>
<code>[root@cobbler1 /]</code><code># cobbler profile list</code>
<code> </code><code>CentOS-6-x86_64</code>
<code> </code><code>CentOS-7-x86_64</code>
<code>[root@cobbler1 /]</code><code># cobbler profile report</code>
<code>Name : CentOS-7-x86_64</code>
<code>TFTP Boot Files : {}</code>
<code>Comment : </code>
<code>DHCP Tag : default</code>
<code>Distribution : CentOS-7-x86_64</code>
<code>Enable gPXE? : 0</code>
<code>Enable PXE Menu? : 1</code>
<code>Fetchable Files : {}</code>
<code>Kernel Options : {} </code><code># 可添加内核参数</code>
<code>Kernel Options (Post Install) : {}</code>
<code>Kickstart : </code><code>/var/lib/cobbler/kickstarts/sample_end</code><code>.ks</code>
<code>Kickstart Metadata : {}</code>
<code>Management Classes : []</code>
<code>Management Parameters : <<inherit>></code>
<code>Name Servers : []</code>
<code>Name Servers Search Path : []</code>
<code>Owners : [</code><code>'admin'</code><code>]</code>
<code>Parent Profile : </code>
<code>Internal proxy : </code>
<code>Red Hat Management Key : <<inherit>></code>
<code>Red Hat Management Server : <<inherit>></code>
<code>Repos : []</code>
<code>Server Override : <<inherit>></code>
<code>Template Files : {}</code>
<code>Virt Auto Boot : 1</code>
<code>Virt Bridge : xenbr0</code>
<code>Virt CPUs : 1</code>
<code>Virt Disk Driver Type : raw</code>
<code>Virt File Size(GB) : 5</code>
<code>Virt Path : </code>
<code>Virt RAM (MB) : 512</code>
<code>Virt Type : kvm</code>
<code>Name : CentOS-6-x86_64</code>
<code>Distribution : CentOS-6-x86_64</code>
<code>Kernel Options : {}</code>
镜像存放的路径为:
/var/www/cobbler/ks_mirror
自定义kickstarts 文件,并将定义的kickstarts 文件放在/var/lib/cobbler/kickstarts目录下:
<code># cobbler profile edit --name=CentOS-6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-6-x86_64.cfg</code>
<code># cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg</code>
CentOS7 kickstarts文件的内容为:
<code>#Kickstart Config</code>
<code>#platform=x86, AMD64, or Intel EM64T</code>
<code>#System language</code>
<code>lang en_US</code>
<code>#System keyboard</code>
<code>keyboard us</code>
<code>#Sytem timezone</code>
<code>timezone Asia</code><code>/Shanghai</code>
<code>#Root password</code>
<code>rootpw --iscrypted $default_password_crypted</code>
<code>#Use text mode install</code>
<code>text</code>
<code>#Install OS instead of upgrade</code>
<code>install</code>
<code>#Use NFS installation Media</code>
<code>url --url=$tree</code>
<code>#System bootloader configuration</code>
<code>bootloader --location=mbr</code>
<code>#Clear the Master Boot Record</code>
<code>zerombr</code>
<code>#Partition clearing information</code>
<code>clearpart --all --initlabel </code>
<code>#Disk partitioning information</code>
<code>part </code><code>/boot</code> <code>--fstype xfs --size 1024 --ondisk sda</code>
<code>part swap --size 16384 --ondisk sda</code>
<code>part / --fstype xfs --size 1 --grow --ondisk sda</code>
<code>#System authorization infomation</code>
<code>auth --useshadow --enablemd5 </code>
<code>#Network information</code>
<code>$SNIPPET(</code><code>'network_config'</code><code>)</code>
<code>#network --bootproto=dhcp --device=em1 --onboot=on</code>
<code># Reboot after installation</code>
<code>reboot</code>
<code>#Firewall configuration</code>
<code>firewall --disabled </code>
<code>#SELinux configuration</code>
<code>selinux --disabled</code>
<code>#Do not configure XWindows</code>
<code>skipx</code>
<code>#Package install information</code>
<code>%pre</code>
<code>$SNIPPET(</code><code>'log_ks_pre'</code><code>)</code>
<code>$SNIPPET(</code><code>'kickstart_start'</code><code>)</code>
<code>$SNIPPET(</code><code>'pre_install_network_config'</code><code>)</code>
<code># Enable installation monitoring</code>
<code>$SNIPPET(</code><code>'pre_anamon'</code><code>)</code>
<code>%end</code>
<code>%packages</code>
<code>@ base</code>
<code>@ core</code>
<code>sysstat</code>
<code>iptraf</code>
<code>ntp</code>
<code>lrzsz</code>
<code>ncurses-devel</code>
<code>openssl-devel</code>
<code>zlib-devel</code>
<code>OpenIPMI-tools</code>
<code>mysql</code>
<code>nmap</code>
<code>screen</code>
<code>%post</code>
<code>systemctl disable postfix.service</code>
<code>%yum_config_stanza</code>
CS6 kickstarts 文件内容:
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<code>#Kickstart Configurator for cobbler</code>
<code>key --skip</code>
<code>zerombr </code><code>yes</code>
<code>part </code><code>/boot</code> <code>--fstype ext4 --size 1024 --ondisk sda</code>
<code>part / --fstype ext4 --size 1 --grow --ondisk sda</code>
<code>#Reboot after installation</code>
<code>@ chinese-support</code>
<code>e2fsprogs-devel</code>
<code>keyutils-libs-devel</code>
<code>krb5-devel</code>
<code>libselinux-devel</code>
<code>libsepol-devel</code>
<code>lockdev</code>
<code>minicom</code>
<code>#/bin/sed -i 's/#Protocol 2,1/Protocol 2/' /etc/ssh/sshd_config</code>
<code>/bin/sed</code> <code>-i </code><code>'s/^ca::ctrlaltdel:/#ca::ctrlaltdel:/'</code> <code>/etc/inittab</code>
<code>/sbin/chkconfig</code> <code>--level 3 diskdump off</code>
<code>/sbin/chkconfig</code> <code>--level 3 dc_server off</code>
<code>/sbin/chkconfig</code> <code>--level 3 nscd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 netfs off</code>
<code>/sbin/chkconfig</code> <code>--level 3 psacct off</code>
<code>/sbin/chkconfig</code> <code>--level 3 mdmpd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 netdump off</code>
<code>/sbin/chkconfig</code> <code>--level 3 readahead off</code>
<code>/sbin/chkconfig</code> <code>--level 3 wpa_supplicant off</code>
<code>/sbin/chkconfig</code> <code>--level 3 mdmonitor off</code>
<code>/sbin/chkconfig</code> <code>--level 3 microcode_ctl off</code>
<code>/sbin/chkconfig</code> <code>--level 3 xfs off</code>
<code>/sbin/chkconfig</code> <code>--level 3 lvm2-monitor off</code>
<code>/sbin/chkconfig</code> <code>--level 3 iptables off</code>
<code>/sbin/chkconfig</code> <code>--level 3 nfs off</code>
<code>/sbin/chkconfig</code> <code>--level 3 ipmi off</code>
<code>/sbin/chkconfig</code> <code>--level 3 autofs off</code>
<code>/sbin/chkconfig</code> <code>--level 3 iiim off</code>
<code>/sbin/chkconfig</code> <code>--level 3 cups off</code>
<code>/sbin/chkconfig</code> <code>--level 3 openibd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 saslauthd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 ypbind off</code>
<code>/sbin/chkconfig</code> <code>--level 3 auditd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 rdisc off</code>
<code>/sbin/chkconfig</code> <code>--level 3 tog-pegasus off</code>
<code>/sbin/chkconfig</code> <code>--level 3 rpcgssd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 kudzu off</code>
<code>/sbin/chkconfig</code> <code>--level 3 gpm off</code>
<code>/sbin/chkconfig</code> <code>--level 3 arptables_jf off</code>
<code>/sbin/chkconfig</code> <code>--level 3 dc_client off</code>
<code>/sbin/chkconfig</code> <code>--level 3 lm_sensors off</code>
<code>/sbin/chkconfig</code> <code>--level 3 apmd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 sysstat off</code>
<code>/sbin/chkconfig</code> <code>--level 3 cpuspeed off</code>
<code>/sbin/chkconfig</code> <code>--level 3 rpcidmapd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 rawdevices off</code>
<code>/sbin/chkconfig</code> <code>--level 3 rhnsd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 nfslock off</code>
<code>/sbin/chkconfig</code> <code>--level 3 winbind off</code>
<code>/sbin/chkconfig</code> <code>--level 3 bluetooth off</code>
<code>/sbin/chkconfig</code> <code>--level 3 isdn off</code>
<code>/sbin/chkconfig</code> <code>--level 3 portmap off</code>
<code>/sbin/chkconfig</code> <code>--level 3 anacron off</code>
<code>/sbin/chkconfig</code> <code>--level 3 irda off</code>
<code>/sbin/chkconfig</code> <code>--level 3 NetworkManager off</code>
<code>/sbin/chkconfig</code> <code>--level 3 acpid off</code>
<code>/sbin/chkconfig</code> <code>--level 3 pcmcia off</code>
<code>/sbin/chkconfig</code> <code>--level 3 atd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 sendmail off</code>
<code>/sbin/chkconfig</code> <code>--level 3 haldaemon off</code>
<code>/sbin/chkconfig</code> <code>--level 3 smartd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 xinetd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 netplugd off</code>
<code>/sbin/chkconfig</code> <code>--level 3 readahead_early off</code>
<code>/sbin/chkconfig</code> <code>--level 3 ntpd on</code>
<code>/sbin/chkconfig</code> <code>--level 3 avahi-daemon off</code>
<code>/sbin/chkconfig</code> <code>--level 3 ip6tables off</code>
<code>/sbin/chkconfig</code> <code>--level 3 restorecond off</code>
<code>/sbin/chkconfig</code> <code>--level 3 postfix off</code>
这里关闭了一些不必要的启动项。
行之后,默认的文件就变为我们指定的文件了,可以通过cobbler profile report查看。
添加内核参数,使CS7启动后网卡格式自动修改为ethx格式:
<code># cobbler profile edit --name=CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'</code>
确认内核参数已经加上:
<code># cobbler profile report CentOS-7-x86_64|grep "Kernel Options" </code>
<code>Kernel Options : {</code><code>'biosdevname'</code><code>: </code><code>'0'</code><code>, </code><code>'net.ifnames'</code><code>: </code><code>'0'</code><code>}</code>
执行sync命令,使配置生效:
Cobbler 自动安装
可以通过创建的虚拟机来查看Cobbler的安装过程,首先启动TFTP(如果没有安装需要安装):
<code># yum install xinetd -y </code>
<code># systemctl start xinetd</code>
新启动一个客户端,默认从网络启动,会自动从cobbler服务器指定的DHCP获取IP地址,进行安装和自动设置。如果在实际的生产环境中需要单独划分一个vlan进行装机。
Cobbler自动重装系统
如果需要从一个已经安装了的CentOS系统重新安装新的系统,可以执行下面的命令查看cobbler服务器上提供的安装镜像:
如果没有koan命令需要先yum安装:
<code># koan --server=192.168.1.10 --list=profiles # 指定cobbler服务器</code>
<code>- looking </code><code>for</code> <code>Cobbler at http:</code><code>//192</code><code>.168.1.10:80</code><code>/cobbler_api</code>
<code>CentOS-7-x86_64 </code><code>#显示当前可用的系统软件版本</code>
<code>CentOS-6-x86_64</code>
指定需要重装的软件版本,此处指定为CS6:
<code># koan --replace-self --server=192.168.1.10 --profile=CentOS-6-x86_64</code>
根据提示进行reboot 即可开始安装。
使用Cobbler-Web来管理Cobbler
默认的用户和密码都为cobbler
修改用户名和密码:
<code># htdigest /etc/cobbler/users.digest "Cobbler" cobbler # “描述” 用户</code>
输入此命令后,会提示修改密码。
修改cobbler的启动安装界面
Cobbler的启动安装界面可以有自定义的提示,通修改pxe的模板文件来实现:
<code>[root@cobbler1 ~]</code><code># cat /etc/cobbler/pxe/pxedefault.template</code>
<code>DEFAULT menu</code>
<code>PROMPT 0</code>
<code>MENU TITLE Cobbler this is </code><code>test</code><code>==^-^ | </code><code>#提示栏信息 </code>
<code>TIMEOUT 200</code>
<code>TOTALTIMEOUT 6000</code>
<code>ONTIMEOUT $pxe_timeout_profile</code>
<code>LABEL </code><code>local</code> <code>#默认的启动列表</code>
<code> </code><code>MENU LABEL (</code><code>local</code><code>)</code>
<code> </code><code>MENU DEFAULT</code>
<code> </code><code>LOCALBOOT -1</code>
<code>$pxe_menu_items</code>
<code>MENU end</code>
执行sync 使命令生效:
在新建的设备启动界面为:
<a href="http://s4.51cto.com/wyfs02/M01/8A/F5/wKioL1g_4ROT4t2FAACBU9uuRE8277.jpg" target="_blank"></a>
本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1878562