zoukankan      html  css  js  c++  java
  • 运维自动化工具 Cobbler


    简介:

    关于操作系统安装方面的自动化,早前我们使用 RedHat 推出的 Kickstart 来批量安装操作系统,近年来 RedHat 又推出一个 Cobbler 。

    Cobbler 使用 Python 开发,小巧轻便,能够完成系统安装、甚至一些服务的管理。( 号称是补鞋匠都能学会的工具 )

    Cobbler 支持命令行管理、web 界面管理、还提供了 API 接口,以便二次开法。

    ## 关闭 SELinux 、iptables !!!

    一、支撑环境安装

    shell > yum -y install epel-release ## 安装 epel 源
    
    shell > yum -y install cobbler httpd rsync tftp-server xinetd dhcp pykickstart fence-agents

    二、配置 Tftp 、Rsync

    复制代码
    shell > vim /etc/xinetd.d/tftp
    
    service tftp
    {
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /var/lib/tftpboot
    disable = no ## 原为 yes
    per_source = 11
    cps = 100 2
    flags = IPv4
    }
    
    shell > vim /etc/xinetd.d/rsync
    
    service rsync
    {
    disable = no ## 原为 yes
    flags = IPv6
    socket_type = stream
    wait = no
    user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
    }
    
    shell > vim /etc/httpd/conf
    
    ServerName 127.0.0.1:80
    复制代码

    ## 这个东西大家都知道。

    二、配置 Cobbler

    shell > openssl passwd -1 -salt 'random-phrase-here' '123456'
    $1$random-p$mzxQ/Sx848sXgvfwJCoZM0

    ## 生成 root 密码( 此密码为新安装的客户机 root 密码 )

    复制代码
    shell > vim /etc/cobbler/settings
    
    manage_dhcp: 1 ## 原为 0
    
    manage_tftpd: 1
    
    manage_rsync: 1 ## 原为 0
    
    next_server: 192.168.214.10 ## 本机 IP
    
    server: 192.168.214.10 ## 本机 IP
    
    default_password_crypted: "$1$random-p$mzxQ/Sx848sXgvfwJCoZM0" ## 生成的 root 密码
    复制代码

    三、配置 DHCP

    复制代码
    shell > vim /etc/cobbler/dhcp.template ## 直接修改这个文件即可
    
    subnet 192.168.214.0 netmask 255.255.255.0 {
    option routers 192.168.214.2;
    option subnet-mask 255.255.255.0;
    range dynamic-bootp 192.168.214.100 192.168.214.120;
    default-lease-time 21600;
    max-lease-time 43200;
    next-server $next_server;
    复制代码

    ## 只修改这个区域的 IP 为合适的 IP 即可

    复制代码
    shell > chkconfig --add httpd
    shell > chkconfig --add xinetd
    shell > chkconfig --add dhcpd
    shell > chkconfig --add cobblerd
    shell > service httpd start
    正在启动 httpd:
    shell > service xinetd start
    正在启动 xinetd: [确定]
    shell > service dhcpd start
    正在启动 dhcpd: [失败]
    shell > service cobblerd start
    Starting cobbler daemon: [确定]
    
    shell > 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 655, 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'">
    
    shell > cobbler get-loaders ( 解决方法 )
    
    [shell > cobbler check ## 再次检查
    The following are potential configuration items that you may want to fix:
    
    1 : service dhcpd is not running
    2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
    
    Restart cobblerd and then run 'cobbler sync' to apply changes.
    
    ## 1 :提示 dhcpd 没有运行,先不管
    ## 2 :提示 debmirror 没有安装。如果不是安装 debian 之类的系统,可以忽略此提示。
    (如需安装,下载地址为:http://rpmfind.net/linux/rpm2html/search.php?query=debmirror)
    
    shell > cobbler sync ## 同步操作
    task started: 2015-05-27_010456_sync
    task started (id=Sync, time=Wed May 27 01:04:56 2015)
    running pre-sync triggers
    cleaning trees
    mkdir: /var/lib/tftpboot/pxelinux.cfg
    mkdir: /var/lib/tftpboot/grub
    mkdir: /var/lib/tftpboot/s390x
    mkdir: /var/lib/tftpboot/ppc
    mkdir: /var/lib/tftpboot/etc
    removing: /var/lib/tftpboot/grub/images
    copying bootloaders
    trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
    trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
    trying hardlink /var/lib/cobbler/loaders/yaboot -> /var/lib/tftpboot/yaboot
    trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
    trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
    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
    rendering Rsync files
    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:[确定]
    
    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 ***
    
    shell > service xinetd restart
    停止 xinetd: [确定]
    正在启动 xinetd: [确定]
    shell > service cobblerd restart
    Stopping cobbler daemon: [确定]
    Starting cobbler daemon: [确定]
    复制代码

    三、导入安装源

    shell > mount /dev/cdrom /mnt/
    
    shell > cobbler import --path=/mnt/ --arch=x86_64 --name=Centos-6.6-minimal

    ## 输出信息略(Cobbler 将镜像拷贝一份放在 /var/www/cobbler/ks_mirror/Centos-6.6-minimal-x86_64 目录下)
    (同时会创建一个名为 Centos-6.6-minimal-x86_64 的发布版本及 profile 文件)

    复制代码
    shell > cobbler list
    distros:
    Centos-6.6-minimal-x86_64
    
    profiles:
    Centos-6.6-minimal-x86_64
    
    systems:
    
    repos:
    
    images:
    
    mgmtclasses:
    
    packages:
    
    files:
    复制代码

    四、创建 ks 文件

    复制代码
    shell > vim /var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks
    
    # platform=x86, AMD64, 或 Intel EM64T
    # version=DEVEL
    # Firewall configuration
    firewall --disabled
    # Install OS instead of upgrade
    install
    # Use network installation
    url --url="http://192.168.214.10/cobbler/ks_mirror/Centos-6.6-minimal-x84_64/"
    # Root password
    rootpw --iscrypted $1$hk0MvN4A$Dz.sYvyDjac1.cMVTk9270
    # System authorization information
    auth --useshadow --passalgo=sha512
    # Use text mode install
    text
    # System keyboard
    keyboard us
    # System language
    lang zh_CN
    # 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 --isUtc Asia/Shanghai
    # Network information
    network --bootproto=dhcp --device=eth0 --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=200
    part swap --fstype="swap" --size=1024
    part / --fstype="ext4" --grow --size=1
    复制代码

    ## 这是我安装了 system-config-kickstart 在图形界面生成的 ks 文件。
    ## 看到第一行注释行中有一个汉字了吗?就是这个汉字让我卡了两天...( 文件中不要有汉字 )

    五、关联 ks 文件

    shell > cobbler distro list
    Centos-6.6-minimal-x86_64

    ## 有一个镜像

    复制代码
    shell > cobbler profile report --name Centos-6.6-minimal-x86_64
    Name : Centos-6.6-minimal-x86_64
    TFTP Boot Files : {}
    Comment :
    DHCP Tag : default
    Distribution : Centos-6.6-minimal-x86_64
    Enable gPXE? : 0
    Enable PXE Menu? : 1
    Fetchable Files : {}
    Kernel Options : {}
    Kernel Options (Post Install) : {}
    Kickstart : /var/lib/cobbler/kickstarts/sample_end.ks
    Kickstart Metadata : {}
    Management Classes : []
    Management Parameters : <<inherit>>
    Name Servers : []
    Name Servers Search Path : []
    Owners : ['admin']
    Parent Profile :
    Proxy :
    Red Hat Management Key : <<inherit>>
    Red Hat Management Server : <<inherit>>
    Repos : []
    Server Override : <<inherit>>
    Template Files : {}
    Virt Auto Boot : 1
    Virt Bridge : xenbr0
    Virt CPUs : 1
    Virt Disk Driver Type : raw
    Virt File Size(GB) : 5
    Virt Path :
    Virt RAM (MB) : 512
    Virt Type : kvm
    复制代码

    ## 看到这个镜像默认使用的 ks 文件为 /var/lib/cobbler/kickstarts/sample_end.ks

    shell > cobbler profile add --name=Centos-6.6-minimal --distro=Centos-6.6-minimal-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks

    ## 关联后,再次查看是否关联成功

    复制代码
    shell > cobbler profile report --name Centos-6.6-minimal
    Name : Centos-6.6-minimal
    TFTP Boot Files : {}
    Comment :
    DHCP Tag : default
    Distribution : Centos-6.6-minimal-x86_64
    Enable gPXE? : 0
    Enable PXE Menu? : 1
    Fetchable Files : {}
    Kernel Options : {}
    Kernel Options (Post Install) : {}
    Kickstart : /var/lib/cobbler/kickstarts/Centos-6.6_minimal-x86_64.ks
    Kickstart Metadata : {}
    Management Classes : []
    Management Parameters : <<inherit>>
    Name Servers : []
    Name Servers Search Path : []
    Owners : ['admin']
    Parent Profile :
    Proxy :
    Red Hat Management Key : <<inherit>>
    Red Hat Management Server : <<inherit>>
    Repos : []
    Server Override : <<inherit>>
    Template Files : {}
    Virt Auto Boot : 1
    Virt Bridge : xenbr0
    Virt CPUs : 1
    Virt Disk Driver Type : raw
    Virt File Size(GB) : 5
    Virt Path :
    Virt RAM (MB) : 512
    Virt Type : xenpv
    复制代码

    ## 已经关联成功 !

    复制代码
    shell > cobbler --help
    usage
    =====
    cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ...
    [add|edit|copy|getks*|list|remove|rename|report] [options|--help]
    cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]
    
    shell > cobbler profile --help
    usage
    =====
    cobbler profile add
    cobbler profile copy
    cobbler profile dumpvars
    cobbler profile edit
    cobbler profile find
    cobbler profile getks
    cobbler profile list
    cobbler profile remove
    cobbler profile rename
    cobbler profile report
    复制代码

    ## 它有多种方法,添加、编辑、移除等等( 用到时,请自己琢磨 )。

    shell > cobbler sync

    ## 同步一下配置,客户端开机测试

    ## 从网络引导进入后,会有一个选择列表,选择要安装 profile ,就可以自动完成安装。

    ## 修改 ks.cfg 文件后,不需要 sync 就可以直接生效!

    ## 如果不想关闭防火墙,那么请打开 TCP ( 69、80、25151 ) 端口。

    ## 遇到问题仔细观察,ks.cfg 中一定不能有中文,注释行也不可以!

     
  • 相关阅读:
    使用日历控件的一些体会(downmoon)
    带附加条件的NewID()用法
    微软的招聘哲学——做微软人的五大核心素质(摘自《微软360度》)
    彻底禁用fckEditor的上传功能(含防止Type漏洞问题)
    Remote Access Connection Manager 服务因下列错误而停止解决办法
    GridView如何更新批量数据和单条记录?
    .net1.1与.net2.0在加载ascx文件的控件时有所不同(Downmoon)
    牛羊吃草问题求解(downmoon)
    c#操作ecxel的一些资源(downmoon搜集)
    安装sql2008 enterprise (English正式版)图解
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12098116.html
Copyright © 2011-2022 走看看