• 自动化运维-批量安装Linux操作系统


    1 背景

    随着项目的推进和展开,项目到了服务器操作系统部署这个环节,客户选择对目前现有的20台服务器利旧使用,服务器操作系统的部署成了摆在眼前的一道无法绕过的问题。
    能想到的三种方式:
    单机部署: 适合3台服务器以下,
    批量话部署:规模化、自动化、远程实现、3台服务器以上
    虚拟化部署:降低能耗、节省空间、节约成本、提高基础架构利用率、提高稳定性、减少宕机、提高灵活性。
    以上只是个人的观点,客户对部署没有太多要求,通过跟项目组沟通后,按第二种批量部署开干,选型上使用PXE方式,工具使用Cobbler工具安装

    2 Cobbler基础

    2.1 Cobbler介绍

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

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

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

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

    Cobbler官网:https://fedorahosted.org/cobbler/

    2.2 Cobbler服务

    • PXE服务支持
    • DHCP服务管理
    • DNS服务管理(可选bind,dnsmasq)
    • 电源管理
    • Kickstart服务支持
    • YUM仓库管理
    • TFTP(PXE启动时需要)
    • Apache(提供kickstart的安装源,并提供定制化的kickstart配置)

    3 系统环境

    3.1 系统环境

    [root@devops ~]# cat /etc/redhat-release
    CentOS Linux release 7.9.2009 (Core)
    
    • 1
    • 2

    3.2 网络环境

    3.2.1 实体机网络设置

    1、实体服务器接入没有划分VLAN的交换机上进行操作

    3.2.2 虚拟机网络设置

    虚拟机网卡采用NAT模式,不要使用桥接模式,因为稍后我们会搭建DHCP服务器,在同一局域网多个DHCP服务会有冲突。

    3.2.2.1 VMware网络设置

    VMware的NAT模式的dhcp服务也关闭,避免干扰。
    在这里插入图片描述

    3.2.2.2 Virtualbox网络设置

    Virtualbox安装网络设置如下:
    批量安装服务器设置
    网络设置
    在这里插入图片描述

    4 Cobbler安装配置

    4.1 Cobbler安装

    具备互联网接入直接运行yum命令,不具备互联网接入的话,搭建yum源服务器。

    yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd xinetd python-ctypes tftp lrzsz vim wget
    
    • 1

    关闭SELinux

    # 关闭
    [root@devops ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
    [root@devops ~]# reboot
    
    • 1
    • 2
    • 3

    设置完毕后,重启服务器生效

    开始启动服务

    systemctl start httpd
    systemctl start cobblerd
    
    • 1
    • 2

    查看cobbler

    cobbler check
    
    • 1

    配置文件说明

    [root@devops ~]# rpm -ql cobbler  # 查看安装的文件,下面列出部分。
    /etc/cobbler                  # 配置文件目录
    /etc/cobbler/settings           # cobbler主配置文件,这个文件是YAML格式,Cobbler是python写的程序。
    /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模块配置文件
    /var/lib/cobbler                # 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                # 日志目录
    /var/log/cobbler/install.log    # 客户端系统安装日志
    /var/log/cobbler/cobbler.log    # cobbler日志
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    4.2 Cobbler 配置

    修改常见配置文件,查看本地IP地址将ip地址写入如下文件
    ip addr
    在这里插入图片描述
    修改配置文件

    IPADDR=192.168.1.10
    sed -i 's/server: 127.0.0.1/server: '${IPADDR}'/' /etc/cobbler/settings && grep "server: ${IPADDR}" /etc/cobbler/settings
    sed -i 's/next_server: 127.0.0.1/next_server: '${IPADDR}'/' /etc/cobbler/settings && grep "next_server: ${IPADDR}" /etc/cobbler/settings
    sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings && grep 'manage_dhcp: 1' /etc/cobbler/settings
    sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings && grep 'pxe_just_once: 1' /etc/cobbler/settings
    sed -i "s#manage_rsync: 0#manage_rsync: 1#g"  /etc/cobbler/settings && grep "manage_rsync: 1" /etc/cobbler/settings
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    设置批量安装的服务器的root密码

    # 生产密钥方式 - 以654321为例
    [root@devops ~]# openssl passwd -1 -salt 'root' '654321'
    [root@devops ~]# default_password_crypted: "$1$root$Js1erquGbefP5iwCuWmEh/"
    # 修改默认密码 default_password_crypted
    [root@devops ~]# vim /etc/cobbler/settings
    #最终修改的结果
    default_password_crypted: "$1$root$Js1erquGbefP5iwCuWmEh/"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装bobbler-get-loaders文件
    下载[cobbler-get-loaders](链接: https://pan.baidu.com/s/12nYtI4h9fjScRnnqFjIB9g?pwd=uew4)离线安装包
    将离线安装包上传至服务器的/var/lib/cobblers/loaders/目录

    cd /var/lib/cobbler/loaders/
    tar xf cobbler-get-loaders.tar.gz
    mv cobbler-get-loaders/* .
    rm -fr cobbler-get-loaders cobbler-get-loaders.tar.gz
    
    • 1
    • 2
    • 3
    • 4

    修改tftp参数

    [root@devops loaders]# vi /etc/xinetd.d/tftp
            disable                 = no
    
    • 1
    • 2

    重启服务

    systemctl restart xinetd
    systemctl restart cobblerd
    systemctl enable rsyncd.service
    systemctl start rsyncd.service
    
    • 1
    • 2
    • 3
    • 4

    配置DHCP
    根据自身的网络设置。

    # 修改cobbler的dhcp模版,不要直接修改dhcp本身的配置文件,因为cobbler会覆盖。
    [root@devops ~]# vim /etc/cobbler/dhcp.template
    subnet 192.168.1.0 netmask 255.255.255.0 {
         option routers             192.168.1.1;
         option domain-name-servers 192.168.1.1;
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        192.168.1.250 192.168.1.254;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    同步Cobbler配置信息

    # 同步最新cobbler配置,它会根据配置自动修改dhcp等服务。
    [root@devops ~]# cobbler sync   # 同步所有配置,可以仔细看一下sync做了什么。
    task started: 2015-12-03_204822_sync
    task started (id=Sync, time=Thu Dec  3 20:48:22 2015)
    running pre-sync triggers
    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 ***
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    设置开机启动

    systemctl enable httpd
    systemctl enable xinetd
    systemctl enable cobblerd
    systemctl enable dhcpd
    systemctl enable rsyncd
    systemctl enable tftp
    
    systemctl start httpd
    systemctl start xinetd
    systemctl start cobblerd
    systemctl start dhcpd
    systemctl start rsyncd
    systemctl start tftp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    查看服务器状态

    systemctl status httpd
    systemctl status xinetd
    systemctl status cobblerd
    systemctl status dhcpd
    systemctl status rsyncd
    systemctl status tftp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    关闭防火墙
    本人不建议关闭防火墙,针对具体端口开放即可,由于是局域网临时装机,故采取懒人安装方法直接关闭防火墙

    [root@devops ~]# systemctl stop firewalld
    
    • 1

    浏览器中输入信息查看
    http://192.168.1.10/
    在这里插入图片描述
    查看cobbler
    http://192.168.1.10/cobbler/
    在这里插入图片描述

    4.3 Cobbler导入镜像

    4.3.1 下载镜像

    官网下载 对应的镜像 下载centos minimal镜像,本次部署的为CentOS7.9

    4.3.2 挂载镜像

    将下载的镜像传入服务器

    # 挂载
    [root@devops ~]# mount CentOS-7-x86_64-Minimal-2009.iso /mnt/
    mount: /dev/loop0 is write-protected, mounting read-only
    
    • 1
    • 2
    • 3

    4.3.3 导入镜像

    cobbler import --path=/mnt/ --name=CentOS-7.9-x86_64 --arch=x86_64
    
    # --path 镜像路径
    # --name 为安装源定义一个名字
    # --arch 指定安装源是32位、64位、ia64, 目前支持的选项有: x86│x86_64│ia64
    # 安装源的唯一标示就是根据name参数来定义,本例导入成功后,安装源的唯一标示就是:CentOS-7.6-x86_64,如果重复,系统会提示导入失败。
    # 镜像存放目录,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-7.1-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.3.4 检查导入镜像

    [root@devops ~]# ls -l /var/www/cobbler/ks_mirror/
    total 0
    drwxr-xr-x  8 root root 254 Nov  3  2020 CentOS-7.9-x86_64
    drwxr-xr-x. 2 root root  36 Nov  6 18:23 config
    [root@devops ~]# ls /var/www/cobbler/ks_mirror/CentOS-7.9-x86_64/
    CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
    [root@devops ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.3.5 编写配置文件

    [root@devops ~]# cd /var/lib/cobbler/kickstarts/
    [root@devops ~]# vim centos-7.9-x86_64.cfg 
    # Cobbler for Kickstart Configurator for CentOS 7.6
    install
    url --url=$tree
    text
    lang en_US.UTF-8
    keyboard us
    zerombr
    bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    $SNIPPET('network_config')
    timezone --utc Asia/Shanghai
    authconfig --enableshadow --passalgo=sha512
    rootpw  --iscrypted $default_password_crypted
    clearpart --all --initlabel
    part / --fstype xfs --size 51200 --ondisk=sda
    part /var --fstype xfs --size 1 --grow --ondisk=sda
    firstboot --disable
    selinux --disabled
    firewall --disabled
    logging --level=info
    poweroff
    %pre
    $SNIPPET('log_ks_pre')
    $SNIPPET('kickstart_start')
    $SNIPPET('pre_install_network_config')
    $SNIPPET('pre_anamon')
    %end
    %packages
    @^minimal
    @core
    kexec-tools
    %end
    %post
    systemctl disable postfix.service
    %end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    编辑profile,修改关联的ks文件

    cobbler profile edit --name=CentOS-7.9-x86_64 --kickstart=/var/lib/cobbler/kickstarts/centos-7.9-x86_64.cfg 
    
    • 1

    查看关联配置

    [root@devops ~
    
    > 这里是引用
    
    ]# cobbler profile report --name=CentOS-7.9-x86_64
    Name                           : CentOS-7.9-x86_64
    TFTP Boot Files                : {}
    Comment                        : 
    DHCP Tag                       : default
    Distribution                   : CentOS-7.9-x86_64
    Enable gPXE?                   : 0
    Enable PXE Menu?               : 1
    Fetchable Files                : {}
    Kernel Options                 : {}
    Kernel Options (Post Install)  : {}
    Kickstart                      : /var/lib/cobbler/kickstarts/centos-7.9-x86_64.cfg
    Kickstart Metadata             : {}
    Management Classes             : []
    Management Parameters          : <<inherit>>
    Name Servers                   : []
    Name Servers Search Path       : []
    Owners                         : ['admin']
    Parent Profile                 : 
    Internal 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    查看ks文件信息

    [root@devops ~]# cobbler list
    distros:
       CentOS-7.9-x86_64
    profiles:
       CentOS-7.9-x86_64
    
    • 1
    • 2
    • 3
    • 4
    • 5

    调整内核参数
    如果是虚拟机配置此处更改,如果是实体机则忽略此处。

    [root@devops ~]# cobbler profile edit --name=CentOS-7.9-x86_64 --kopts='net.ifnames=0 biosdevname=0'
    [root@devops ~]# cobbler profile report CentOS-7.9-x86_64
    Name                           : CentOS-7.9-x86_64
    TFTP Boot Files                : {}
    Distribution                   : CentOS-7.9-x86_64
    Virt Path                      : 
    Virt RAM (MB)                  : 512
    Virt Type                      : kvm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.3.6 同步配置信息

    [root@devops ~]# cobbler sync
    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 ***
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5 批量安装操作系统

    批量安装分为虚拟机的批量安装和实体机的安装

    5.1 虚拟机安装

    virtualbox虚拟机设置
    创建虚拟机,启动顺序选择网络为第一启动顺序
    在这里插入图片描述

    启动虚拟机,选中第二个CentOS-7.9-x86_64,回车确认。
    在这里插入图片描述
    接下来开始自动化安装
    在这里插入图片描述

    5.2 实体机安装

    实体机安装需要用到ipmitools工具

    5.2.1 安装ipmitool工具

    \cp ipmitool /usr/bin/ipmitool
    chmod +x /usr/bin/ipmitool
    modprobe ipmi_watchdog ; modprobe ipmi_poweroff ; modprobe ipmi_devintf ; modprobe ipmi_si 
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 123456 power status
    
    设置服务器从pxe启动
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 chassis bootdev pxe
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power reset
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    参考上面的命令设置为pex启动,进行装机,
    在这里插入图片描述
    开始自动化安装
    在这里插入图片描述

    安装完毕服务器会关机。

    5.3 开机设置

    服务器开机,开机需要将服务器的启动方式设置为硬盘启动,如果忘记这一步,就跟会重新来一边。

    5.3.1 virtualbox设置

    在这里插入图片描述

    5.3.2 实体机设置

    设置服务器从disk启动
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power on ; sleep 5
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 chassis bootdev disk
    ipmitool -I lanplus -H 10.254.178.91 -U test -P 654321 power reset
    
    • 1
    • 2
    • 3
    • 4

    启动后界面信息如下。
    在这里插入图片描述
    以上为自动化批量安装操作系统的步骤。

    6 参考

    Chrising的运维知识体系

  • 相关阅读:
    重绘、重排区别以及如何避免
    浅谈C/C++指针和引用在Linux和Windows不同环境下的编码风格
    向表中针对全部列插入数据
    【入门Flink】- 06Flink作业提交流程【待完善】
    Numpy数组计算实训
    JavaScript中的浅拷贝和深拷贝
    java计算机毕业设计医疗器械销售电子商城源码+系统+mysql数据库+lw文档
    k8s教程(02)-入门及案例
    《SpringBoot篇》02.SpringBoot程序的打包与运行(jar包的运行原理)
    Cadence OrCAD Capture交叉参考报表生成方法图文教程
  • 原文地址:https://blog.csdn.net/shallow72/article/details/127720078