cobbler

十五十六發表於2018-09-24

簡介

Cobbler是一個免費開源系統安裝部署軟體,用於自動化網路安裝作業系統。 Cobbler 整合了 DNS, DHCP,軟體包更新, 帶外管理以及配置管理, 方便作業系統安裝自動化。Cobbler 可以支援PXE啟動, 作業系統重新安裝, 以及虛擬化客戶機建立,包括Xen, KVM or VMware. Cobbler透過koan程式以支援虛擬化客戶機安裝。Cobbler 可以支援管理複雜網路環境,如建立在鏈路聚合乙太網的橋接環境。
如果同時安裝多個不同版本的系統,這時候PXE配置會比較複雜。而cobbler就是一個基於PXE的一個軟體,可以幫助我們更好的管理

配置 cobbler

管理distro

使cobbler變得可用的第一步為定義distro,其可以通過為其指定外部的安裝引導核心及ramdisk檔案的方式實現。而如果已經有完整的系統安裝樹(如CentOS6的安裝映象)則推薦使用import直接匯入的方式進行。

例如,對於已經掛載至/media目錄的CentOS 6.5 x86_64的安裝映象,則可以使用類似如下命令進行匯入。

# cobbler import --name=centos-7-x86_64 --path=/media/

可使用“cobbler distro list”列出所有的distro。

如果有kickstart檔案,也可以使用“–kickstart=/path/to/kickstart_file”進行匯入,因此import會自動為匯入的distro生成一個profile。

管理profile

cobbler使用profile來為特定的需求類別提供所需要安裝配置,即在distro的基礎上通過提供kickstart檔案來生成一個特定的系統安裝配置。distro的profile可以出現在PXE的引導選單中作為安裝的選擇之一。

因此,如果需要為前面建立的centos-6.5-x86_64這個distro提供一個可引導安裝條目,其用到的kickstart檔案為/tmp/centos-6.5-x86_64.cfg(只提供了最基本的程式包),則可通過如下命令實現。

# cobbler profile add --name=centos-6.5-x86_64-basic --distro=centos-6.5-x86_64 --kickstart=/tmp/centos-6.5-x86_64.cfg

可使用“cobbler profile list”檢視已經建立的profile。

安裝

安裝cobbler

/etc/init.d/iptables  stop
setenforce  0
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo如果沒有epel源 需要執行一次
yum install cobbler   pykickstart debmirror httpd tftp-server dhcp -y
/etc/init.d/httpd  start
/etc/init.d/cobblerd  start

執行“cobbler check“命令檢查問題

[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 : SELinux is enabled. Please review the following wiki page for details on ensuring cobbler works correctly in your SELinux environment:
    https://github.com/cobbler/cobbler/wiki/Selinux
4 : change 'disable' to 'no' in /etc/xinetd.d/tftp
5 : 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.
6 : change 'disable' to 'no' in /etc/xinetd.d/rsync
7 : comment out 'dists' on /etc/debmirror.conf for proper debian support
8 : comment out 'arches' on /etc/debmirror.conf for proper debian support
9 : 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
10 : 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. /etc/cobbler/settings中的'server' 欄位需要設定成對外的介面,而不能是127.0.0.1 。比如server: 192.168.253.129
2. /etc/cobbler/settings中的next_server欄位需要改成tftp伺服器而不能是127.0.0.1.例如next_server: 192.168.253.129
3. selinux是啟動的,這裡說需要關閉,方法是修改/etc/sysconfig/selinux檔案,改為SELINUX=disabled,這是永久關閉的方法,臨時關閉的話setenforce  0
4.修改/etc/xinetd.d/tftp檔案 'disable' 欄位為 'no'
5.執行”cobbler get-loaders“
6. 修改/etc/xinetd.d/rsync檔案,disable對應的欄位改為no
7修改/etc/debmirror.conf,註釋dists所在行
8.修改/etc/debmirror.conf,註釋arches所在行
9.利用這個命令openssl passwd -1 -salt 'random-phrase-here'   生成字串,然後填入/etc/cobbler/settings檔案中的default_password_crypted欄位
10.執行 yum install cman  fence-agents -y

然後重啟一下cobbler

/etc/init.d/cobblerd  restart
cobbler sync
cobbler check 

在這裡插入圖片描述
這個不影響因為我們已經臨時關閉了selinux了

設定DHCP伺服器

修改配置檔案/etc/dhcp/dhcpd.conf

option domain-name "ice.com";
option domain-name-servers 192.168.253.2;

default-lease-time 43200;
max-lease-time 86400;

log-facility local7;

subnet 192.168.253.0 netmask 255.255.255.0 {
    range 192.168.253.161 192.168.253.170;
    option routers 192.168.253.2;
}

next-server 192.168.253.129;
filename="pxelinux.0";

啟動dhcp

/etc/init.d/dhcpd start

啟動tftp

/etc/init.d/xinetd start

配置cobbler

有個示例的ks檔案

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="https://mirrors.aliyun.com/centos/6/os/x86_64/"
# Root password
rootpw --iscrypted $1$.EaLyDeQ$FujxZcce.b3ZpI1MI9JWR0
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Asia/Shanghai
# Network information
network  --bootproto=static --device=eth0 --gateway=192.168.253.2 --ip=192.168.253.181 --nameserver=192.168.253.2 --netmask=255.255.255.0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel 
# Disk partitioning information
part /boot --fstype="ext4" --size=150
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

%packages
@base
@development

%end
mount -r /dev/cdrom  /media/ #掛載光碟
cobbler import --name=centos6 --path=/media/ --kickstart=/root/ks.cfg

然後建立一臺虛擬機器開機就可以了

在這裡插入圖片描述

這裡就看得到選單了 進入第二個就可以自動安裝

使用cobbler_web

配置cobbler_web的認證功能

cobbler_web支援多種認證方式,如authn_configfile、authn_ldap或authn_pam等,預設為authn_denyall,即拒絕所有使用者登入。下面說明兩種能認證使用者登入cobbler_web的方式。
安裝web介面

yum install cobbler-web -y

出現瞭如下錯誤

Error: Package: cobbler-web-2.6.11-7.git95749a6.el6.noarch (epel)
           Requires: Django >= 1.4
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
wget https://kojipkgs.fedoraproject.org//packages/Django14/1.4.14/1.el6/noarch/Django14-1.4.14-1.el6.noarch.rpm

rpm -ivh Django14-1.4.14-1.el6.noarch.rpm
使用authn_pam模組認證cobbler_web使用者

首先修改/etc/cobbler/modules.conf中[authentication]段的module引數的值為authn_pam。

接著新增系統使用者,使用者名稱和密碼按需設定即可,例如下面的命令所示。

useradd cblradmin
echo 'password' | passwd --stdin cblradmin

而後將cblradmin使用者新增至cobbler_web的admin組中。修改/etc/cobbler/users.conf檔案,將cblradmin使用者名稱新增為admin引數的值即可,如下所示。
[admins]
admin = “cblradmin”

最後重啟cobblerd服務,通過https://YOUR_COBBLERD_IP/cobbler_web訪問即可。如果使用http連線是會報錯的
在這裡插入圖片描述

在這裡插入圖片描述

使用authn_configfile模組認證cobbler_web使用者

首先修改modules.conf中[authentication]段的module引數的值為authn_configfile。

接著建立其認證檔案/etc/cobbler/users.digest,並新增所需的使用者即可。需要注意的是,新增第一個使用者時,需要為htdigest命令使用“-c”選項,後續新增其他使用者時不能再使用;另外,cobbler_web的realm只能為Cobbler。如下所示。

# htdigest -c /etc/cobbler/users.digest Cobbler cblradmin  

最後重啟cobblerd服務,通過http://YOUR_COBBLERD_IP/cobbler_web訪問即可。