Linux系统基于网络的自动化安装

时间:2021-03-23 05:59:47

    装一个操作系统对一个普通人来说是一件非常麻烦的事了。而对于一个专业人士来说,应该是一个非常轻松的事。但是这样的情况也仅限于有限的几台需要安装。在实际工作的中,我们经常会遇到这样的情况:有大批量的计算机需要同时安装Linux,或者想要安装Linux但是计算机没有光驱,或者是通过光驱的方式一个个安装。这样安装不仅效率低,也不利于以后的维护。这个时候你就需要利用网络的强大功能了。它可以帮你基于网络来完成全自动化的安装,中间不需要人工去干预。这就是cobbler服务

    cobbler服务是一个快速网络安装linux 操作系统的服务。它支持众多的Linux 发行版本:Red Hat 、Fedora 、CentOS 、Debian 、Ubuntu和SuSE ,也可以支持网络安装windows。它同时提供了CLI 和Web的页面管理形式。

    本文所提到的基于网络的系统自动化安装方案主要用到了以下的几个协议和技术:

       -- PXE(Preboot Execution Environment / 远程引导技术)

      -- DHCP(Dynamic Host Configuration Protocol / 动态主机配置协议)

      -- TFTP(Trivial File Transfer Protocol / 普通文件传输协议)

      -- HTTP(Hyper Text Transfer Protocal /超文本传输协议)

    cobbler的工作流程:

      1、client 裸机配置了从网络启动后,开机后会广播报文请求DHCP 服务器(cobbler server )为其发送一个分配好的IP地址

      2、DHCP 服务器(cobbler server )收到请求后会返回一个responese ,包括其分配的ip 地址

      3、client 裸机拿到ip 后再向cobbler server 发送一个安装OS引导文件的请求

      4、cobbler server 告诉裸机OS 引导文件的名字和TFTP server 的ip和port

      5、client 裸机通过上面告知的TFTP server 的通信地址,下载引导文件

      6、client 裸机执行执行该引导文件,确定加载信息,选择要安装的OS,期间会再向cobbler server 请求kickstart 文件和os image

      7、cobbler server 再次回应请求的kickstart 和OS iamge文件位置
      8、client 裸机加载kickstart 文件
      9、client 裸机接收OS image ,安装该OS image

      10、客户端启动

    下面就来说说配置cobbler的步骤:

      一、先安装cobbler、dhcp服务,并开启对应服务(在CentOS 7 上安装)

        yum  install  -y  cobbler  dhcp(安装cobbler和dhcp)   

        systemctl enable cobblerd(设置cobbler服务为开机自启)
       systemctl start cobblerd(打开cobbler服务)
       systemctl enable tftp(设置tftp服务为开机自启)
       systemctl start tftp(打开tftp服务)
       systemctl enable httpd(设置httpd服务为开机自启)
       systemctl start httpd(打开httpd服务)

     二、检查cobbler的配置文件

       cobbler  check:这一步会检查cobbler的配置文件是否完整。第一次执行会出现很多的错误报告,我们需要跟着这些错误报告来一步步的更改它。

Linux系统基于网络的自动化安装

      根据cobbler  check的提示,我们来一步步的完善它。

      1)修改配置文件

        vim  /etc/cobbler/setting

        这里面我们只需要更改四处就可,

        找到这一行:default_password_crypted: "$1$8ckh4FrM$ayLsgQi85bi8Nt5Gj4Drj/" 这里的密码是需要更改的

        先利用openssl passwd -1 生成口令,然后把生成的口令来替换掉这一窜随机数
        这一行:next_server: 127.0.0.1   这里把你本机的ip地址更改上去就可(他是提供tftp里repo源文件位置的地址)
        这一行:manage_dhcp: 0  这里0改为1 (表示打开DHCP为client分配ip地址)
        这一行:server: 1172.0.0.1 这里改为自己本机的ip(12.168.35.5)地址(表示为client提供cobbler服务的主机地址)

      2)更改tftp配置文件

        这个根据提示修改/etc/xinetd.d/tftp里的disabled 为on

          vim  /etc/xinetd.d/tftp

      3)配置DHCP服务模板

        vim  /etc/cobbler/dhcp.template 

      Linux系统基于网络的自动化安装

        这里就修改两个地方:subnet 192.168.25.0 netmask 255.255.255.0 {
                    range dynamic-bootp 192.168.25.100 192.168.25.254;

        修改完成后重启cobbler服务,并同步cobbler配置文件

          systenctl  restart  cobbler

          cobbler  sync

        这样DHCP文件就配置完成,可以打开DHCP服务了

          systemctl  enable  dhcpd(设置dhcp为开机自启)

          systemctl  start  dhcpd (打开dhcp服务)

      4)准备启动文件和和菜单风格文件

        如果主机连接在internet上那么就好办了,我们只需要一步就可
          cobbler get-loaders (执行这条命令,他会自动连网下载所需的启动文件与菜单界面)

          他会把下载到的文件放置到 /var/lib/cobbler/loaders这个目录下

      5)关闭本机的selinux与防火墙,这是为了能使外部的网络请求可以不被这些策略拒绝在外而接收不到请求

        setenforce  0  (关闭selinux策略)

        iptables  -F  (关闭防火墙)

        当然这些方法都是临时的,如果想长期更改还需要更改他们的配置文件。当然这样并不安全,所以这里我们就临时更改一下

      6)像提示里的rsync、debmirrior与fencing  tools这几个提示可以不用理会,因为这里我们用不到它。

      然后重新启动cobbler服务:

        systemctl  reestart cobblerd(重启服务)

        cobbler  sync (重新载入配置文件)

 

     三、配置安装系统所需要的yum源

         这需要把光盘里的文件导入到cobbler的服务目录里,为系统的安装准备好文件

        cobbler  import  --path=/misc/cd  --name=centos7_test  --arch=x86_64 (导入光盘文件)
        cobbler distro list (这时就可查看导入的文件所生成的yum的库名了)

     四、生成kickstart引导文件

        到这里我们就要导入自己制作的安装的引导文件了,这个引导文件需要我们根据安装所需要的包来自己手动制作,同时也可根据系统生成的文件来加以修改也可以。下面就是一个根据系统的配置文件修改的ks引导文件ks.cfg

    vim /anaconda-ks.cfg

    Linux系统基于网络的自动化安装
     Linux系统基于网络的自动化安装  

     到此kickstart  文件编辑完成

    我们要把这个文件导入进cobbler的服务路径里

    cp  anaconda-ks.cfg  /var/lib/cobbler/kickstarts/ks7.cfg (复制这个制作好的文件到cobbler的目录下存放)

    chmod +r  ks7.cfg  (要记得更改这个文件的权限,不然其他人是无权查看这个引导文件的)

    cobbler  profile  add  --name=centos7_hello  --distro=centos7_test  --kickstart=/var/lib/cobbler/kickstarts/ks7.cfg(导入ks.cfg文件为centos7_hello 这个菜单名下的引导文件)

    systemctl  restart  cobblerd (再次重启这个服务)

    cobbler sync(同步配置文件)

      服务端的配置准备完成。

    五、配置客户端。将客户端连入这个网内,启动电源,选择菜单

      Linux系统基于网络的自动化安装

     安装中:

      Linux系统基于网络的自动化安装

 

      安装完成后,就可以以root的身份来登录进系统,它的密码就是当初设定在ks.cfg文件里的密码。登录后就可以进行各种操作了