zoukankan      html  css  js  c++  java
  • Cobbler自动化部署

    一、Cobbler服务的介绍

    Cobbler是一个免费开源系统安装部署软件,用于自动化网络安装操作系统

    Cobbler集成了DNS DHCP软件包更新,以及配置管理,方便操作系统安装自动化

    Cobbler支持命令行管理,WEB界面管理,同时提供API接口便于二次开发

    Cobbler客户端token支持虚拟机安装和操作系统重新安装,使重装系统更便捷

    1.1    cobbler设计模式

    1)    发行版(distro): 表示操作系统。它承载了内核和initrd引导程序

    2)    存储库(repository): 保存yum缓存文件的镜像仓库

    3)    配置文件(profile):定义操作系统的发行版的ks配置文件,也包含内核参数信息等

    4)    系统(system):主要配置网络接口, 固定IP以及MAC地址

    1.2 cobbler运行流程

    1)    DHCP服务分配IP地址

    2)    Client(获取IP地址、Next_server IP地址)

    3)    Next_server(获取启动内核、initrd等文件)

    4)    tftp (PXE引导文件、启动Cobbler选择界面)

    5)    kickstart (确定加载项,根据NFS,httpd,ftp等共享)

    二、cobbler服务的安装

    2.1基础环境准备

    # 将主机名称修改为cobbler
    hostnamectl set-hostname cobbler
    # uname -r
    3.10.0-327.el7.x86_64

    # cobbler的本机IP # ifconfig eth0 | awk -F '[: ]+' 'NR==2 {print $3}'
    192.168.7.7
    # 关闭selinux
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 # 关闭NetworkManager systemctl stop NetworkManager systemctl disable NetworkManager # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld

    2.2 安装cobbler相关软件并启动服务

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum install cobbler cobbler-web dhcp tftp rsync pykickstart httpd xinetd -y
    
    systemctl start httpd
    systemctl start cobblerd
    systemctl enable httpd
    systemctl enable cobblerd

    服务相关目录介绍:

    # 配置文件概述  /etc/cobbler                     
    /etc/cobbler/settings             # cobbler主配置文件
    /etc/cobbler/dhcp.template        # DHCP服务的配置模板
    /etc/cobbler/tftpd.template       # tftp服务的配置模板
    /etc/cobbler/rsync.template       # rsync服务的配置模板
    /etc/cobbler/iso                  # iso模板配置文件目录
    /etc/cobbler/pxe                  # pxe模板文件目录
    /etc/cobbler/power                # 电源的配置文件目录
    /etc/cobbler/users.conf           # web访问的用户名密码配置文件
    /etc/cobbler/users.digest         # 用于web访问的用户名密码配置文件
    /etc/cobbler/dnsmasq.template     # DNS服务的配置模板
    /etc/cobbler/modules.conf         # cobbler模板配置文件
    
    # cobbler数据目录 /var/lib/cobbler
    /var/lib/cobbler/config           # 配置文件
    /var/lib/cobbler/kickstarts       # 默认存放kickstart文件
    /var/lib/cobbler/loaders          # 存放的各种引导程序
    /var/www/cobbler                  # 系统安装镜像目录
    /var/www/cobbler/ks_mirror        # 导入的系统镜像列表
    /var/www/cobbler/images           # 导入的系统镜像启动文件
    /var/www/cobbler/repo_mirror      # yum源存储目录
    /var/log/cobbler/install.log      # 客户端系统安装日志
    /var/log/cobbler/cobbler.log      # cobbler日志

    2.3 执行cobbler check,将列出的配置项进行修复。

    cobbler check

     2.3.1 按第1、2项的提示修改配置文件(以下两种方法任选其一,使用sed进行替换也可以)

    # 1.手动进行修改,server和next_server为本机IP
    # vim /etc/cobbler/settings
    server: 192.168.7.7
    next_server: 192.168.7.7
    
    # 2.可以使用cobbler setting命令动态修改,需要先将allow_dynamic_settings设置为1
    # vim /etc/cobbler/settings +26
    allow_dynamic_settings: 1
    # 重启cobblerd服务后,再动态修改
    systemctl restart cobblerd
    cobbler setting edit --name=server --value=192.168.7.7
    cobbler setting edit --name=next_server --value=192.168.7.7

    2.3.2 按第3步提示,修改tftp的配置

    sed -i 's#disable = yes#disable = no#g' /etc/xinetd.d/tftp

    2.3.3 按第4步的提示,执行cobbler get-loaders下载网络需要执行文件

    cobbler get-loaders

    2.3.4 按第5步提示,启动rsyncd服务

    systemctl start rsyncd
    systemctl enable rsyncd

    2.3.5 按第7步提示,使用openssl生成用户名和密码,并粘贴到配置文件当中。

    openssl passwd -1 -salt 'cobbler' 'cobbler'
    $1$cobbler$M6SE55xZodWc9.vAKLJs6.
    # vim /etc/cobbler/settings +30
    default_password_crypted: $1$cobbler$M6SE55xZodWc9.vAKLJs6.

    2.3.6 安装软件包和电源管理包

    yum install debmirror fence-agents -y

    2.3.7 修改/etc/debmirror配置

    安装完成后执行cobber check,有如下提示

      需要注释@dists和@arches两行内容:

    # vim /etc/debmirror.conf
    #@dists="sid";
    @sections="main,main/debian-installer,contrib,non-free";
    #@arches="i386";

    2.3.8 重启cobbler服务并同步信息,有如下提示则完成配置

    systemctl restart cobbler
    cobbler sync

     2.4 修改配置让cobbler管理dhcp

    # vim /etc/cobbler/settings +60
    manage_dhcp: 1
    
    # 配置dhcp模板文件,修改网关、DNS、子网掩码、DHCP地址池。
    # vim /etc/cobbler/dhcp.template
    # 如下图配置完成后重启服务
    systemctl restart xinetd
    systemctl restart cobbler cobbler sync

     三、Cobbler基础应用

    cobbler使用第一步要定义distro,如果已经有OS镜像安装文件,使用import方式导入

    定义发生版本CentOS6CentOS7,修改kickstart文件(默认文件/var/lib/cobbler/kickstarts/default.ks

    3.1 在VMware Workstation 上面挂载CentOS7.2的系统镜像

    # 在系统内挂载CentOS7系统ISO光盘
    mount /dev/cdrom /mnt/
    
    # 如果使用的是KVM虚拟机,则需要把镜像文件拷贝到虚拟机内进行挂载
    mount CentOS-7.2-x86_64-DVD-1511.iso /mnt/

    3.2 CentOS7.2镜像导入到cobbler

    cobbler import --path=/mnt/ --name=CentOS-7-x86_64 --arch=x86_64
    
    # 不指定kickstart,可以自定义ks文件,选择不同的KS文件进行安装。
    --path    镜像路径
    --name  安装源定义名称
    --arch    指定操作系统平台是32/64位
    Cobbler会将镜像中的所有的文件拷贝到本地一份,存放到如下目录中:
    /var/www/cobbler/ks_mirror/CentOS-7-x86_64/

     

      3.3 修改CentOS-7-x86_64默认的ks文件

    # 由于默认的ks文件是/var/lib/cobbler/kickstarts/sample_end.ks,无法满足我们的需求,所以要自定义ks文件,下面的命令进行修改:
    cobbler profile edit --name=CentOS-7-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos7-x86_64.cfg
    
    # CentOS7 ks文件的内容
    cat /var/lib/cobbler/kickstarts/centos7-x86_64.cfg 
    #Kickstart Configurator by leon
    #platform=x86, AMD64, or Intel EM64T
    #System  language
    lang en_US
    #System keyboard
    keyboard us
    #Sytem timezone
    timezone Asia/Shanghai
    #Root password
    rootpw --iscrypted $default_password_crypted
    #rootpw --iscrypted $1$cobbler$M6SE55xZodWc9.vAKLJs6.
    #Use text mode install
    text
    #Install OS instead of upgrade
    install
    #Use NFS installation Media
    url --url=$tree
    #url --url=http://192.168.7.7/CentOS-7.2-x86_64
    #System bootloader configuration
    bootloader --location=mbr
    #Clear the Master Boot Record
    zerombr
    #Partition clearing information
    clearpart --all --initlabel 
    #Disk partitioning information        注:如果是KVM虚拟机,磁盘类型为vda,还需要注意swap分区的大小
    part /boot --fstype xfs --size 1024 --ondisk sda
    part swap --size 10240 --ondisk sda
    part / --fstype xfs --size 1 --grow --ondisk sda
    #System authorization infomation
    auth  --useshadow  --enablemd5 
    #Network information
    $SNIPPET('network_config')
    #network --bootproto=dhcp --device=eth0 --onboot=on
    # Reboot after installation
    reboot
    #Firewall configuration
    firewall --disabled 
    #SELinux configuration
    selinux --disabled
    #Do not configure XWindows
    skipx
    
    %pre
    $SNIPPET('log_ks_pre')
    $SNIPPET('kickstart_start')
    $SNIPPET('pre_install_network_config')
    # Enable installation monitoring
    $SNIPPET('pre_anamon')
    %end
    
    
    #Package install information
    
    %packages
    @base
    @core
    sysstat
    iptraf
    ntp
    lrzsz
    ncurses-devel
    openssl-devel
    zlib-devel
    OpenIPMI-tools
    nmap
    screen
    %end
    
    %post
    systemctl disable postfix.service
    $yum_config_stanza
    %end

    查看是否修改后的结果

    3.4 将CentOS7默认网卡名称修改为eth0

    # 增加内核参数
    cobbler profile edit --name CentOS-7-x86_64 --kopts='net.ifnames=0 biosdevname=0'

     3.5 可制作两个不同版本的系统,再定义一个Centos6.5的镜像

    umount /dev/cdrom
    mount /dev/cdrom /mnt/

      3.6 将CentOS6.5的镜像导入cobbler当中

     cobbler import --path=/mnt/ --name=CentOS-6-x86_64 --arch=x86_64

     

     3.7 修改CentOS6.5的默认KS文件

    cobbler profile edit --name=CentOS-6-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Cobbler-CentOS-6.5-x86_64.cfg
    systemctl restart xinetd
    systemctl restart cobbler cobbler sync
    cat /var/lib/cobbler/kickstarts/Cobbler-CentOS-6.5-x86_64.cfg #platform=x86, AMD64, or Intel EM64T # System authorization information auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr # Partition clearing information clearpart --all --initlabel #partition information 注:如果是KVM虚拟机,磁盘类型为vda,还需要注意swap分区的大小 part /boot --fstype ext4 --size 1024 --ondisk sda part swap --size=2048 part / --fstype ext4 --size 1 --grow --ondisk sda # Use text mode install text # Firewall configuration firewall --disable # Run the Setup Agent on first boot firstboot --disable # System keyboard keyboard us # System language lang en_US # Use network installation url --url=$tree # If any cobbler repo definitions were referenced in the kickstart profile, include them here. $yum_repo_stanza # Network information $SNIPPET('network_config') # Reboot after installation reboot #Root password rootpw --iscrypted $default_password_crypted # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System timezone timezone Asia/Shanghai # Install OS instead of upgrade install # Clear the Master Boot Record zerombr %packages @base @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet %pre $SNIPPET('log_ks_pre') $SNIPPET('kickstart_start') $SNIPPET('pre_install_network_config') # Enable installation monitoring $SNIPPET('pre_anamon') %post %end

    3.8 创建空的虚拟机使用PXE的方式启动,进行安装系统。

      四、客户端自动重装

    使用epel源安装koan软件

    yum install koan -y
    koan --replace-self --server=192.168.7.7 --profile=CentOS-7-x86_64
    reboot

    重启后会自动进行安装

     

      五、自定义仓库

    仓库所在的位置

    5.1 添加一个zabbix的阿里源

    cobbler repo add --name=zabbix3.4 --mirror=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/ --arch=x86_64 --breed=yum

    5.2 查看已添加的源,并向本地同步软件

    cobbler repo list
       zabbix3.4 
    cobbler reposync

    # 删除已添加的源
    cobbler repo remove --name=zabbix3.4

      5.3 把源加入report的配置文件当中

    cobbler profile edit --name=CentOS-7-x86_64 --repos=zabbix3.4

     还要确认ks文件中是否配置有yum_config_stanza这一行

     5.4 待安装系统的时候会安装添加上源的配置文件

    安装软件的时候就会自动到仓库中下载

     5.5 还需要定时同步 cobbler的软件包

    echo "0 0 * * * /usr/bin/cobbler reposync --tries=3 --no-fail" >>/var/spool/cron/root

    六、修改cobbler默认显示的页面

    vim /etc/cobbler/pxe/pxedefault.template

     七、cobbler自定义安装

    由于kickstart指定某台服务器使用某个具体的ks文件比较复杂,所以引用cobbler就变得非常简单。通过物理MAC地址来区分。

    Cobbler system主要目的配置网络接口,通过system指定服务器MAC地址来固定机器的IP、掩码、网关、DNS、主机名等实现基础环境的标准化。

    7.1 安装前规划

    MAC:    00:50:56:22:3F:00
    IP:     192.168.7.10
    子网:    255.255.255.0
    网关:    192.168.7.2
    DNS:    114.114.114.114
    主机名称:linux-leon1.com
    系统版本:CentOS 7.2

    7.2 上机有MAC地址是通过VM来获取到的,如果是物理机,则验收的时候就可以拿到MAC地址

    # cobbler profile list
       CentOS-6-x86_64
       CentOS-7-x86_64
    # cobbler system add --name=linux-leon1.com --mac=00:50:56:22:3F:00 --profile=CentOS-7-x86_64 --ip-address=192.168.7.10 --subnet=255.255.255.0 --gateway=192.168.7.2 
    --interface=eth0 --static=1 --hostname=linux-leon1.com --name-servers='114.114.114.114' # cobbler system list linux-leon1.com # cobbler system report # cobbler sync

     

     7.3 启动虚拟机,自动进行安装操作。

    虚拟机已经起来,查看下配置

     

  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/cyleon/p/11460061.html
Copyright © 2011-2022 走看看