cobbler之详细配置

时间:2023-03-09 04:26:02
cobbler之详细配置
目录

    安装包
    配置文件

作用:系统自动化安装,支持linux,也支持win

核心组件(cobbler之详细配置组件必须):
cobbler之详细配置distros(发行版)    cobbler依靠此组件去读取外部的kernel和initrd,即系统版本
cobbler之详细配置profiles and sub-profiles    cobbler依靠此组件将kickstart文件和distros文件关联起来,构建自动化的整体配置信息,提供系统的初始化安装信息(sub-profiles提供额外信息)
systems    cobbler借助此组件来配置网络接口
repos(profiles的补充组件)    cobbler借助此组件完成软件安装,一个yum源
images(systems的补充组件)    cobbler借助此组件完成特定功能
组件的继承关系:distros>>profiles>>systems,即配置后一个,均需要指定前一个组件名
还有一些软件分发组件,不过这个不好用,因此可以用puppet替代
cobbler之详细配置相关信息>>[*]非必须 {*}必须
列出当前已经配置好的组件信息:cobbler [组件] list    --不加组件,则显示所有组件
删除组件信息:cobbler {组件} remove --name=对应组件的配置名
修改组件信息:cobbler {组件} edit --name=对应组件的配置名 继承关系的关联配置名 [--distros=] [--kickstart=]
            |__ cobbler profiles edit --name=centos-6.4-x86_64-develop --distros=centos-6.4-x86_64 --kickstart=centos-6.4-x86_64.cfg

import    可以将一个完整的系统光盘的kernel和initrd导出到cobbler中
sync
reposync    repo同步
build iso
command line search
replication 复制
validate kickstart


1.安装包(属于epel源,请先配置好epel,这里就不说怎么搞了,然后直接yum以下安装包)
cobbler之详细配置如果安装过程提醒gpgcheck的话
cobbler之详细配置则加入--nogpgcheck
cobbler    httpd    cobbler-web(提供网络接口)    debmirror    pykickstart

/etc/cobbler/settings    --定义主配置信息
/etc/cobbler/modules.conf    --定义cobbler可以管理的服务模块
/etc/cobbler/users.digest    --定义账号密码,关联web访问
路径里面存放了多个服务样板,均以template后缀显示

3-1.启动httpd服务.(进行cobbler check命令检查前,必须先启动httpd服务),并且关闭selinux
#service cobblerd start
3-2.cobbler check    --检查cobbler环境错误,依据错误提示进行更正
常见的所需更正的错误如下:
>>#vim /etc/cobbler/settings
    next_server: tftp_ip
    server: tftp_ip
#一般来说,tftp就是cobbler自身,故而此处ip均填写自身ip,不要使用127.0.0.1
>>#关闭selinux
>>#cobbler get-loaders    --下载bootloader所需文件
    pxelinux.0    menu.c32    --与pc server有关的文件,这里是linux所需的
>>#清空iptables规则,并关闭iptables,如果是内网的话,或者,开启69,80/443,25151端口
>>#vim /etc/xinetd.d/rsync
    |__    disable = no
#chkconfig rsync on
>>#vim /etc/debmirror.conf,注释以下两项
    #@dists="sid"
    #@arches="i386"
>>#openssl passwd -1 -salt `openssl rand -hex 4`    --生成8位随机数,并加上输入的密码,组成一个新的加密密码
    修改/etc/cobbler/settings
    default_password_crypted:"加入生成的加密密码"
>>#yum install fence-agents

3-3.再次重启服务,并检查
3-4.同步cobbler
>>#cobbler sync
同步后,会在tftp下生成多个文件/var/lib/tftpboot/*

4-1.修改/etc/cobbler/settings
查看manage_*开头的标签,dhcp默认参数是0,tftp默认参数是1
0表示不使用/etc/cobbler/modules.conf中的托管服务功能,1表示使用;若不使用托管,则需要自己手动配置各种服务.
4-2.这里我们就使用默认配置,即手动配置dhcp服务,tftp托管
>>#yum install dhcp tftp-server
>>#dhcp和tftp服务具体配置信息可以参照PXE简要配置过程
4-3.命令行模式配置cobbler
定义一个cobbler系统自动化配置
>>挂载系统光盘
    #mount /dev/cdrom /media
>>定义distro,提供内核文件(使用import方式,即将内核和init文件放置于自身,而不是外部).
    #cobbler import --name="rhel6-6.4-x86_64" --path=/media/
    cobbler之详细配置文件默认导入到/var/www/cobbler,--path定义光盘挂载位置
    #cobbler distro list
    rhel-6.4-x86_64
    cobbler之详细配置如果同一个内核,而所需软件不同,则多次执行以下三步即可
>>提供kickstart文件,提供安装模板,便于profile中调用.
    #yum install -y system-config-kickstart
    利用system-config-kickstart,并将生成的文件改名为rhel-6.4-x86_64.cfg,名字什么的其实无所谓.具体文件参考:cobbler之ks文件示例
>>定义profile,profile的名字将会在启动菜单中显示.(profile是从distro继承过来的,故而需要指定distro)
    #cobbler profile add --name=rhel-6.4-x86_64-basic --distro=rhel-6.4-x86_64 --kickstart=/root/rhel-6-x86_64.cfg
    #cobbler profile list
    rhel-6.4-x86_64-basic
>>同步cobbler
    #cobbler sync
    依据同步信息,可以看出vmlinuz和initrd.img被连接到/var/lib/tftpboot/images/,即从网站目录连接到了ftp服务器上.
    trying hardlink /var/www/cobbler/ks_mirror/centos-6.5-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/rhel-6.4-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/ks_mirror/centos-6.5-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/rhel-6.4-x86_64/initrd.img
>>查看菜单文件,即引导文件pxelinux.cfg,这里定义了cobbler的所有发行版的内核路径和initrd路径以及ks模板路径
    查看/var/lib/tftpboot/pxelinux.cfg/default,ks的路径可能有点问题
    直接选择默认安装方式,设置非手动
>>至此cobbler已经可以正常工作.

5-1.cobbler_web的bug修复
当前epel源中提供的cobbler_web(程序包为cobbler-2.2.3-2.el6.noarch)存在bug,其/usr/share/cobbler/web/settings.py文件的内容需要修改为如下内容。
# Django settings for cobbler-web project.
import django
 
DEBUG = True
TEMPLATE_DEBUG = DEBUG
 
ADMINS = (
    # ('Your Name', 'your_email@domain.com'),
)
 
MANAGERS = ADMINS
 
DATABASE_ENGINE = ''     # cobbler-web does not use a database
DATABASE_NAME = ''      
DATABASE_USER = ''      
DATABASE_PASSWORD = ''  
DATABASE_HOST = ''      
DATABASE_PORT = ''      
 
# Force Django to use the systems timezone
TIME_ZONE = None
 
# Language section
# TBD.
LANGUAGE_CODE = 'en-us'
USE_I18N = False
 
SITE_ID = 1
 
# not used
MEDIA_ROOT = ''
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'
 
SECRET_KEY = ''
 
# code config
 
if django.VERSION[0] == 1 and django.VERSION[1] < 4:
    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.load_template_source',
        'django.template.loaders.app_directories.load_template_source',
    )
else:
    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )
 
if django.VERSION[0] == 1 and django.VERSION[1] < 2:
    # Legacy django had a different CSRF method, which also had
    # different middleware. We check the vesion here so we bring in
    # the correct one.
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.contrib.csrf.middleware.CsrfMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
    )
else:
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
    )
 
ROOT_URLCONF = 'urls'
 
TEMPLATE_DIRS = (
    '/usr/share/cobbler/web/templates',
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'cobbler_web',
)
 
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
 
TEMPLATE_CONTEXT_PROCESSORS += (
     'django.core.context_processors.request',
)
 
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = '/var/lib/cobbler/webui_sessions'
 

5-2 配置cobbler_web的认证功能
cobbler_web支持多种认证方式,如authn_configfile、authn_ldap或authn_pam等,默认为authn_denyall,即拒绝所有用户登录。下面说明两种能认证用户登录cobbler_web的方式。
>>使用authn_pam模块认证cobbler_web用户 
首先修改modules.conf中[authentication]段的module参数的值为authn_pam。
接着添加系统用户,用户名和密码按需设定即可,例如下面的命令所示。
# useradd cblradmin
# echo 'cblrpass' | passwd --stdin cblradmin

而后将cblradmin用户添加至cobbler_web的admin组中。修改/etc/cobbler/users.conf文件,将cblradmin用户名添加为admin参数的值即可,如下所示。
[admins]
admin = "cblradmin"
最后重启cobblerd服务,通过http://YOUR_COBBLERD_IP/cobbler_web访问即可。
>>使用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访问即可。