zoukankan      html  css  js  c++  java
  • cobbler自动化安装Linux系统

    cobbler简介

    Cobbler是一个Linux服务器快速网络安装的服务,而且在经过调整也可以支持网络安装windows。该工具使用python开发,小巧轻便(才15k行python代码),可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCP,DNS,TFTP、RSYNC以及yum仓库、构造系统ISO镜像。
    Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。
    Cobbler是kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。
    Cobbler客户端Koan支持虚拟机安装和操作系统重新安装,使重装系统更便捷。

    cobbler安装部署

    操作系统:CentOS release 7.1

    防火墙、Selinux关闭

    安装eple源

    # yum -y install epel-release

    安装cobbler所需要的软件包

    # yum -y install cobbler cobbler-web pykickstart httpd dhcp tftp-server

    启动服务

    # /etc/init.d/httpd start
    # /etc/init.d/cobblerd start

    初次启动httpd会有报错

    Starting httpd: httpd: apr_sockaddr_info_get() failed for Template
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    #遇见报错需要修改apache的配置文件,添加一行
    # vim /etc/httpd/conf/httpd.conf
    ServerName localhost:80

    启动服务后,使用cobbler check检查配置文件查看是否有问题,一般第一次启动的时候会有报错,不过不用管,重启cobbler后就会正常

    # cobbler check
    Traceback (most recent call last):
      File "/usr/bin/cobbler", line 36, in <module>
        sys.exit(app.main())
      File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 657, in main
        rc = cli.run(sys.argv)
      File "/usr/lib/python2.6/site-packages/cobbler/cli.py", line 270, in run
        self.token         = self.remote.login("", self.shared_secret)
      File "/usr/lib64/python2.6/xmlrpclib.py", line 1199, in __call__
        return self.__send(self.__name, args)
      File "/usr/lib64/python2.6/xmlrpclib.py", line 1489, in __request
        verbose=self.__verbose
      File "/usr/lib64/python2.6/xmlrpclib.py", line 1253, in request
        return self._parse_response(h.getfile(), sock)
      File "/usr/lib64/python2.6/xmlrpclib.py", line 1392, in _parse_response
        return u.close()
      File "/usr/lib64/python2.6/xmlrpclib.py", line 838, in close
        raise Fault(**self._stack[0])
    xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">

    再次运行cobbler check检查配置文件,会出现如下错误,检查的时候一定要要在httpd与cobbler都启动的情况下检查

    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 : change 'disable' to 'no' in /etc/xinetd.d/tftp
    4 : 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.
    5 : change 'disable' to 'no' in /etc/xinetd.d/rsync
    6 : file /etc/xinetd.d/rsync does not exist
    7 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    8 : 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
    9 : 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/setting配置文件,将server行的IP改为本机IP
    # sed -i 's#server: 127.0.0.0#server: 本机IP#g' /etc/cobbler/settings
    2.需要修改/etc/cobbler/setting配置文件,将server_next行的IP改为本机IP
    # sed -i 's#next_server: 127.0.0.1#next_server: 本机IP#g' /etc/cobbler/settings
    3.修改/etc/xinetd.d/tftp配置文件,将disable = yes改为no
    # sed -i 's#disable.*  = yes#disable                 = no #g' /etc/xinetd.d/tftp
    4.运行cobbler get-loaders命令就行
    5.修改/etc/xinetd.d/rsync配置文件,将disable = yes改为no
    # sed -i 's#disable.*= yes# disable = no#g' /etc/xinetd.d/rsync
    6.
    7.安装debmirror包,如果不安装debian系统可以忽略
    # yum install -y debmirror
    8.使用openssl设置一个新的密码来代替默认密码
    # openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'"
    9.安装cman fence-agents
    # yum install -y cman fence-agents

     再次检测配置文件,会有关于debian的报错。注释配置文件就行

    注释如下两行
    # vim /etc/debmirro.conf
    #@dists="sid";
    #@arches="i386";

    然后执行cobbler sync,同步更改后的配置文件

    # cobbler sync

    cobbler可以管理dhcp,tftp,rsync服务

    # vim /etc/cobbler/setting
    manage_dhcp  = 1
    manage_tftp  = 1
    manage_rsync = 1

    cobbler管理dhcp后,只需修改cobbler提供的dhcp模板就行,不需要单独的修改dhcp服务的配置文件

    subnet 10.0.0.0 netmask 255.255.255.0 {       #本机电脑所在的子网
         option routers             10.0.0.2;     #设置客户端默认网关
         option domain-name-servers 10.0.0.2;     #设置客户端默认DNS
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        10.0.0.100 10.0.0.254;  #客户端获取到的地址范围
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                $next_server;

    注意:每次修改完cobbler配置信息的时候一定要使用check sync同步配置文件。

    给cobbler服务器导入镜像

    挂载镜像

    将有镜像的分区挂载到服务上
    # mount /dev/cdrom /mnt

    导入镜像

    # cobbler import --path=/mnt --name=CentOS-6.7-x86_64 --arch=x86_64
    # --path 镜像路径
    # --name 为安装源定义一个名字
    # --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
    # 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-6.6-x86_64,如果重复,系统会提示导入失败。

    查看镜像

    # ll /var/www/cobbler/ks_mirror/
    # cobbler distro list

    配置ks配置文件

    # more CentOS-6.7-x86_64.ks 
    #Install OS 
    install 
    
    #Install type
    text
    
    #Use network installation
    url --url=http://10.0.0.222/cobbler/links/CentOS-6.7-x86_64/
    
    #System authorization information
    auth --useshadow --enablemd5 
    
    #Root password rootpw 123456
    rootpw --iscrypted $1$123456$wOSEtcyiP2N/IfIl15W6Z0
    
    #System bootloader
    bootloader --location=mbr
    
    #Clear the Master Boot Record
    zerombr
    
    #Run the Setup Agent firs boot 
    firstboot --disable
    
    #System Keyboard
    keyboard us
    
    #System Language
    lang en_US
    
    #System Timezone
    timezone --isUtc Asia/Shanghai
    
    #Installation logging level
    logging --level=info
    
    #Firewall configuration
    firewall --disable
    
    #Selinux configuration
    selinux --disable
    
    #Disk partition information
    part /boot --bytes-per-inode=4096 --fstype="ext4" --size=200
    part / --asprimary --bytes-per-inode=4096 --fstype="ext4" --size=10240
    
    reboot
    
    #This packages is for CentOS6.7
    %packages
    @base
    @core
    @compat-libraries
    @debugging
    @development
    @hardware-monitoring
    @performance
    @perl-runtime
    @large-systems
    lrzsz 
    tree
    telnet
    nmap
    %end

    配置完成后需要cobbler sync

    然后启动一台新的机器就可以使用cobbler安装系统了。

    cobbler重装

    由于我是选择安装7的操作系统,现在由于我对centos7的操作系统不熟悉,想要重装为6的操作系统,该如何做呢?

    安装koan

    # yum install -y koan

    查看cobbler可用的镜像

    # koan --server=10.0.0.222 --list=profiles
    - looking for Cobbler at http://10.0.0.222:80/cobbler_api
    CentOS-6.7-x86_64

    在已经的客户端进行重装系统操作 ,这个操作一定要在客户端操作

    # koan --replace-self --server=10.0.0.222 --profile=CentOS-6.7-x86_64

    Cobbler使用python调用API

    #!/usr/bin/python
    import xmlrpclib
    server = xmlrpclib.Server("http://xx.xx.xx.xx/cobbler_api")
    print server.get_distros()
    print server.get_profiles()
    print server.get_systems()
    print server.get_images()
    print server.get_repos()
    
    
    
    #!/usr/bin/env python 
    # -*- coding: utf-8 -*-
    import xmlrpclib 
    class CobblerAPI(object):
        def __init__(self,url,user,password):
            self.cobbler_user= user
            self.cobbler_pass = password
            self.cobbler_url = url
        def add_system(self,hostname,ip_add,mac_add,profile):
            '''
            Add Cobbler System Infomation
            '''
            ret = {
                "result": True,
                "comment": [],
            }
            #get token
            remote = xmlrpclib.Server(self.cobbler_url) 
            token = remote.login(self.cobbler_user,self.cobbler_pass) 
            #add system
            system_id = remote.new_system(token) 
            remote.modify_system(system_id,"name",hostname,token) 
            remote.modify_system(system_id,"hostname",hostname,token) 
            remote.modify_system(system_id,'modify_interface', { 
                "macaddress-eth0" : mac_add, 
                "ipaddress-eth0" : ip_add, 
                "dnsname-eth0" : hostname, 
            }, token) 
            remote.modify_system(system_id,"profile",profile,token) 
            remote.save_system(system_id, token) 
            try:
                remote.sync(token)
            except Exception as e:
                ret['result'] = False
                ret['comment'].append(str(e))
            return ret
    def main():
        cobbler = CobblerAPI("http://xx.xx.xx.xx/cobbler_api","cobbler","cobbler")
        ret = cobbler.add_system(hostname='cobbler-api-test',ip_add='xx.xx.xx.xx',mac_add='xx:xx:xx:xx:xx:xx',profile='CentOS-7-x86_64')
        print ret
    if __name__ == '__main__':
        main()

     添加repo

    # cobbler repo add --name=xxoo  --mirror=http://xxoo

    同步repo

    # cobbler reposync

    添加repo到对应的profile

    # cobbler profile --name=xxoo --repos=xxoo

    修改kickstart文件,添加(写到%post %end中间)

    %post
    
    systemctl disable postfix.service
    
    $yum_config_stanza
    
    %end

    添加定时任务,定期同步repo

    # echo "1 3 * * * /usr/bin/cobbler reposync --tries=3 --no-fail" >>/va/spool/cron/root
  • 相关阅读:
    图论基础
    降维和聚类系列(二):拉普拉斯特征映射Laplacian Eigenmaps,谱聚类,实例代码
    降维和聚类系列(一):方法综述和比较(持续更新中)
    markdown设置图片尺寸
    指示向量indicator vector
    Sherlock and his girlfriend CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    The Meeting Place Cannot Be Changed CodeForces
    数组分块入门 3
    数组分块入门 3
  • 原文地址:https://www.cnblogs.com/ebay/p/7443299.html
Copyright © 2011-2022 走看看