cobbler绑定MAC批量安装操作系统

1,安装epel

手动安装(https://fedoraproject.org/wiki/EPEL) wget http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm

rpm -Uvh /root/Desktop/epel-release-7-9.noarch.rpm

 

2,安装cobbler以及相关包

yum -y install cobbler httpd xinetd tftp-server yum-utils rsync dhcp

如果没有网络的情况下下载并手动安装cobbler,需要以下几个依赖包:

cobbler.x86_64 0:2.8.0-4.el7
PyYAML.x86_64 0:3.10-11.el7 libyaml.x86_64 0:0.1.4-11.el7_0
mod_wsgi.x86_64 0:3.4-12.el7_0 python-cheetah.x86_64 0:2.4.4-5.el7.centos
python-markdown.noarch 0:2.4.1-1.el7.centos python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7
python-pygments.noarch 0:1.4-9.el7 python2-simplejson.x86_64 0:3.10.0-1.el7 )


3, 关闭selinux,firewall

 

 


4, 启动httpd,cobblerd,dhcp

  systemctl start httpd|cobblerd

  此时启动dhcp会有问题

 


5, 执行cobbbler check进行检查,发现很多问题,需要去一一进行修改和配置!

修改cobbler配置文件settings
1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,本实例配置ip为:192.168.30.79
2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,本实例配置ip为:192.168.30.79
3,编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no
4,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no(这个在centos7中有所区别,不用修改)
5,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装,下载地址为:
http://rpmfind.net/linux/rpm2html/search.php?query=debmirror
6,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令:
openssl passwd -1 -salt 'random-phrase-here' 'root#$'
其中“random-phrase-here”为干扰码,然后把生成的密码添加到配置文件对应的字段下,注意这里的密码为cobbler客户端默认的登录密码
所有提示全部fix之后,执行
/etc/init.d/cobblerd restart



/etc/cobbler/settings manage_dhcp: 1 设置cobbler管理DHCP(本次安装这里配置为0,单独配置dhcp文件)
manage_tftpd: 1 设置cobbler管理tftp
manage_rsync: 1 设置cobbler管理rsync


6, 配置DHCP

 

 

如果用cobbler进行配置,可以直接在/etc/cobbler/dhcp.template 中进行配置,本次采用单独管理dhcp的方式。
注意的:一般在数据的机房中不允许有dhcp的存在,因为极有可能有大量的同一网段而且不属于你家的机器此时正处于获取IP地址的状态。所以dhcp中
的地址池必须关闭,否则后果不堪设想!
vim /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 192.168.30.0 netmask 255.255.255.0 {
	 option routers             192.168.30.254;        # 注意这个网关要根据自己的环境统一配置
#     option domain-name-servers 192.168.1.1;
	 option subnet-mask         255.255.255.0;
#     range dynamic-bootp        192.168.30.1 192.168.1.1;
	 default-lease-time         21600;
	 max-lease-time             43200;
	 next-server                192.168.30.79;
	 class "pxeclients" {
		  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
		  if option pxe-system-type = 00:02 {
				  filename "ia64/elilo.efi";
		  } else if option pxe-system-type = 00:06 {
				  filename "grub/grub-x86.efi";
		  } else if option pxe-system-type = 00:07 {
				  filename "grub/grub-x86_64.efi";
		  } else {
				  filename "pxelinux.0";
		  }
	 }

}

group {
host generic1 {
	hardware ethernet A4:DC:BE:F2:06:31;
	fixed-address 192.168.30.50;
		}
host generic2 {
	hardware ethernet 7C:A2:3E:8C:FD:84;
	fixed-address 192.168.30.51;
		}
	}

注意这里的generic*,主机和主机之间不同重复,否则会报错!

 


7, 此时重启相关服务。

systemctl restart httpd
systemctl restart xinetd.service
systemctl restart dhcpd.service
cobblerd.service

 

 


8, 挂载镜像

 

***默认:/var/www/cobbler/目录下 ks_mirror是放镜像的,repo_mirror是放网上download下来的各种源的

1、创建目录
[root@lhl1 cobbler]# mkdir -p /var/OS/BCLinux/x86_64/dvd/(此目录用于放置对应的ISO镜像,本次为直接挂载光盘,所以用不到此目录)
[root@lhl1 cobbler]# mkdir -p /var/ISO/BCLinux/x86_64/dvd/

2、挂载镜像
mount -o loop /dev/cdrom /var/ISO/BCLinux/x86_64/dvd/

3、从DVD中导入OS数据

[root@lhl1 cobbler]# cobbler import --path=/var/ISO/BCLinux/x86_64/dvd/ --name=BCLinux --arch=x86_64
这里需要耐心等待几分钟......



4、列出导入后配置
[root@lhl1 cobbler]# cobbler list
distros:
BCLinux-x86_64

profiles:
BCLinux-x86_64

systems:

repos:

images:

mgmtclasses:

packages:

files:

 

9, 还有几个需要注意的点


1,
修改/etc/cobbler/settings中的pxe_just_once: 0改成1, 这样可以这样只会安装一次,避免重复安装
然后执行 cobbler sync ,使修改的配置生效!

2,
修改pxe默认启动顺序:var/lib/tftpboot/pxelinux.cfg/default(客户端获取IP地址之后在准备安装之前默认从本地启动)

DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://cobbler.github.io/
TIMEOUT 200
TOTALTIMEOUT 6000
#ONTIMEOUT local
ONTIMEOUT BCLinux-x86_64

LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT -1

LABEL BCLinux-x86_64
kernel /images/BCLinux-x86_64/vmlinuz
MENU LABEL BCLinux-x86_64
append initrd=/images/BCLinux-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://192.168.30.79/cblr/svc/op/ks/profile/BCLinux-x86_64
ipappend 2

 

MENU end

  

将ONTIMEOUT 修改成想要安装的系统名称(自己制作好的那个),否则客户端在启动安装的过程中会选择localhost导致安装失败。
注意:这时修改之后重启客户端即可,切记重启之后一定不要执行:cobbler sync,否则修改的配置文件将失效。如果想要其永久性生效
需要修改:vim /etc/cobbler/pxe/pxedefault.template,把上面的字段改为安装系统的名称:ONTIMEOUT BCLinux-x86_64
service cobblerd restart

默认的20秒过后就可以自动安装了 全自动无人值守!


10, 定制ks文件,系统默认的ks文件为/var/lib/cobbler/kickstarts/sample_end.ks,但是默认不符合我们需要,所以得去定制。


[root@localhost cobbler]# egrep -v '^#|^$' /var/lib/cobbler/kickstarts/BCLinux.ks

 

auth --useshadow --enablemd5
bootloader --location=mbr --boot-drive=sda
#分区信息
clearpart --all --initlabel 
part biosboot --fstype=biosboot --size=2 --ondisk=sda # 注意这个比较特殊,很多操作系统用不到!根据实际情况而定
part /var --fstype="ext4" --ondisk=sda --size=102400
part /opt --fstype="ext4" --ondisk=sda --size=122880
part /home --fstype="ext4" --ondisk=sda --size=51200
part /tmp --fstype="ext4" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=30720
part / --fstype="ext4" --ondisk=sda --size=20480
part /boot --fstype="ext4" --ondisk=sda --size=500
part /usr --fstype="ext4" --ondisk=sda --size=81920
part /data --fstype="ext4" --grow --size=1

text
firewall --enabled
firstboot --disable
keyboard us
lang en_US
# 从哪里启动
url --url=$tree
$yum_repo_stanza
$SNIPPET('network_config')
reboot
rootpw --iscrypted $default_password_crypted
selinux --disabled
skipx
timezone Asia/Shanghai
install
zerombr
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
$SNIPPET('pre_anamon')
%end

# 定制安装包,安装包时,前面带@符号的表示包组,安装单个包只需要写包名即可
%packages
$SNIPPET('func_install_if_enabled')
vim
net-tools
java-1.8.0-openjdk
gcc-c++
%end
%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end
%post
$SNIPPET('log_ks_post')
$yum_config_stanza
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
$SNIPPET('post_anamon')
$SNIPPET('kickstart_done')
%end

  


修改完成后一定要通过cobbler profile edit --name=BCLinux-x86_64 --distro=BCLinux-x86_64 --kickstart=/var/lib/cobbler/kickstarts/BCLinux.ks
命令指定.ks文件,否则系统会找默认的ks文件。可以用cobbler report检查。

 

补充:

如果有多块网卡,需要监听其中一块的话,配置如下:
vim /etc/sysconfig/dhcpd

# $ cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
# $ vi /etc/systemd/system/dhcpd.service
# $ ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>
# 注意上面一步,写的时候没有不带"<>"这个符号,否则会报错!
# $ systemctl --system daemon-reload
# $ systemctl restart dhcpd.service

posted @ 2017-03-24 21:24  早晨我在雨中采花  阅读(841)  评论(0编辑  收藏  举报