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