基于Cobbler實現多版本操作系統自動部署

前言

    在生產環境中,當需要批量部署幾十甚至上百臺服務器時,實現自動化安裝操作系統尤為重要,按照傳統的光盤引導安裝是不可想象的;此前我們通過pxe+kickstart簡單實現了自動化安裝,但只能實現單一版本安裝,當需要部署不同版本或不同引導模式(BIOS、EFI)時,此種方式就不夠靈活。而Cobbler正是為了解決此問題而設計的,本文以CentOS為例簡單介紹Cobbler的安裝配置及使用。

簡介

    Cobbler是一個免費開源系統安裝部署軟件,用于自動化網絡安裝操作系統。Cobbler 集成了 DNS, DHCP, 軟件包更新,帶外管理以及配置管理,方便操作系統安裝自動化。Cobbler 可以支持PXE啟動, 操作系統重新安裝,以及虛擬化客戶機創建,包括Xen, KVM or VMware. Cobbler透過koan程序以支持虛擬化客戶機安裝。Cobbler可以支持管理復雜網路環境,如建立在鏈路聚合以太網的橋接環境。

Cobbler組件結構圖

091321HX-0.png

安裝配置過程:

① 安裝cobbler、dhcp、rsync

② 配置cobbler

③ 導入操作系統,配置profile

④ 配置本地yum倉庫

⑤ 配置dhcp、tftp、http

安裝cobbler

#安裝cobbler會把依賴的服務一并安裝,如tftp-server、httpd
[root@localhost ~]# yum  install cobbler
[root@localhost ~]# yum -y install dhcp rsync
#設置開機啟動
[root@localhost ~]# chkconfig tftp on
[root@localhost ~]# chkconfig rsync on

配置cobbler

[root@localhost ~]# service xinetd restart
[root@localhost ~]# service cobblerd start
[root@localhost ~]# cobbler check
The following are potential configuration items that you may want to fix:

1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work.  This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely.  Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
5 : ksvalidator was not found, install pykickstart
6 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
7 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.
#解決辦法
1,2:
[root@localhost ~]# vim /etc/cobbler/settings 
server: 192.168.18.45
next_server: 192.168.18.45
3:
[root@localhost ~]# cobbler get-loaders
4:可忽略
5:
[root@localhost ~]# yum -y install pykickstart
6:
[root@localhost ~]# openssl passwd -1 -salt 345223 123456
$1$345223$/jb8Mdzzy3SRfwM5RbG3D.
[root@localhost ~]# vim /etc/cobbler/settings 
default_password_crypted: "$1$345223$/jb8Mdzzy3SRfwM5RbG3D."
7:可忽略

同步cobbler配置,再檢查有無報錯

[root@localhost ~]# cobbler sync
[root@localhost ~]# service cobblerd restart
[root@localhost ~]# cobbler check
The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
2 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.
#配置成功

準備kickstart文件

[root@localhost ~]# cp /var/lib/cobbler/kickstarts/sample_end.ks /var/lib/cobbler/kickstarts/basic.ks
[root@localhost ~]# vim /var/lib/cobbler/kickstarts/basic.ks 
# kickstart template for Fedora 8 and later.
# (includes %end blocks)
# do not use with earlier distros

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disable
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
$yum_repo_stanza
# Network information
$SNIPPET('network_config')
# Reboot after installation
reboot

#Root password
rootpw --iscrypted $default_password_crypted   #md5加密的密碼串,默認保存在/etc/cobbler/settings
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Chongqing
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# Allow anaconda to partition the system as needed
part pv.01 --grow --size=1            
part /boot --fstype=ext4 --size=400
part /boot/efi --fstype=efi --size 200   #EFI模式需要創建該分區
volgroup VolGroup --pesize=4096 pv.01
logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1984 --maxsize=4096


%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%end

%packages
@base
@development
@server-platform-devel
samba-client
lftp
openssh-clients
epel-release
#$SNIPPET('func_install_if_enabled')
%end

%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end

%post
echo -e "alias net-pf-10 off\noptions ipv6 disable=1" >/etc/modprobe.d/ipv6.conf
echo "NETWORKING_IPV6=no" >> /etc/sysconfig/network
chkconfig ip6tables off
cat >> /etc/security/limits.conf <<EOF
*           soft    nproc           65535
*           hard    nproc           65535
*           soft    nofile          102400
*           hard    nofile          204800
EOF
$SNIPPET('log_ks_post')
# Start yum configuration
$yum_config_stanza
# End yum configuration
$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')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
%end

導入操作系統到cobbler,添加profile

[root@localhost ~]# mount /dev/sr0 /mnt  #掛載光驅
[root@localhost ~]# cobbler import --name=CentOS-6.6-x86_64 --path=/mnt  #導入操作系統
[root@localhost ~]# ll /var/www/cobbler/ks_mirror/  #驗證一下是否導成功
[root@localhost ~]# cobbler profile add --name=CentOS-6.6-basic --distro=CentOS-6.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/basic.ks
[root@localhost ~]# cobbler profile list  #驗證一下
[root@localhost ~]# cobbler sync  #同步一下

配置本地yum倉庫

#配置本地yum倉庫
[root@localhost ~]# mkdir /tmp/rpms
[root@localhost ~]# createrepo /tmp/rpms  #放入rpm包,執行此步驟
[root@localhost ~]# cobbler repo add --mirror=/tmp/rpms --name=local
[root@localhost ~]# cobbler reposync
#配置本地epel倉庫
[root@localhost ~]# cobbler repo add --mirror=http://mirrors.aliyun.com/epel/6/x86_64/ --name=epel
[root@localhost ~]# cobbler reposync --tries=3 --no-fail  #同步epel倉庫到本地,需要較長時間
#查看已添加的repo
[root@localhost ~]# cobbler repo list
   epel
   local
#添加repo到profile
[root@localhost ~]# cobbler profile edit --name=CentOS-6.6-basic --repos="epel local"
[root@localhost ~]# cobbler sync

配置dhcp服務器

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf   #BIOS或EFI模式網絡啟動都能引導
option arch code 93 = unsigned integer 16; # RFC4578
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.18.0 netmask 255.255.255.0 {
    range 192.168.18.150 192.168.18.230;
    option domain-name "example.org";
    option domain-name-servers 114.114.114.114,8.8.8.8;
    option routers 192.168.18.1;
          class "pxeclients" {
                  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
                  next-server 192.168.18.45;

                  if option arch = 00:06 {
                          filename "grub/grub-x86.efi";
                  } else if option arch = 00:07 {
                          filename "grub/grub-x86_64.efi";
                  } else {
                          filename "pxelinux.0";
                  }
        }
}

重新啟動服務

[root@localhost ~]# service dhcpd restart
[root@localhost ~]# service xinetd restart
[root@localhost ~]# service httpd restart
[root@localhost ~]# service cobblerd restart

客戶端安裝測試

EFI模式。注意:某些服務器可能不兼容

122.png

BIOS模式

123.png

222.png

客戶端驗證,可以看到生成了一個repo文件,指向cobbler服務器

[root@localhost ~]# cat /etc/yum.repos.d/cobbler-config.repo 
[core-0]
name=core-0
baseurl=http://192.168.18.45/cobbler/ks_mirror/CentOS-6.6-x86_64
enabled=1
gpgcheck=0
priority=1

[local]
name=local
baseurl=http://192.168.18.45/cobbler/repo_mirror/local
enabled=1
priority=99
gpgcheck=0

至此安裝完成,本文只簡要介紹了cobbler的安裝及配置

可登陸官網 http://cobbler.github.io/ 獲取幫助

原創文章,作者:秦,如若轉載,請注明出處:http://www.www58058.com/6891

(0)
秦
上一篇 2015-08-11 15:03
下一篇 2015-08-11 15:07

相關推薦

  • 08.02 筆記總結

    1. newgrp 用來臨時切換主組。    root 切換, 不需要組密碼。    而普通用戶切換是需要組密碼的。    newgrp 組名  用來切換當前用戶的組信息 2. pwunconv     //  將密碼的密文復制到/etc/passw…

    Linux干貨 2016-08-08
  • https實現

    實現https 搭建CA 頒發證書

    2018-01-29
  • 10個必需的iOS開發工具和資源

       界面總不是一件很容易事,尤其是iPhone/iPad的界面,做過iOS開發的程序員,一定會感到開發iPhone/iPad的界面是一件多么不容易的事。下面的文章來自10 Essential iOS Developer Tools & Resources,這個文章介紹了十個iOS開發的基礎性工具和資源,其一定會很有效地幫你做iO…

    Linux干貨 2015-04-01
  • 堡壘機-麒麟開源堡壘機SSH公私鑰認證配置文檔

    1、進入SSH公私鑰管理界面 操作步驟:進入系統,點擊左側導航資產管理,后邊TAB標簽導航SSH公私鑰,如下圖     2、批量導入SSH公私鑰: SSH公私鑰管理界面,點擊下方”導入“,進入導入頁面上傳公私鑰,     上傳說明: 1) 講所有的公私鑰放到一個名為pvt的空文件夾中。 2) 在同樣…

    Linux干貨 2016-05-29
  • 自建回收站

    linux 自添加回收站 (1)建立一個回收站目錄 mkdir /tmp/trash_tmp (2) 編輯一個文件 vi /bin/trash mv $@ /tmp/trash_tmp :wq 保存退出 (3)添加別名 alias rm=/bin/trash (4)編輯/etc/bashrc 在最后一行添加alias rm=/bin/trash (5)給予目…

    Linux干貨 2017-09-04
  • awk用法指北

    awk用法指北 awk是對Linux系統中文本三劍客之一。其功能強大,支持條件判斷、數組、循環,并且內置大量函數,近乎于一門獨立的編程語言。 awk基本語法awk [option] ‘program’ FILE 最常用選項 -F “” 指定字段分隔符 //分隔符為PATTERN-v VAR=value 指定變量…

    Linux干貨 2017-05-21
欧美性久久久久