美文网首页
Cobbler——无人值守全自动装机

Cobbler——无人值守全自动装机

作者: 037251a7c483 | 来源:发表于2017-03-07 23:14 被阅读361次

    Cobbler可以是一个有点复杂的系统,但它确实支持大量的功能。Cobbler其实也是基于PXE+Kickstart的,因此使用Cobbler之前,必须要有部署过PXE+Kickstart的经验,否则很难理解Cobbler是如何工作的。此外,Coobler支持Web GUI,因此十分方便。

    一、安装

    • 安装
    $ yum install cobbler -y
    

    二、配置Cobbler

    Cobbler安装完成后,主配置在/etc/cobbler目录下,其配置文件为 ** /etc/cobbler/settings**。Cobbler的配置文件采用 YAML格式语法,因此,个人建议要熟悉下YAML语法,以此避免语法错误。

    2.1 新系统密码设置

    • vim /etc/cobbler/settings
    default_password_crypted: "$1$bfI7WLZz$PxXetL97LkScqJFxnW7KS1"       #此设置控制在kickstart期间为新系统设置的root密码。
    
    • 使用openssh生成密码
        生成后的密码写入到default_password_crypted:后(注意,不要把引号去掉)。比如我想设定的的密码为:123456,步骤如下:
    [root@master cobbler]# openssl passwd -1
    Password: 
    Verifying - Password: 
    $1$yXCCH7G3$ye8AcQbeUJv9Qc89pgEQS/
    

    2.2 server 和 next_server 设置

    • vim /etc/cobbler/settings
    server: 192.168.159.135
    next_server: 192.168.159.135
    

    server: ** 设置cobbler服务器地址的IP,不要使用 0.0.0.0,这个不是监听地址,这个IP是是给HTTP和TFTP连接cobbler所用的IP(后续的Web GUI 配置使用的也是这个IP)
      
    next_server: ** 用于DHCP / PXE作为从其下载网络引导文件的TFTP服务器的IP。 一般与server后的IP一致

    2.3 DHCP 管理与配置

    DHCP 是为了PXE引导期间分配IP的。他会将系统引导到TFTP服务器。在那里可以下载网络引导文件。 Cobbler可以通过manage_dhcp设置管理。

    • vim /etc/cobbler/settings
    manage_dhcp: 1
    

    manage_dhcp设置为1 表示cobbler将基于cobbler中包含的dhcp.template生成dhcpd.conf文件(使用cobbler sync命令才会生效,后面会讲到)。需要注意的是,这个模板需要根据当前网络设置进行修改。比如我这里是 192.168.159.0网段的,其配置如下:

    • vim /etc/cobbler/dhcp.template
    subnet 192.168.159.0 netmask 255.255.255.0 {
         option routers             192.168.159.2;          #网关
         option domain-name-servers 192.168.159.2;
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        192.168.159.100 192.168.159.254;
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                $next_server;                #重要,不要删除
         class "pxeclients" {
              match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
              if option pxe-system-type = 00:02 {
                      filename "ia64/elilo.efi";
              } else if option pxe-system-type = 00:06 {
                      filename "grub/grub-x86.efi";
              } else if option pxe-system-type = 00:07 {
                      filename "grub/grub-x86_64.efi";
              } else {
                      filename "pxelinux.0";
              }
         }
    
    }
    

    2.4 Cobbler的相关文件和目录以及启动服务

    Cobbler大量使用/var目录。 如/var/www/cobbler/ks_mirror目录是所有distribution和存储库文件的复制位置,因此需要为每个要导入的分发包提供5-10GB的可用空间。

    • 启动服务
    $ /etc/init.d/cobblerd start
    $ chkconfig cobblerd on
    $ cobbler check
    $ cobbler sync
    

    重点讲下cobbler check和cobbler sync命令

    • cobbler check命令
        Cobbler服务启动后,需要使用cobbler check检查还有哪些错误,如某个服务是否存在,是否缺了某个安装包。下面是我的检测结果。
    [root@master cobbler]# cobbler check
    The following are potential configuration items that you may want to fix:
    
    1 : 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.
    2 : change 'disable' to 'no' in /etc/xinetd.d/rsync
    3 : file /etc/xinetd.d/rsync does not exist
    4 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    5 : ksvalidator was not found, install pykickstart
    6 : 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.
    

    注意,检查结果只是建议,但是有的还是要注意下。比如我这里的第一点,提示没有boot-loaders,因此需要处理。解决方法,执行如下命令 :

    $ cobbler get-loaders
    
    • cobbler sync 命令
        一旦检查完cobbler check的输出,就可以进行第一次同步了。 它的主要目的是强制重写所有配置文件,TFTP根目录中的分发文件,并重新启动托管服务。其实这个也并不重要,因为对象被编辑之后,Cobbler的lite sync会执行,它才是同步配置文件的关键(但是我也碰到过如果不执行cobbler sync,文件没有自动同步的情况)。但是在如果此时无法正确同步,那么就会显示配置问题,我们便可以以此来排查问题。)
        何时需要完全同步? 当对使用静态租约的系统使用manage_dhcpd(管理DHCP)时。 在这种情况下,需要完全同步来重写dhcpd.conf文件并重新启动dhcpd服务。 添加对OMAPI的支持是在路线图上,这将有希望将完全同步到故障排除情况。
    [root@master cobbler]# cobbler sync 
    task started: 2017-03-08_021310_sync
    task started (id=Sync, time=Wed Mar  8 02:13:10 2017)
    running pre-sync triggers
    cleaning trees
    removing: /var/lib/tftpboot/pxelinux.cfg/default
    removing: /var/lib/tftpboot/grub/efidefault
    removing: /var/lib/tftpboot/grub/images
    removing: /var/lib/tftpboot/s390x/profile_list
    copying bootloaders
    copying distros to tftpboot
    copying images
    generating PXE configuration files
    generating PXE menu structure
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    rendering TFTPD files
    generating /etc/xinetd.d/tftp
    cleaning link caches
    running post-sync triggers
    running python triggers from /var/lib/cobbler/triggers/sync/post/*
    running python trigger cobbler.modules.sync_post_restart_services
    running: dhcpd -t -q
    received on stdout: 
    received on stderr: 
    running: service dhcpd restart
    received on stdout: 关闭 dhcpd:[确定]
    正在启动 dhcpd:[确定]
    
    received on stderr: 
    running shell triggers from /var/lib/cobbler/triggers/sync/post/*
    running python triggers from /var/lib/cobbler/triggers/change/*
    running python trigger cobbler.modules.scm_track
    running shell triggers from /var/lib/cobbler/triggers/change/*
    *** TASK COMPLETE ***
    

    2.5 导入Distribution(镜像)

    Cobbler通过“cobbler import”命令自动添加镜像和配置文件。 此命令可以(通常)自动检测导入的Distribution的类型和版本,并使用正确的设置创建(一个或多个)配置文件。
      为了导入distribution,需要一个用于Distribution的DVD ISO。 注意:必须使用完整的DVD,而不是"Live CD"ISO。 下载此文件后,将其挂载到某处:

    • 挂载镜像

    mount -o loop /dev/cdrom /mnt

    我这里用的是虚拟机。如果是具体的镜像,就要挂载镜像。

    • 开始导入

    cobbler import --name=centos6.5 --arch=x86_64 --path=/mnt

    注意: --name 一般以系统版本命名,--arch 定义了架构(最后--name 和 --arch的值组成了distribution的目录名位于:/var/www/cobbler/ks_mirror/ 目录下)。一般不需要指定--arch选项,因为它通常会被自动检测。不过也可以使用

    [root@master mnt]# cobbler import --name=centos6.5 --arch=x86_64 --path=/mnt                  
    task started: 2017-03-08_022057_import
    task started (id=Media import, time=Wed Mar  8 02:20:57 2017)
    
    Found a candidate signature: breed=redhat, version=rhel6
    Found a matching signature: breed=redhat, version=rhel6
    Adding distros from path /var/www/cobbler/ks_mirror/centos6.5-x86_64:
    creating new distro: centos6.5-x86_64
    trying symlink: /var/www/cobbler/ks_mirror/centos6.5-x86_64 -> /var/www/cobbler/links/centos6.5-x86_64
    creating new profile: centos6.5-x86_64
    associating repos
    checking for rsync repo(s)
    checking for rhn repo(s)
    checking for yum repo(s)
    starting descent into /var/www/cobbler/ks_mirror/centos6.5-x86_64 for centos6.5-x86_64
    processing repo at : /var/www/cobbler/ks_mirror/centos6.5-x86_64
    need to process repo/comps: /var/www/cobbler/ks_mirror/centos6.5-x86_64
    looking for /var/www/cobbler/ks_mirror/centos6.5-x86_64/repodata/*comps*.xml
    Keeping repodata as-is :/var/www/cobbler/ks_mirror/centos6.5-x86_64/repodata
    *** TASK COMPLETE ***
    

    2.6 列出对象

    如果在导入期间未报告错误,则可以查看有关导入期间创建的发行版和配置文件的详细信息。

    $ cobbler distro list
    $ cobbler profile list        #列出配置文件
    

    import命令通常将创建至少一个distro/profile对,它们将具有与上面导入设置时设定的相同的名称。 在某些情况下(例如,当发现基于xen的内核时),将创建多个发行版/配置文件对。

    2.7 对象细节

    report命令显示cobbler中对象的详细信息:

    $ cobbler distro report --name=centos6.5-x86_64
    
    [root@master ks_mirror]# cobbler distro report --name=centos6.5-x86_64
    Name                           : centos6.5-x86_64
    Architecture                   : x86_64
    TFTP Boot Files                : {}
    Breed                          : redhat
    Comment                        : 
    Fetchable Files                : {}
    Initrd                         : /var/www/cobbler/ks_mirror/centos6.5-x86_64/images/pxeboot/initrd.img
    Kernel                         : /var/www/cobbler/ks_mirror/centos6.5-x86_64/images/pxeboot/vmlinuz
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Kickstart Metadata             : {'tree': 'http://@@http_server@@/cblr/links/centos6.5-x86_64'}
    Management Classes             : []
    OS Version                     : rhel6
    Owners                         : ['admin']
    Red Hat Management Key         : <<inherit>>
    Red Hat Management Server      : <<inherit>>
    Template Files                 : {}
    

    如上所示,导入命令自动填充了很多字段,例如name,操作系统版本和initrd / kernel文件位置。 “Kickstart Metadata ”字段(--ksmeta internally)用于其他变量以及包含关键的“tree”变量。 这在kickstart模板中用于指定可以在其中找到安装文件的URL。
      还有一些要注意的:一些字段设置为“<<inherit>>”。 这意味着它们将使用默认设置(在设置文件中找到,或者(在配置文件,子配置文件和系统的情况下)将使用父对象中设置的任何值。

    2.8 创建系统

    现在有了一个distribution和profile,就可以创建一个系统了。 配置文件可用于PXE引导,但cobbler中的大多数功能都围绕系统对象。 给系统提供的信息越多,cobbler会自动做好。
      首先,我们将基于导入期间创建的配置文件创建一个系统对象。 创建系统时,名称和配置文件是仅有的两个必填字段:

    $ cobbler system add --name=test --profile=centos6.5-x86_64
    $ cobbler system list
    $ cobbler system report --name=test
    
    [root@master ~]# cobbler system add --name=test --profile=centos6.5-x86_64
    [root@master ~]#  cobbler system list
       test
    
    [root@master ~]# cobbler system report --name=test
    Name                           : test
    TFTP Boot Files                : {}
    Comment                        : 
    Enable gPXE?                   : <<inherit>>
    Fetchable Files                : {}
    Gateway                        : 
    Hostname                       : 
    Image                          : 
    IPv6 Autoconfiguration         : False
    IPv6 Default Device            : 
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Kickstart                      : <<inherit>>
    Kickstart Metadata             : {}
    LDAP Enabled                   : False
    LDAP Management Type           : authconfig
    Management Classes             : <<inherit>>
    Management Parameters          : <<inherit>>
    Monit Enabled                  : False
    Name Servers                   : []
    Name Servers Search Path       : []
    Netboot Enabled                : True
    Owners                         : <<inherit>>
    Power Management Address       : 
    Power Management ID            : 
    Power Management Password      : 
    Power Management Type          : ipmitool
    Power Management Username      : 
    Profile                        : centos6.5-x86_64
    Internal proxy                 : <<inherit>>
    Red Hat Management Key         : <<inherit>>
    Red Hat Management Server      : <<inherit>>
    Repos Enabled                  : False
    Server Override                : <<inherit>>
    Status                         : production
    Template Files                 : {}
    Virt Auto Boot                 : <<inherit>>
    Virt CPUs                      : <<inherit>>
    Virt Disk Driver Type          : <<inherit>>
    Virt File Size(GB)             : <<inherit>>
    Virt Path                      : <<inherit>>
    Virt PXE Boot                  : 0
    Virt RAM (MB)                  : <<inherit>>
    Virt Type                      : <<inherit>>
    

    创建系统对象的主要原因是网络配置。 使用配置文件时,只能使用DHCP接口,但是使用系统时,可以指定更多的网络配置选项。因此,现在我们将在192.168.159 / 24网络中设置一个简单的接口:

    $ cobbler system edit --name=test --interface=eth0  --ip-address=192.168.159.100 --netmask=255.255.255.0 --static=1 --dns-name=test.mydomain.com  
    $ cobbler system edit --name=test --gateway=192.168.159.2 --hostname=test.mydomain.com
    

    2.9 配置ks.cfg文件

    cobbler系统的默认ks文件是/var/lib/cobbler/kickstarts/sample_end.ks(cobbler profile report --name=centos6.5-x86_64 命令查看)我们需要准备自己的ks文件(我自己准备的叫做6u5_lan.cfg),如下:

    • 修改默认ks文件
    $ cobbler profile report --name=centos6.5-x86_64              # 查看默认的ks文件
    $ cd /var/lib/cobbler/kickstarts/
    $ mv 6u5_lan.cfg centos6.5-x86_64.cfg
    $ cobbler profile edit  --name=centos6.5-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos6.5-x86_64.cfg   #改变默认ks文件为自己的文件
    
    • 编辑ks文件
        注意,使用传统的PXE+KS安装系统时,ks文件中的是指定的地址,类似下面这个,因此我们需要改一下这里的url地址
    url --url http://10.33.9.250:3195/CentOS-6.5-x86_64
    
    • vim /var/lib/cobbler/kickstarts/centos6.5-x86_64.cfg
    url --url==$tree
    
    • 重启各个服务并同步
    $ cobbler sync
    $ /etc/init.d/cobblerd restart
    $ /etc/init.d/xinetd restart                      
    $ /etc/init.d/httpd restart
    $ /etc/init.d/dhcpd restart
    

    备注:xinetd 、httpd 、dhcpd 服务都是必须启动的。最后可以统一重启下,避免忘记操作而导致的不必要的麻烦。

    到此为止,就可以开始安装系统了!!!
    Cobbler还有很多其他的功能,这里只是冰山一角,详情请参考官网!

    三、Web 管理界面的安装与配置

    • 安装 cobbler-web
    $ yum install cobbler-web -y
    
    • vim /etc/cobbler/modules.conf
    authentication]
    module = authn_configfile
    
    [authorization]
    module = authz_allowall
    
    • 修改用户为cobbler的密码(Web界面登陆用于为cobbler)
    $ htdigest /etc/cobbler/users.digest "Cobbler" cobbler
    
    • 如果这不是第一次安装,Apache配置可能不是最新的,同步一下
    $ cp /etc/httpd/conf.d/cobbler.conf.rpmnew /etc/httpd/conf.d/cobbler.conf
    
    • 重启Apache和Cobblerd
    $ /sbin/service cobblerd restart
    $ /sbin/service httpd restart
    
    • 关闭selinux

    • 注意防火墙配置,要放行80等端口。

    • 注意是否设置了/etc/hosts.deny

    相关文章

      网友评论

          本文标题:Cobbler——无人值守全自动装机

          本文链接:https://www.haomeiwen.com/subject/yywmgttx.html