• cobbler简介&部署


    cobbler


    1.cobbler简介

    Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装、重装物理服务器和虚拟机,同时还可以管理DHCPDNS等。

    Cobbler可以使用命令行方式管理,也提供了基于Web的界面管理工具(cobbler-web),还提供了API接口,可以方便二次开发使用。

    Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理。

    Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。

    cobbler配置文件详解

    cobbler`配置文件目录在/etc/cobbler
    
    配置文件作用
    /etc/cobbler/settingscobbler 主配置文件
    /etc/cobbler/iso/iso模板配置文件
    /etc/cobbler/pxe0pxe模板配置文件
    /etc/cobbler/power电源配置文件
    /etc/cobbler/user.confweb服务授权配置文件
    /etc/cobbler/users.digestweb访问的用户名密码配置文件
    /etc/cobbler/dhcp.templatedhcp服务器的的配置模板
    /etc/cobbler/dnsmasq.templatedns服务器的配置模板
    /etc/cobbler/tftpd.templatetftp服务的配置模板
    /etc/cobbler/modules.conf模块的配置文件

    cobbler数据目录

    目录作用
    /var/lib/cobbler/config/用于存放distros,system,profiles等信息配置文件
    /var/lib/cobbler/triggers/用于存放用户定义的cobbler命令
    /var/lib/cobbler/kickstart/默认存放kickstart文件
    /var/lib/cobbler/loaders/存放各种引导程序以及镜像目录
    /var/www/cobbler/ks_mirror/导入的发行版系统的所有数据
    /var/www/cobbler/images/导入发行版的kernel和initrd镜像用于远程网络启动
    /var/www/cobbler/repo_mirror/yum仓库存储目录

    cobbler日志文件

    日志文件路径说明
    /var/log/cobbler/installing客户端安装日志
    /var/log/cobbler/cobbler.logcobbler日志

    cobbler命令详解

    cobbler check       //核对当前设置是否有问题
    cobbler list        //列出所有的cobbler元素
    cobbler report      //列出元素的详细信息
    cobbler sync        //同步配置到数据目录,更改配置最好都要执行下
    cobbler reposync    //同步yum仓库
    cobbler distro      //查看导入的发行版系统信息
    cobbler system      //查看添加的系统信息
    cobbler profile     //查看配置信息
    

    2.cobbler服务端部署

    //安装cobbler以及相关的软件
    [root@localhost ~]# dnf module enable cobbler:3 -y
    [root@localhost ~]# yum -y install httpd dhcp* tftp tftp-server cobbler cobbler-web pykickstart rsync rsync-daemon
    //启动服务并设置开机自启
    [root@localhost ~]# systemctl enable --now httpd
    [root@localhost ~]# systemctl enable --now rsyncd
    [root@localhost ~]# systemctl enable --now tftp
    [root@localhost ~]# systemctl enable --now cobblerd
    //修改server的ip地址为本机ip
    sed -i 's/^server: 127.0.0.1/server: 192.168.159.100/' /etc/cobbler/settings.yaml
    //设置tftp的ip地址为本机ip
    sed -i 's/^next_server: 127.0.0.1/next_server: 192.168.159.100/'  /etc/cobbler/settings.yaml
    
    //生成加密的密码
    [root@localhost ~]# openssl passwd -1 -salt "$RANDOM" 'redhat'
    $1$5417$gO5A7qe4S6K724V33w9MC0
    
    //将新生成的加密密码加入到配置文件
    [root@localhost ~]# vim /etc/cobbler/settings.yaml
    default_password_crypted: "$1$5417$gO5A7qe4S6K724V33w9MC0"
    
    //将cobbler的dhcp功能打开
    sed -i "s#manage_dhcp: false#manage_dhcp: true#" /etc/cobbler/settings.yaml
    [root@localhost ~]# vim /etc/cobbler/settings.yaml
    manage_dhcp: true
    
    //重启cobbler
    [root@localhost ~]# systemctl restart cobblerd
    
    //通过cobbler check 核对当前设置是否有问题
    [root@localhost ~]# 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. 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, and yaboot.
    2: reposync is not installed, install yum-utils or dnf-plugins-core
    3: yumdownloader is not installed, install yum-utils or dnf-plugins-core
    4: debmirror package is not installed, it will be required to manage debian deployments and repositories
    5: 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解决办法:
    [root@localhost ~]# yum -y install syslinux*
    [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/cobbler/loaders/
    [root@localhost ~]# cp /usr/share/syslinux/menu.c32 /var/lib/cobbler/loaders/
    [root@localhost ~]# ls /var/lib/cobbler/loaders/
    menu.c32  pxelinux.0
    
    问题2和问题3解决办法
    [root@localhost ~]# yum -y install yum-utils
    
    问题4和问题5可以忽略,
    因为是debian系统才需要解决,显示使用的是centos8
    Debian系统解决办法安装fence-agents
    
    //配置DHCP模板文件
    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.110;
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                $next_server;
    
    //同步cobbler配置
    [root@localhost ~]#  systemctl restart httpd cobblerd
    [root@localhost ~]# cobbler sync
    task started: 2022-09-25_150121_sync
    task started (id=Sync, time=Sun Sep 25 15:01:21 2022)
    running python triggers from /var/lib/cobbler/triggers/task/sync/pre/*
    running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*
    shell triggers finished successfully
    running pre-sync triggers
    cleaning trees
    removing: /var/lib/tftpboot/grub/system
    removing: /var/lib/tftpboot/grub/system_link
    removing: /var/lib/tftpboot/grub/images
    copying bootloaders
    running: ['rsync', '-rpt', '--copy-links', '--exclude=.cobbler_postun_cleanup', '/var/lib/cobbler/loaders/', '/var/lib/tftpboot']
    received on stdout:
    received on stderr:
    running: ['rsync', '-rpt', '--copy-links', '--exclude=README.grubconfig', '/var/lib/cobbler/grub_config/', '/var/lib/tftpboot']
    received on stdout:
    received on stderr:
    copying distros to tftpboot
    copying images
    generating PXE configuration files
    generating PXE menu structure
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    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:
    received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
    
    running shell triggers from /var/lib/cobbler/triggers/sync/post/*
    shell triggers finished successfully
    running python triggers from /var/lib/cobbler/triggers/change/*
    running python trigger cobbler.modules.scm_track
    running python trigger cobbler.modules.managers.genders
    running shell triggers from /var/lib/cobbler/triggers/change/*
    shell triggers finished successfully
    *** TASK COMPLETE ***
    
    **管理distro**
    //挂载镜像
    [root@localhost ~]# mount /dev/cdrom /mnt/
    mount: /mnt: WARNING: device write-protected, mounted read-only.
    [root@localhost ~]# ls /mnt
    AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo  TRANS.TBL
    
    //导入镜像
    [root@localhost ~]# cobbler import --path=/mnt/ --name=hwf-8 arch=x86_64
    task started: 2022-09-25_150707_import
    task started (id=Media import, time=Sun Sep 25 15:07:07 2022)
    running python triggers from /var/lib/cobbler/triggers/task/import/pre/*
    running shell triggers from /var/lib/cobbler/triggers/task/import/pre/*
    shell triggers finished successfully
    Found a candidate signature: breed=redhat, version=rhel8
    Found a matching signature: breed=redhat, version=rhel8
    Adding distros from path /var/www/cobbler/distro_mirror/hwf-8:
    creating new distro: hwf-8-x86_64
    trying symlink: /var/www/cobbler/distro_mirror/hwf-8 -> /var/www/cobbler/links/hwf-8-x86_64
    creating new profile: hwf-8-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/distro_mirror/hwf-8 for hwf-8-x86_64
    processing repo at : /var/www/cobbler/distro_mirror/hwf-8/AppStream
    need to process repo/comps: /var/www/cobbler/distro_mirror/hwf-8/AppStream
    looking for /var/www/cobbler/distro_mirror/hwf-8/AppStream/repodata/*comps*.xml
    Keeping repodata as-is :/var/www/cobbler/distro_mirror/hwf-8/AppStream/repodata
    processing repo at : /var/www/cobbler/distro_mirror/hwf-8/BaseOS
    need to process repo/comps: /var/www/cobbler/distro_mirror/hwf-8/BaseOS
    looking for /var/www/cobbler/distro_mirror/hwf-8/BaseOS/repodata/*comps*.xml
    Keeping repodata as-is :/var/www/cobbler/distro_mirror/hwf-8/BaseOS/repodata
    *** TASK COMPLETE ***
    
    //查看cobbler镜像列表
    [root@localhost ~]#  cobbler list
    distros:
       hwf-8-x86_64
    
    profiles:
       hwf-8-x86_64
    
    systems:
    
    repos:
    
    images:
    
    mgmtclasses:
    
    packages:
    
    files:
    
    
    //查看详细信息  查看指定的--name 接镜像名
    [root@localhost ~]# cobbler distro report --name hwf-8-x86_64
    Name                           : hwf-8-x86_64
    Architecture                   : x86_64
    Automatic Installation Template Metadata : {'tree': 'http://@@http_server@@/cblr/links/hwf-8-x86_64'}
    TFTP Boot Files                : {}
    Boot loader                    : grub
    Breed                          : redhat
    Comment                        :
    Fetchable Files                : {}
    Initrd                         : /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/initrd.img
    Kernel                         : /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/vmlinuz
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Management Classes             : []
    OS Version                     : rhel8
    Owners                         : ['admin']
    Redhat Management Key          :
    Remote Boot Initrd             : ~
    Remote Boot Kernel             : ~
    Template Files                 : {}
    
    //创建kickstarts自动安装脚本
    [root@localhost ~]# cobbler profile get-autoinstall --name hwf-8-x86_64 > /var/lib/cobbler/templates/hwf8.ks
    [root@localhost ~]# cd /var/lib/cobbler/templates/
    [root@localhost templates]# cat hwf8.ks
    # Sample kickstart file for current EL, Fedora based distributions.
    
    #platform=x86, AMD64, or Intel EM64T
    # System authorization information
    auth  --useshadow  --enablemd5
    # System bootloader configuration
    bootloader --location=mbr
    # Partition clearing information
    clearpart --all --initlabel
    # Use text mode install
    text
    # Firewall configuration
    firewall --disabled      --关闭防火墙
    # Run the Setup Agent on first boot
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # Use network installation
    url --url=http://192.168.159.100/cblr/links/hwf-8-x86_64
    # If any cobbler repo definitions were referenced in the kickstart profile, include them here.
    repo --name=source-1 --baseurl=http://192.168.159.100/cobbler/distro_mirror/hwf-8/AppStream
    repo --name=source-2 --baseurl=http://192.168.159.100/cobbler/distro_mirror/hwf-8/BaseOS
    
    # Network information
    network --bootproto=dhcp --device=eth0 --onboot=on
    
    # Reboot after installation
    reboot
    
    #Root password
    rootpw --iscrypted $1$5417$gO5A7qe4S6K724V33w9MC0
    # SELinux configuration
    selinux --disabled
    # Do not configure the X Window System
    skipx
    # System timezone
    timezone  America/New_York
    # Install OS instead of upgrade
    install
    # Clear the Master Boot Record
    zerombr
    # Allow anaconda to partition the system as needed
    autopart
    
    %pre
    set -x -v
    exec 1>/tmp/ks-pre.log 2>&1
    
    # Once root's homedir is there, copy over the log.
    while : ; do
        sleep 10
        if [ -d /mnt/sysimage/root ]; then
            cp /tmp/ks-pre.log /mnt/sysimage/root/
            logger "Copied %pre section log to system"
            break
        fi
    done &
    
    
    
    # Enable installation monitoring
    
    %end
    
    %packages
    @^minimal-environment   	--设置最小化安装
    %end
    
    %post --nochroot
    set -x -v
    exec 1>/mnt/sysimage/root/ks-post-nochroot.log 2>&1
    
    %end
    
    %post
    set -x -v
    exec 1>/root/ks-post.log 2>&1
    
    # Start yum configuration
    curl "http://192.168.159.100/cblr/svc/op/yum/profile/hwf-8-x86_64" --output /etc/yum.repos.d/cobbler-config.repo
    
    # End yum configuration
    
    
    
    # Start post_install_network_config generated code
    # End post_install_network_config generated code
    
    # Start download cobbler managed config files (if applicable)
    # End download cobbler managed config files (if applicable)
    
    # Start koan environment setup
    echo "export COBBLER_SERVER=192.168.159.100" > /etc/profile.d/cobbler.sh
    echo "setenv COBBLER_SERVER 192.168.159.100" > /etc/profile.d/cobbler.csh
    # End koan environment setup
    
    $SNIPPET('redhat_register')
    # Begin cobbler registration
    # cobbler registration is disabled in /etc/cobbler/settings.yaml
    # End cobbler registration
    
    # Enable post-install boot notification
    
    # Start final steps
    
    curl "http://192.168.159.100/cblr/svc/op/autoinstall/profile/hwf-8-x86_64" -o /root/cobbler.ks
    # End final steps
    %end
    
    //此时使用虚拟机去安装系统并不会成功  需要做如下操作
    [root@localhost ~]# cd /usr/share/cobbler/bin
    [root@localhost bin]# ls
    migrate-data-v2-to-v3.py  mkgrub.sh
    migrate-settings.sh       settings-migration-v1-to-v2.sh
    [root@localhost bin]# bash mkgrub.sh
    + grub2-mkimage -O arm64-efi -o /var/lib/cobbler/loaders/grub/grubaa64.efi --prefix= all_video boot cat configfile echo true font gfxmenu gfxterm gzio halt iso9660 jpeg minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot search search_fs_uuid search_fs_file search_label sleep test video fat loadenv linux btrfs ext2 xfs jfs reiserfs tftp http luks gcry_rijndael gcry_sha1 gcry_sha256 mdraid09 mdraid1x lvm serial regexp tr efinet
    grub2-mkimage: error: cannot open `/usr/lib/grub/arm64-efi/moddep.lst': No such file or directory.
    + set +x
    + grub2-mkimage -O i386-pc-pxe -o /var/lib/cobbler/loaders/grub/grub.0 --prefix= all_video boot cat configfile echo true font gfxmenu gfxterm gzio halt iso9660 jpeg minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot search search_fs_uuid search_fs_file search_label sleep test video fat loadenv linux btrfs ext2 xfs jfs reiserfs tftp http luks gcry_rijndael gcry_sha1 gcry_sha256 mdraid09 mdraid1x lvm serial regexp tr chain pxe biosdisk
    + set +x
    + grub2-mkimage -O powerpc-ieee1275 -o /var/lib/cobbler/loaders/grub/grub.ppc64le --prefix= all_video boot cat configfile echo true font gfxmenu gfxterm gzio halt iso9660 jpeg minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot search search_fs_uuid search_fs_file search_label sleep test video fat loadenv linux btrfs ext2 xfs jfs reiserfs tftp http luks gcry_rijndael gcry_sha1 gcry_sha256 mdraid09 mdraid1x lvm serial regexp tr net ofnet
    grub2-mkimage: error: cannot open `/usr/lib/grub/powerpc-ieee1275/moddep.lst': No such file or directory.
    + set +x
    + grub2-mkimage -O x86_64-efi -o /var/lib/cobbler/loaders/grub/grubx64.efi --prefix= all_video boot cat configfile echo true font gfxmenu gfxterm gzio halt iso9660 jpeg minicmd normal part_apple part_msdos part_gpt password_pbkdf2 png reboot search search_fs_uuid search_fs_file search_label sleep test video fat loadenv linux btrfs ext2 xfs jfs reiserfs tftp http luks gcry_rijndael gcry_sha1 gcry_sha256 mdraid09 mdraid1x lvm serial regexp tr chain efinet
    grub2-mkimage: error: cannot open `/usr/lib/grub/x86_64-efi/moddep.lst': No such file or directory.
    + set +x
    [root@localhost bin]# ls /var/lib/cobbler/loaders/
    grub  ldlinux.c32  menu.c32  pxelinux.0
    [root@localhost bin]# cobbler sync
    task started: 2022-09-25_153440_sync
    task started (id=Sync, time=Sun Sep 25 15:34:40 2022)
    running python triggers from /var/lib/cobbler/triggers/task/sync/pre/*
    running shell triggers from /var/lib/cobbler/triggers/task/sync/pre/*
    shell triggers finished successfully
    running pre-sync triggers
    cleaning trees
    removing: /var/www/cobbler/images/hwf-8-x86_64
    removing: /var/lib/tftpboot/pxelinux.cfg/default
    removing: /var/lib/tftpboot/grub/images
    removing: /var/lib/tftpboot/grub/grub.0
    removing: /var/lib/tftpboot/grub/grub.ppc64le
    removing: /var/lib/tftpboot/grub/grubaa64.efi
    removing: /var/lib/tftpboot/grub/grubx64.efi
    removing: /var/lib/tftpboot/grub/system
    removing: /var/lib/tftpboot/grub/system_link
    removing: /var/lib/tftpboot/grub/grub.cfg
    removing: /var/lib/tftpboot/grub/local_efi.cfg
    removing: /var/lib/tftpboot/grub/local_legacy.cfg
    removing: /var/lib/tftpboot/grub/local_powerpc-ieee1275.cfg
    removing: /var/lib/tftpboot/grub/x86_64_menu_items.cfg
    removing: /var/lib/tftpboot/images/hwf-8-x86_64
    copying bootloaders
    running: ['rsync', '-rpt', '--copy-links', '--exclude=.cobbler_postun_cleanup', '/var/lib/cobbler/loaders/', '/var/lib/tftpboot']
    received on stdout:
    received on stderr:
    running: ['rsync', '-rpt', '--copy-links', '--exclude=README.grubconfig', '/var/lib/cobbler/grub_config/', '/var/lib/tftpboot']
    received on stdout:
    received on stderr:
    copying distros to tftpboot
    copying files for distro: hwf-8-x86_64
    trying hardlink /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/hwf-8-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/hwf-8-x86_64/initrd.img
    copying images
    generating PXE configuration files
    generating PXE menu structure
    copying files for distro: hwf-8-x86_64
    trying hardlink /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/vmlinuz -> /var/www/cobbler/images/hwf-8-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/distro_mirror/hwf-8/images/pxeboot/initrd.img -> /var/www/cobbler/images/hwf-8-x86_64/initrd.img
    Writing template files for hwf-8-x86_64
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    processing boot_files for distro: hwf-8-x86_64
    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:
    received on stderr: Redirecting to /bin/systemctl restart dhcpd.service
    
    running shell triggers from /var/lib/cobbler/triggers/sync/post/*
    shell triggers finished successfully
    running python triggers from /var/lib/cobbler/triggers/change/*
    running python trigger cobbler.modules.scm_track
    running python trigger cobbler.modules.managers.genders
    running shell triggers from /var/lib/cobbler/triggers/change/*
    shell triggers finished successfully
    *** TASK COMPLETE ***
    
    [root@localhost bin]# systemctl restart httpd cobblerd rsyncd dhcpd
    

    手动安装

    //创建一个虚拟机,然后打开虚拟机

    在这里插入图片描述
    在这里插入图片描述

    使用cobbler-web自动安装centos8系统
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    HANA 常用数据类型详解
    微服务 - 概念 · 应用 · 通讯 · 授权 · 跨域 · 限流
    网站优化Preload进行预加载的使用方法
    计算机网络--应用层(https)
    记一次大事务优化历程(短信发送)
    day05_流程控制语句
    Vim学习笔记01~04
    伪原创工具-好用的伪原创软件有哪些特征
    读懂跨链技术未来可能性:存在哪些机遇及进展?
    内存虚拟化技术-POD和Ballooning
  • 原文地址:https://blog.csdn.net/qq_48619783/article/details/127039596