zoukankan      html  css  js  c++  java
  • 实战-使用 Cobbler 安装操作系统

    搭建好 Cobbler 服务端后,使用默认的 kickstarts 引导文件对客户端安装系统,且默认安装的是最小化的系统。我们可以自定义 kickstarts 引导文件进而实现对客户端的自定义安装系统。

    环境:
    CentOS Linux release 7.6.1810
    VMware Workstation Pro 14

    定制系统安装的软件包

    查看默认的 ks 文件

    [root@Jaking ~]# cobbler report
    distros:
    ==========
    Name                           : CentOS-7.6-x86_64
    Architecture                   : x86_64
    TFTP Boot Files                : {}
    Breed                          : redhat
    Comment                        : 
    Fetchable Files                : {}
    Initrd                         : /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/initrd.img
    Kernel                         : /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/vmlinuz
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Kickstart Metadata             : {'tree': 'http://@@http_server@@/cblr/links/CentOS-7.6-x86_64'}
    Management Classes             : []
    OS Version                     : rhel6
    Owners                         : ['admin']
    Red Hat Management Key         : <>
    Red Hat Management Server      : <>
    Template Files                 : {}
    
    
    profiles:
    ==========
    Name                           : CentOS-7.6-x86_64
    TFTP Boot Files                : {}
    Comment                        : 
    DHCP Tag                       : default
    Distribution                   : CentOS-7.6-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          : <>
    Name Servers                   : []
    Name Servers Search Path       : []
    Owners                         : ['admin']
    Parent Profile                 : 
    Internal proxy                 : 
    Red Hat Management Key         : <>
    Red Hat Management Server      : <>
    Repos                          : []
    Server Override                : <>
    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
    

    注: distros 是发行版本,即光盘镜像信息。 profiles 指的是 ks 应答文件。 systems 是指通 Cobbler 安装好的物理机名称。

    [root@Jaking ~]# cd /var/lib/cobbler/kickstarts/
    [root@Jaking kickstarts]# ls
    default.ks        legacy.ks            sample_esx4.ks   sample.ks
    esxi4-ks.cfg      pxerescue.ks         sample_esxi4.ks  sample_old.seed
    esxi5-ks.cfg      sample_autoyast.xml  sample_esxi5.ks  sample.seed
    install_profiles  sample_end.ks        sample_esxi6.ks  sample.seed.28
    

    可以看到有很多默认的配置文件。

    上传 CentOS7.ks 到 Cobbler 服务器上。CentOS7.ks 这个配置文件里面安装了开发工具相关软件包。

    [root@Jaking kickstarts]# rz
    
    

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    [root@Jaking kickstarts]# ls
    CentOS7.ks    install_profiles     sample_end.ks    sample_esxi6.ks  sample.seed.28
    default.ks    legacy.ks            sample_esx4.ks   sample.ks
    esxi4-ks.cfg  pxerescue.ks         sample_esxi4.ks  sample_old.seed
    esxi5-ks.cfg  sample_autoyast.xml  sample_esxi5.ks  sample.seed
    
    [root@Jaking kickstarts]# cat CentOS7.ks
    # Cobbler for Kickstart Configurator for CentOS 7 by clsn
    install
    url --url=$tree
    text
    lang en_US.UTF-8
    keyboard us
    zerombr
    bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    #Network information
    $SNIPPET('network_config')
    #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7
    timezone --utc Asia/Shanghai
    authconfig --enableshadow --passalgo=sha512
    rootpw  --iscrypted $default_password_crypted
    clearpart --all --initlabel
    part /boot --fstype xfs --size 1024
    part swap --size 1024
    part / --fstype xfs --size 1 --grow
    firstboot --disable
    selinux --disabled
    firewall --disabled
    logging --level=info
    reboot
    
    %pre
    $SNIPPET('log_ks_pre')
    $SNIPPET('kickstart_start')
    $SNIPPET('pre_install_network_config')
    # Enable installation monitoring
    $SNIPPET('pre_anamon')
    %end
    
    %packages
    @additional-devel
    @development
    @platform-devel
    bash-completion
    chrony
    dos2unix
    kexec-tools
    lrzsz
    sysstat
    tree
    vim
    wget
    git
    net-tools
    %end
    
    %post
    systemctl disable postfix.service
    %end
    
    [root@Jaking kickstarts]# cobbler profile list  #查看当前启动项,使用的配置文件
       CentOS-7.6-x86_64
    

    修改 name 是 CentOS-7.6-x86_64 的 kickstart 文件为 CentOS7.ks

    [root@Jaking kickstarts]# cobbler profile edit --name CentOS-7.6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS7.ks
    [root@Jaking kickstarts]# cobbler report | grep Kickstart
    Kickstart Metadata             : {'tree': 'http://@@http_server@@/cblr/links/CentOS-7.6-x86_64'}
    Kickstart                      : /var/lib/cobbler/kickstarts/CentOS7.ks
    Kickstart Metadata             : {}
    

    通过给内核传参数,修改网卡名称为 eth0

    [root@Jaking kickstarts]# cobbler profile edit --name CentOS-7.6-x86_64 --kopts='net.ifnames=0 biosdevname=0'
    

    配置文件内容如下:

    [root@Jaking kickstarts]# vim CentOS7.ks #查看配置文件中的,默认就可以,不需要修改
    # Cobbler for Kickstart Configurator for CentOS 7 by clsn
    Install                 #安装系统
    url --url=$tree      #url 地址为 Cobbler 内置变量
    text                    #文本方式安装,修改为图形界面则为 Graphical
    lang en_US.UTF-8 #语言
    keyboard us         #键盘
    zerombr              #该参数用于清除引导信息,需要让其生效可以在参数后添加 yes 即可。可选项,一般不用。
    bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    #指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.
    #Network information
    $SNIPPET('network_config') #该参数表示使用下方%pre 中的脚本来配置网络,相关脚本存放于/var/lib/cobbler/snippets
    #如果不需要脚本配置可启用以下配置
    #network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6
    --hostname=CentOS7
    timezone --utc Asia/Shanghai #时区
    authconfig --enableshadow --passalgo=sha512 #加密 shadow
    rootpw --iscrypted $default_password_crypted #设置 root 密码
    clearpart --all --initlabel #--all 初除所有分区,后者将磁盘标签初始化为缺省值设置。
    part /boot --fstype xfs --size 1024 #boot分区大小
    part swap --size 1024 #swap分区大小
    part / --fstype xfs --size 1 --grow #根分区大小
    firstboot --disable #决定是否在系统第一次引导时启动"设置代理”,禁用。
    selinux --disabled #在系统里设置 SELinux 状态
    firewall --disabled #在系统狸设置而防火墙状态
    logging --level=info #这个命令控制安装过程中anaconda的错误日志,它对安装好的系统没有影响。
    reboot #安装后重启
    %pre #pre 中定了前面使用的具体脚本名称。
    $SNIPPET('log_ks_pre')
    $SNIPPET('kickstart_start')
    $SNIPPET('pre_install_network_config')
    # Enable installation monitoring
    $SNIPPET('pre_anamon')
    %end
    %packages #自定义安装内容,这里可以可以自行生成 ks 文件然后把对应的配置复制到这里。当前配置为最小化安装,以及安装系统常用工具。
    @additional-devel
    @development
    @platform-devel
    bash-completion
    chrony
    dos2unix
    kexec-tools
    lrzsz
    sysstat
    tree
    vim
    wget
    git
    net-tools
    %end
    %post #安装后执行操作,可以执行脚本也可以直接执行命令。
    systemctl disable postfix.service
    %end
    

    定制 Cobbler 引导菜单(名称、超时时间、默认启动菜单)

    [root@Jaking kickstarts]# vim /etc/cobbler/pxe/pxedefault.template
    DEFAULT menu
    PROMPT 0
    MENU TITLE Jaking #菜单名称
    TIMEOUT 100 #超时时间
    TOTALTIMEOUT 6000
    ONTIMEOUT $pxe_timeout_profile
    
    LABEL local
            MENU LABEL (local)
            MENU DEFAULT
            LOCALBOOT -1
            
    $pxe_menu_items   #该变量是我自定义的引导菜单,复制到 LABEL local 配置项上方,否则默认启动还是 local。
    
    MENU end
    

    同步 Cobbler 配置

    [root@Jaking kickstarts]# systemctl restart cobblerd
    [root@Jaking kickstarts]# cobbler sync
    task started: 2020-01-04_050537_sync
    task started (id=Sync, time=Sat Jan  4 05:05:37 2020)
    running pre-sync triggers
    cleaning trees
    removing: /var/www/cobbler/images/CentOS-7.6-x86_64
    removing: /var/lib/tftpboot/pxelinux.cfg/default
    removing: /var/lib/tftpboot/grub/images
    removing: /var/lib/tftpboot/grub/grub-x86.efi
    removing: /var/lib/tftpboot/grub/grub-x86_64.efi
    removing: /var/lib/tftpboot/grub/efidefault
    removing: /var/lib/tftpboot/images/CentOS-7.6-x86_64
    removing: /var/lib/tftpboot/s390x/profile_list
    copying bootloaders
    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 files for distro: CentOS-7.6-x86_64
    trying hardlink /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS-7.6-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS-7.6-x86_64/initrd.img
    copying images
    generating PXE configuration files
    generating PXE menu structure
    copying files for distro: CentOS-7.6-x86_64
    trying hardlink /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS-7.6-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/ks_mirror/CentOS-7.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS-7.6-x86_64/initrd.img
    Writing template files for CentOS-7.6-x86_64
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    rendering TFTPD files
    generating /etc/xinetd.d/tftp
    processing boot_files for distro: CentOS-7.6-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/*
    running python triggers from /var/lib/cobbler/triggers/change/*
    running python trigger cobbler.modules.manage_genders
    running python trigger cobbler.modules.scm_track
    running shell triggers from /var/lib/cobbler/triggers/change/*
    *** TASK COMPLETE ***
    

    新建虚拟机进行测试。

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    注意:内存要足够大,网络模式要和 Cobbler 服务端的网络模式一致。

    创建过程省略,直接来到开机启动界面:

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    可以看到,需要安装 1262 个包,不再是原来的最小化安装了。

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    安装成功后,默认启动命令行模式
    输入 root 123456 登录系统:

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    设置默认启动模式为图形化模式 graphical.target

    [root@localhost ~]# systemctl get-default
    multi-user.target
    [root@localhost ~]# systemctl set-default graphical.target
    Removed symlink /etc/systemd/system/default.target.
    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
    [root@localhost ~]# systemctl get-default                 
    graphical.target
    [root@localhost ~]# reboot
    

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

    不能正常启动图形化模式

    解决方法

    安装图形化软件

    [root@localhost ~]# yum install -y xorg* gnome* glx*
    

    切换到图形化模式

    [root@localhost ~]# init 5

    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统
    实战-使用 Cobbler 自定义安装系统实战-使用 Cobbler 自定义安装系统

  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/linuxprobe/p/13544013.html
Copyright © 2011-2022 走看看