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 中一定不能有中文,注释行也不可以!

  • 相关阅读:
    (转)多线程同步event
    初始化列表中成员列出的顺序和它们在类中声明的顺序相同
    确定基类有虚析构函数
    (转)list::splice()函数详解
    MANIFEST.MF文件的格式
    NIO入门了解Buffer
    Failed to load class "org.slf4j.impl.StaticLoggerB
    线程挂起自己,让出CPU
    database如何管理超过4GB的文件
    线程同步(C# 编程指南)
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/5354846.html
Copyright © 2011-2022 走看看