一、概念:
- cobbler:将pxe进行高级封装,实现可以同时提供多种安装系统。
- repository:安装树,也就是我们常说的yum源。实现方式import导入一个yum源;mirror创建一个yum源,但没有文件指向了一个网络yum源。
- Distrbution:用于引导系统启动的程序,通常为pxe程序。
- profile:指定哪一个引导程序和yum源为一体以完成一个特定的程序的启动和安装。
二、组件
1.cobbler: 基础组件
2.cobbler-web:cobbler的gui
3.httpd:用于发布安装树等
4.syslinux:用于生成pxelinux.0
5.tftp tftp-server:实现文件共享
6.xinetd:管理tftpd
7.pykickstart:cobbler用于对配置文件中的的语法做错误检查所用到的工具
8.debmirror:镜像管理工具
9.dhcp dhcp-common:用于分配ip,告知tftp的地址
三、实现过程
1.安装组件:
# yum install cobbler dhcp dhcp-common tftp tftp-server syslinux pykickstart debmirror -y
2.修改cobbler配置文件/etc/cobbler/settings中的如下几行:
manage_dhcp: 0
manage_tftpd: 0
server: 192.168.5.1
3.启动服务:
# service httpd restart
# chkconfig httpd on
# service cobblerd restart
# chkconfig cobblerd on
4.cobbler自检,其自检过程中会出现部分报错,但不同主机上的错误不同这里不一一列举常见的几种报错可以去https://blog.csdn.net/reblue520/article/details/51398512中查看解决方法。解决报错后重启再自检。
# cobbler check
............
# service cobbler restart
# cobbler sync
# cobbler check
5.配置dhcp /etc/dhcp/dhcpd.conf修改如下,修改完成后记得重启httpd
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.5.0 netmask 255.255.255.0 {
range 192.168.5.200 192.168.5.220;
option routers 192.168.5.1;
option domain-name-servers 8.8.8.8;
# next-server 192.168.5.1;
filename "pxelinux.0";
}
6.启动tftp
# service xinetd restart
# chkconfig tftp on
# chkconfig xinetd on
# service xinetd restart
7.以导入的方式创建repo
# mount /dev/cdrom /mnt/
# cobbler import --path=/mnt/ --name=centos6.7_x86-64
# cobbler sync
8.准备ks文件,具体内容见文章末尾,从Windows用rz拉取ks文件并放入指定位置
# rz
# # mv ks1.cfg /var/lib/cobbler/kickstarts/
9.创建profile
# cobbler distro list
centos6.7-64-x86_64
centos7_zxhk-x86_64
# cobbler profile add --distro=centos6.7-64-x86_64 --kickstart=/var/lib/cobbler/kickstarts/ks1.cfg --name=profile_for_centos6
# cobbler sync
这样我们就完成了cobbler的所有配置,然后使用虚拟机进行测试。
ks文件:
#Kickstart file automatically generated by anaconda.
#Itnihao OS
#date 2018-09-25
#version=V2.0
install
#text
#skipx
url --url=http://10.220.5.1/installtree/ >>>这里指向安装树所在路径
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 10.220.5.242 --netmask 255.255.255.0 --noipv6
#rootpw --iscrypted $6$adftwr$dfasdffgsafsdfasdfxcvadsf
rootpw 123456
reboot
firewall --disabled
#firewall --service=ssh --port=80:tcp
authconfig --useshadow --passalgo=sha512
#authconfig --enableshadow --passalgo=sha512
timezone Asia/Shanhai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto crashkernel=auto rhgb rhgb quit quit"
#bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto quiet"
selinux --disabled
#selinux --enforcing
#The following is the partition information you requested
#Note that any partitions you deleted are not expressed
#here so unless you clear all partitions first, this is
#not guaranteed to work
#clearpart --none
#clearpart --all --initlabel
clearpart --all
zerombr
part /boot --fstype=ext4 --size=200
part pv.008002 --size=40960
volgroup vg0 --pesize=8192 pv.008002
logvol / --fstype=ext4 --name=root --vgname=vg0 --size=10240
logvol swap --name=swap --vgname=vg0 --size=2048
#logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=4096
#part /var --fstype=ext4 --size=80000
#part swap --size=5000
#part / --fstype=ext4 --grow --size=200
#cdrom
#repo --name="CentOS" --baseurl=http://10.100.0.120/iso/ --cost=100
#repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages --nobase
@base
@chinese-support
@console-internet
@core
@debugging
@directory-client
@hardware-monitoring
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-policy
pax
oddjob
sgpio
device-mapper-persistent-data
samba-winbind
certmonger
pam_krb5
krb5-workstation
perl-DBD-SQLite
#%post --nochroot
#cp /mnt/source/Packages/conf/settings.sh /mnt/sysimage/tmp/
#mv /mnt/sysimage/etc/httpd/conf/httpd.conf /mnt/sysimage/etc/httpd/conf/httpd.conf.back
#mv /mnt/sysimage/etc/snmp/snmpd.conf /mnt/sysimage/etc/snmp/snmpd.conf.back
#cp /mnt/source/Packages/conf/httpd.conf /mnt/sysimage/etc/httpd/conf/httpd.conf
#cp /mnt/source/Packages/conf/snmpd.conf /mnt/sysimage/etc/snmp/snmpd.conf
#cp /mnt/source/Packages/cacti.tar.gz /mnt/sysimage/tmp
%post
echo -e "Author: zxhk" >> /etc/issue
sed -i '1,$s@id:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab
#cat >> /root/.ssh/authorized_keys << EOF
#ssh-rsa asdfasdfasdfa
#EOF
%e