1. 程式人生 > >使用cobbler實現自動安裝系統

使用cobbler實現自動安裝系統

一、概念:

  • 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,[email protected]:[0-9]:initdefault:@id:3:initdefault:@g' /etc/inittab
#cat >> /root/.ssh/authorized_keys << EOF
#ssh-rsa asdfasdfasdfa
#EOF
%e