天天看点

Cobbler部署简介

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          : &lt;&lt;inherit&gt;&gt;</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         : &lt;&lt;inherit&gt;&gt;</code>

<code>Red Hat Management Server      : &lt;&lt;inherit&gt;&gt;</code>

<code>Repos                          : []</code>

<code>Server Override                : &lt;&lt;inherit&gt;&gt;</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

继续阅读