1. 程式人生 > 其它 >Cobbler全自動批量安裝部署Linux系統

Cobbler全自動批量安裝部署Linux系統

說明:

Cobbler伺服器系統:CentOS 5.10 64位

IP地址:192.168.21.128

需要安裝部署的Linux系統:

eth0(第一塊網絡卡,用於外網)IP地址段:192.168.21.160-192.168.21.200

eth1(第二塊網絡卡,用於內網)IP地址段:10.0.0.160-10.0.0.200

子網掩碼:255.255.255.0

閘道器:192.168.21.2

域名解析:8.8.8.8 8.8.4.4

所有伺服器均支援PXE網路啟動

實現目的:通過配置Cobbler伺服器,全自動批量安裝部署Linux系統

具體操作:

第一部分:在Cobbler伺服器上操作

一、關閉SELINUX

vi /etc/selinux/config

#SELINUX=強制#註釋掉

#SELINUXTYPE=目標#註釋掉

SELINUX=禁用#增加

:wq!#儲存退出

setenforce 0 #使配置立即生效

二、配置防火牆,開啟TCP:80埠、TCP:25151埠、UDP:69埠

vi /etc/sysconfig/iptables  #編輯

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  #http服務需要此埠

-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 69 -j ACCEPT  #tftp服務需要此埠

-A RH-Firewall-1-INPUT -m state --state new -m tcp -p tcp --dport 25151 -j ACCEPT #cobbler需要此埠

:wq! #儲存退出

/etc/init.d/iptables restart #最後重啟防火牆使配置生效

三、安裝鞋匠

cd /usr/local/src

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm  #CentOS 5.x 64位

轉速-ivh epel-release-5-4.noarch.rpm

備註:

wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm  #CentOS 5.x 32位

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  #CentOS6.x 64位

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm  #CentOS6.x 32位

yum  install cobbler tftp tftp-server xinetd  dhcp  httpd  rsync  #安裝cobbler

yum  install  pykickstart  debmirror  python-ctypes   cman   #安裝執行cobbler需要的軟體包

四、配置皮匠

1、設定http服務

vi /etc/httpd/conf.d/wsgi.conf

LoadModule wsgi_module modules/mod_wsgi.so  #取消前面的註釋

:wq!#儲存退出

chkconfig httpd on  #設定開機啟動

服務 httpd 啟動#啟動

2、設定tftp服務開機啟動

vi  /etc/cobbler/tftpd.template  #編輯

服務 tftp

{

disable                 = no #修改為no

socket_type             = dgram

協議 = udp

等待 = 是

使用者 = 根

server                  = /usr/sbin/in.tftpd

server_args             = -B 1380 -v -s /tftpboot

per_source              = 11

cps                     = 100 2

標誌 = IPv4

}

:wq!#儲存退出

3、設定rsync服務開機啟動

vi /etc/xinetd.d/rsync  #編輯配置檔案,設定開機啟動rsync

服務同步

{

禁用 = 無 #修改為no

socket_type = 流

等待 = 否

使用者 = 根

server          = /usr/bin/rsync

server_args = --守護程序

log_on_failure += 使用者名稱

}

:wq!#儲存退出

/etc/init.d/xinetd start  #啟動(CentOS中是以xinetd 來管理Rsync和tftp服務的)

4、配置cobbler相關引數

vi /etc/debmirror.conf  #註釋掉 @dists 和 @arches 兩行

#@dists=“sid”;

#@arches=“i386”;

:wq!#儲存退出

openssl passwd -1 -salt 'osyunwei' '123456'  #生成預設模板下系統安裝完成之後root賬號登入密碼

$1$osyunwei$sEV8iwXXuR4CqzLXyLnzm0  #記錄下這行,下面會用到

vi /etc/cobbler/settings  #編輯,修改

default_password_crypted: “$1$osyunwei$sEV8iwXXuR4CqzLXyLnzm0”

next_server: 192.168.21.128

伺服器: 192.168.21.128

manage_dhcp: 1

default_kickstart: /var/lib/cobbler/kickstarts/default.ks

:wq!#儲存退出

系統運維 www.osyunwei.com 溫馨提醒:qihang01原創內容©版權所有,轉載請註明出處及原文連結

5、配置dhcp伺服器

vi /etc/cobbler/dhcp.template #編輯,修改

子網 192.168.21.0 網路掩碼 255.255.255.0 { #設定網段

選件路由器 192.168.21.2;#設定閘道器

選項域名伺服器 8.8.8.8,8.8.4.4;#設定dns伺服器地址

選項子網掩碼 255.255.255.0;#設定子網掩碼

範圍 動態啟動 192.168.21.160 192.168.21.200; #設定dhcp伺服器IP地址租用的範圍

預設租約時間 21600;#預設租約時間

最大租期 43200;#最大租約時間

下一個伺服器 $next_server;

類 “pxeclients” {

如果子字串(選項供應商類識別符號,0,9)= “PXEClient”;如果子字串(選項供應商類識別符號,則匹配)=

如果選項 pxe-system-type = 00:02 {

檔名 “ia64/elilo.efi”;

} else if option pxe-system-type = 00:06 {

檔名 “grub/grub-x86.efi”;

} else if option pxe-system-type = 00:07 {

檔名 “grub/grub-x86_64.efi”;

} else {

檔名 “pxelinux.0”;

}

}

}

:wq!#儲存退出

vi /etc/sysconfig/dhcpd   #指定DHCP服務的網路介面

DHCPDARGS=eth0

:wq!#儲存退出

dhcpd  #測試dhcp伺服器配置是否正確

chkconfig dhcpd on   #設定開機啟動

chkconfig cobblerd on   #設定開機啟動

cobbler get-loaders  #安裝cobbler相關工具包,否則檢查cobbler配置會報錯

服務科寶德#啟動cobbler

鞋匠同步#同步配置檔案到dhcp伺服器

服務 dhcpd 啟動#啟動dhcp服務

6、設定cobbler相關服務啟動指令碼

vi /etc/rc.d/init.d/cobbler #編輯,新增以下程式碼

#!/箱/噓

# chkconfig: - 80 90

# 描述:鞋匠

案例 $1 英寸

開始)

/etc/init.d/httpd start

/etc/init.d/xinetd start

/etc/init.d/dhcpd start

/etc/init.d/cobblerd start

;;

停止)

/etc/init.d/httpd stop

/etc/init.d/xinetd stop

/etc/init.d/dhcpd stop

/etc/init.d/cobblerd stop

;;

重新啟動)

/etc/init.d/httpd restart

/etc/init.d/xinetd restart

/etc/init.d/dhcpd restart

/etc/init.d/cobblerd restart

;;

狀態)

/etc/init.d/httpd status

/etc/init.d/xinetd status

/etc/init.d/dhcpd status

/etc/init.d/cobblerd status

;;

同步)

鞋匠同步

;;

*)

echo “輸入錯誤,請在輸入中輸入 'start|stop|restart|status|sync'!”;

exit 2>&1 >/dev/null &

;;

埃薩克

:wq!#儲存退出

chmod +x /etc/rc.d/init.d/cobbler  #新增指令碼執行許可權

chkconfig cobbler on  #新增開機啟動

服務鞋匠重啟#重啟cobbler

cobbler  check  #檢查cobbler配置,出現下面的提示,SELinux和防火牆前面已經設定過了,不用理會

系統運維 www.osyunwei.com 溫馨提醒:qihang01原創內容©版權所有,轉載請註明出處及原文連結

=====================================================================================

以下是您可能需要修復的潛在配置專案:

1 : SELinux 已啟用。請檢視以下 wiki 頁面,瞭解有關確保 cobbler 在您的 SELinux 環境中正常工作的詳細資訊:

https://github.com/cobbler/cobbler/wiki/Selinux

2 :由於 iptable 可能正在執行,因此請確保 69、80/443 和 25151 未被阻止

重新啟動 cobblerd,然後執行“cobbler sync”以應用更改

=====================================================================================

五、掛載系統安裝映象到http伺服器站點目錄

上傳系統安裝映象檔案CentOS-5.10-x86_64-bin-DVD-1of2.iso到/usr/local/src/目錄

mkdir -p /var/www/html/os/CentOS-5.10-x86_64  #建立掛載目錄

mount -t iso9660 -o loop /usr/local/src/CentOS-5.10-x86_64-bin-DVD-1of2.iso  /var/www/html/os/CentOS-5.10-x86_64 #掛載系統映象

vi /etc/fstab   #新增以下程式碼。實現開機自動掛載

/usr/local/src/CentOS-5.10-x86_64-bin-DVD-1of2.iso /var/www/html/os/CentOS-5.10-x86_64 iso9660 defaults,ro,loop 0 0

:wq! #儲存退出

備註:iso9660使用df  -T 檢視裝置  解除安裝:umount  /var/www/html/os/CentOS-5.10-x86_64

重複上面的操作,把自己需要安裝的CentOS系統映象檔案都掛載到/var/www/html/os/目錄下

例如:

CentOS-5.10-x86_64-bin-DVD-1of2.iso

CentOS-6.5-x86_64-bin-DVD1.iso

六、建立kickstarts自動安裝指令碼

cd /var/lib/cobbler/kickstarts  #進入預設Kickstart模板目錄

vi /var/lib/cobbler/kickstarts/CentOS-5.10-x86_64.ks  #建立CentOS-5.10-x86_64安裝指令碼

# 由 anaconda 自動生成的 Kickstart 檔案。

安裝

url --url=http://192.168.21.128/cobbler/ks_mirror/CentOS-5.10-x86_64-x86_64/

lang en_US.UTF-8

zerombr  yes

key --skip

keyboard us

network --device eth0 --bootproto dhcp  --onboot on

#network --device eth0 --bootproto static --ip 192.168.21.250 --netmask 255.255.255.0 --gateway 192.168.21.2 --nameserver 8.8.8.8 --hostname CentOS5.10

rootpw --iscrypted $1$QqobZZ1g$rYnrawi9kYlEeUuq1vcRS/

firewall --enabled --port=22:tcp

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda

# 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 --linux

clearpart --all --initlabel

part / --bytes-per-inode=4096 --fstype="ext3" --size=2048

part /boot --bytes-per-inode=4096 --fstype="ext3" --size=128

part swap --bytes-per-inode=4096 --fstype="swap" --size=500

part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1

reboot

%packages

ntp

@base

@core

@dialup

@editors

@text-internet

keyutils

trousers

fipscheck

device-mapper-multipath

%post

#同步系統時間

ntpdate cn.pool.ntp.org

hwclock --systohc

echo -e "0 1 * * * root /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null"  >> /etc/crontab

service crond restart

#新增使用者組

groupadd maintain

groupadd develop

mkdir -p /home/maintain

mkdir -p /home/develop

#新增使用者

useradd -g maintain  user01  -d /home/maintain/user01 -m

echo "123456"|passwd user01 --stdin

useradd -g maintain user02  -d /home/maintain/user02 -m

echo "123456"|passwd user02 --stdin

useradd -g maintain user03  -d /home/maintain/user03 -m

echo "123456"|passwd user03 --stdin

useradd -g maintain user04  -d /home/maintain/user04 -m

echo "123456"|passwd user04 --stdin

#禁止root使用者直接登入系統

sed -i "s/#PermitRootLogin yes/PermitRootLogin no/g" '/etc/ssh/sshd_config'

service sshd restart

#禁止開機啟動的服務

chkconfig acpid off

chkconfig atd off

chkconfig autofs off

chkconfig bluetooth off

chkconfig cpuspeed off

chkconfig firstboot off

chkconfig gpm off

chkconfig haldaemon off

chkconfig hidd off

chkconfig ip6tables off

chkconfig isdn off

chkconfig messagebus off

chkconfig nfslock off

chkconfig pcscd off

chkconfig portmap off

chkconfig rpcgssd off

chkconfig rpcidmapd off

chkconfig yum-updatesd off

chkconfig sendmail off

#允許開機啟動的服務

chkconfig crond on

chkconfig kudzu on

chkconfig network on

chkconfig readahead_early on

chkconfig sshd on

chkconfig syslog on

#禁止使用Ctrl+Alt+Del快捷鍵重啟伺服器

sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/g" '/etc/inittab'

telinit q

#優化系統核心

echo -e "ulimit -c unlimited"  >> /etc/profile

echo -e "ulimit -s unlimited"  >> /etc/profile

echo -e "ulimit -SHn 65535"  >> /etc/profile

source  /etc/profile

sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" '/etc/sysctl.conf'

echo -e "net.core.somaxconn = 262144"  >> /etc/sysctl.conf

echo -e "net.core.netdev_max_backlog = 262144"  >> /etc/sysctl.conf

echo -e "net.core.wmem_default = 8388608"  >> /etc/sysctl.conf

echo -e "net.core.rmem_default = 8388608"  >> /etc/sysctl.conf

echo -e "net.core.rmem_max = 16777216"  >> /etc/sysctl.conf

echo -e "net.core.wmem_max = 16777216"  >> /etc/sysctl.conf

echo -e "net.ipv4.netfilter.ip_conntrack_max = 131072"  >> /etc/sysctl.conf

echo -e "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180"  >> /etc/sysctl.conf

echo -e "net.ipv4.route.gc_timeout = 20"  >> /etc/sysctl.conf

echo -e "net.ipv4.ip_conntrack_max = 819200"  >> /etc/sysctl.conf

echo -e "net.ipv4.ip_local_port_range = 10024  65535"  >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_retries2 = 5” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_fin_timeout = 30” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_syn_retries = 1” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_synack_retries = 1” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_timestamps = 0” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_tw_recycle = 1” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_tw_len = 1” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_tw_reuse = 1” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_keepalive_time = 120” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_keepalive_probes = 3” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_keepalive_intvl = 15” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_max_tw_buckets = 36000” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_max_orphans = 3276800” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_max_syn_backlog = 262144” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_wmem = 8192 131072 16777216” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_rmem = 32768 131072 16777216” >> /etc/sysctl.conf

echo -e “net.ipv4.tcp_mem = 94500000 915000000 927000000” >> /etc/sysctl.conf

/sbin/sysctl -p

#執行外部指令碼

cd /根

wget http://192.168.21.128/cobbler/ks_mirror/config/autoip.sh

sh /root/autoip.sh

:wq! #儲存退出

vi /var/www/cobbler/ks_mirror/config/autoip.sh  #建立指令碼,自動設定Linux系統靜態IP地址、DNS、閘道器、計算機名稱

#!/箱/噓

ROUTE=$(route -n|grep “^0.0.0.0”|awk '{print $2}')

BROADCAST=$(/sbin/ifconfig eth0|grep -i bcast|awk '{print $3}'|awk -F“:” '{print $2}')

HWADDR=$(/sbin/ifconfig eth0|grep -i HWaddr|awk '{print $5}')

IPADDR=$(/sbin/ifconfig eth0|grep “inet addr”|awk '{print $2}'|awk -F“:” '{print $2}')

NETMASK=$(/sbin/ifconfig eth0|grep “inet addr”|awk '{print $4}'|awk -F“:” '{print $2}')

cat >/etc/sysconfig/network-scripts/ifcfg-eth0<<EOF

裝置 = eth0

BOOTPROTO=static

廣播 = $BROADCAST

HWADDR=$HWADDR

IPADDR=$IPADDR

網路掩碼 = $NETMASK

閘道器 = $ROUTE

啟動 = 是

斷續器

IPADDR1=$(echo $IPADDR|awk -F“.”'{列印 $4}')

cat >/etc/sysconfig/network-scripts/ifcfg-eth1<<EOF

裝置 = eth1

BOOTPROTO=static

廣播 = 10.0.0.255

HWADDR=$(/sbin/ifconfig eth1|grep -i HWaddr|awk '{print $5}')

IPADDR=10.0.0.$IPADDR 1

網路掩碼 = 255.255.255.0

啟動 = 是

斷續器

HOSTNAME=OsYunWei_HZ_$(echo $IPADDR|awk -F“)。”'{列印 $4}')

cat >/etc/sysconfig/network<<EOF

網路 = 是

NETWORKING_IPV6=否

主機名 = $HOSTNAME

GATEWAY=$ROUTE

EOF

echo "127.0.0.1  $HOSTNAME" >> /etc/hosts

hostname=$HOSTNAME

echo "nameserver  8.8.8.8"  > /etc/resolv.conf

echo "nameserver  8.8.4.4" >> /etc/resolv.conf

:wq!  #儲存退出

七、匯入系統映象到cobbler

cobbler import --path=/var/www/html/os/CentOS-5.10-x86_64  --name=CentOS-5.10-x86_64  --arch=x86_64  #匯入系統映象檔案,需要一段時間

cd /var/www/cobbler/ks_mirror  #進入系統映象匯入目錄

命令格式:cobbler import --path=映象路徑 -- name=安裝引導名 --arch=32位或64位

重複上面的操作,把其他的系統映象檔案匯入到cobbler

八、設定profile,按照作業系統版本分別關聯絡統映象檔案和kickstart自動安裝檔案

在第一次匯入系統映象時,cobbler會給安裝映象指定一個預設的kickstart自動安裝檔案

例如:CentOS-5.10-x86_64版本的kickstart自動安裝檔案為:/var/lib/cobbler/kickstarts/sample.ks

cobbler profile report --name  CentOS-5.10-x86_64  #檢視profile設定

cobbler distro report --name CentOS-5.10-x86_64 #檢視安裝映象檔案資訊

cobbler profile remove --name=CentOS-5.10-x86_64  #移除profile

cobbler profile add --name=CentOS-5.10-x86_64 --distro=CentOS-5.10-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-5.10-x86_64.ks  #新增

cobbler profile edit --name=CentOS-5.10-x86_64 --distro=CentOS-5.10-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-5.10-x86_64.ks  #編輯

命令:cobbler profile add|edit|remove --name=安裝引導名 --distro=系統映象名 --kickstart=kickstart自動安裝檔案路徑

--name:自定義的安裝引導名,注意不能重複

--distro:系統安裝映象名,用cobbler distro list可以檢視

--kickstart:與系統映象檔案相關聯的kickstart自動安裝檔案

#檢視Cobbler列表

cobbler list

cobbler report

cobbler profile report

cobbler distro list

#通過profile查詢對應的kickstart自動安裝檔案檔案

例如:

ksfile=$( cobbler profile report --name  CentOS-5.10-x86_64|grep -E '^Kickstart' |head -n 1|cut -d ':' -f 2 );cat $ksfile;

重複上面的操作,把其他的系統映象檔案和kickstart自動安裝檔案關聯起來

注意:

1、kickstart自動安裝檔案需要預先配置好

2、每次修改完配置檔案,需要執行一次同步操作:cobbler sync 配置才能生效

3、kickstart自動安裝檔案可以用工具生成(需要用到圖形介面操作)

yum  install system-config-kickstart #安裝

yum groupinstall “X Window System” #安裝X Window圖形介面

system-config-kickstart #執行kickstart配置

服務 cobbler sync #與cobbler sync 作用相同

服務鞋匠重啟#重啟cobbler

第二部分:設定要安裝的伺服器從網路啟動

開機之後,如下圖所示,根據需要選擇相應的系統版本進行安裝,安裝完成之後,系統會自動重啟

系統運維 www.osyunwei.com 溫馨提醒:qihang01原創內容©版權所有,轉載請註明出處及原文連結

重新安裝系統:

在需要重灌系統的伺服器上安裝koan

wget http://dl.fedoraproject.org/pub/epel/5/x86_64/koan-2.4.0-1.el5.noarch.rpm  #CentOS 5.X

轉速-ivh koan-2.4.0-1.el5.noarch.rpm #安裝koan

http://dl.fedoraproject.org/pub/epel/6/x86_64/koan-2.4.0-1.el6.noarch.rpm  #CentOS 6.X

yum install cobbler debmirror pykickstart python-ctypes cman #安裝koan執行依賴包(need設定epel源)

koan --list=profiles  --server=192.168.21.128  #檢視Cobbler伺服器系統映象列表

koan --replace-self --server=192.168.21.128 --profile=CentOS-5.10-x86_64  #選擇要重灌的系統

重新啟動#重新啟動系統進行自動安裝

擴充套件閱讀:

鞋匠目錄說明:

1、鞋匠配置檔案目錄:/等/鞋匠

/etc/cobbler/settings   #cobbler主配置檔案

/etc/cobbler/dhcp.template   #DHCP服務的配置模板

/etc/cobbler/tftpd.template   #tftp服務的配置模板

/etc/cobbler/rsync.template   #rsync服務的配置模板

/etc/cobbler/iso   #iso模板配置檔案

/etc/cobbler/pxe   #pxe模板檔案

/etc/cobbler/power  #電源的配置檔案

/etc/cobbler/users.conf   #Web服務授權配置檔案

/etc/cobbler/users.digest   #用於web訪問的使用者名稱密碼配置檔案

/etc/cobbler/dnsmasq.template   #DNS服務的配置模板

/etc/cobbler/modules.conf   #Cobbler模組配置檔案

2、鞋匠資料目錄:/var/lib/cobbler

/var/lib/cobbler/config #配置檔案

/var/lib/cobbler/triggers  #Cobbler命令

/var/lib/cobbler/kickstarts  #預設存放kickstart檔案

/var/lib/cobbler/loaders  #存放的各種載入程式

3、系統安裝映象目錄:/var/www/cobbler

/var/www/cobbler/ks_mirror #匯入的系統映象列表

/var/www/cobbler/images  #匯入的系統映象啟動檔案

/var/www/cobbler/repo_mirror #yum源儲存目錄

4、日誌目錄:/var/log/cobbler

/var/log/cobbler/install.log  #客戶端系統安裝日誌

/var/log/cobbler/cobbler.log  #cobbler日誌

至此,Cobbler全自動批量安裝部署Linux系統完成。