centos7.4批量自动化安装(pxe、cobbler、制作自动化iso镜像);pxe安装;cobbler安装;

红太狼 2022-05-17 04:46 535阅读 0赞
  • 前言
  • kickstart文件详解
  • u盘自动化安装
  • cobbler自动化安装

前言

学IT的人经常要去而操作系统,而装操作系统大部分都是交互式的操作,也就是说安装时需要有人在旁边设置语言,时间,网络,或者点下一步,下一步这样子,装系统变成了一个人机交互的过程。如果装一台操作系统还可以,但是如果给机房装操作系统,有多台的操作系统的话,就会很累,装操作系统就会变成一项机械的体力劳动。

于是乎,有人提出,既然整个机房装系统的配置是一样的,那么能不能使用同样的配置应用于所有机器。也就是说,提前定制好相关配置,写到一个文件里面,在系统启动时会读取这个文件,根据这个文件来设置后续的时间,语言,网络等系统配置。这个文件就是kickstart。

在实际的机房操作中,安装操作系统往往都不是有人在旁边一直点下一步,人机交互式的点相关配置的(机房温度很高,并且线很多,总之一把人都不会愿意呆很久。)。更多情况下我们是先设定好相关配置,然后指出操作系统的安装方式。接下来静静等待就好。
常见的非交互式的安装操作系统的方式主要有以下三种。

  • 制作自动化安装的iso镜像(通过u盘来安装),主要是在原有的系统镜像上做一些修改,让我们自定制的配置文件kickstartt与原有的系统镜像融合,形成新的镜像。进而实现自动化安装的步骤。
  • pxe安装,是早期机房安装的神器。其原理主要就是在机器a上部署DHCP、TFTP等相关服务,把镜像和配置文件都放在机器a上,而后其他机器通过a的dhcp服务获得ip,通过ip与机器a进行通信,拉取机器a的配置文件以及镜像等到本地运行。然后就可以实现整个机房都自动化安装操作系统了。
  • cobbler安装,这是对pxe的二次封装,在pxe当中,我们还需要手动的去部署dhcp和tftp等相关服务。在cobbler中,相关的配置、软件、服务等都被集成在了一起,管理起来能够更简单。

这三种方式,用的比较多的是第一种跟第三种。第一种经常用于使用在安装几台服务器的小场面上,而第三种一般用于几百台、甚至上千台这种规模。尤其是cobbler还可以进行跨网段的安装(网上有相关教程,不作为此篇文章的重点)。本片文章主要讲如何制作自动化的镜像和做cobbler服务器。

kickstart文件详解

在学习制作镜像和做cobbler之前,首先要学习如何把装系统过程中人机交互的那个过程做成一个配置文件。也就是说,我们要学习一下生成kickstart文件。

首先,我们要利用图形化的界面生成一个ks模板文件,当你理解ks文件所有参数和命令的含义后,可以直接在别人的模板上稍加修改,然后就可以直接拿去用了。

1.在一台装有图形化界面的机器上,我用的是centos7.4,安装相关工具并启动。

  1. [ root@ygl ~ ]# yum install system-config-kickstart
  2. #安装图形化管理工具
  3. [ root@ygl ~ ]# system-config-kickstart
  4. #启动图形界面

2.逐步安装,我把安装容易出错的配置说一下,其他的配置不再赘述
这里写图片描述

在选择安装源的时候,如果你是使用的u盘安装,就选择cd-rom,如果你是cobbler安装就选择http然后填上相应的ip和目录位置即可,比如http://10.1.18.29/cobbler/ks_mirror/centos7.4

这里写图片描述

第二张图要勾选这几个位置,是强调重建bootloader。

这里写图片描述

第三张图要注意的位置是,勾选重新初始化mbr和重新初始化卷标这两项内容。
如果只做kickstart文件上还有什么不理解的地方,可以参考此篇博客。图形化界面的话,只要看得懂英语,问题都不大。

自动化安装CentOS

u盘自动化安装

1.挂载初始镜像。
以centos7.4为例,你需要把最初的系统镜像挂载到某个目录,比如/mnt/

2.把所挂载的光盘里的所有文件全部复制出来,放到一个你指定的地方,我放在了/var/ftp/pub/fulliso/下面。 (这样放的目的是为了后期通过ftp拉取制作好的镜像,当然我先安装并开启了ftp服务。)
注意哦:有两个是隐藏文件,别忘了复制出来哦。

  1. [root@29 ~]# yum -y install vsftpd
  2. [root@29 ~]# systemctl start vsftpd
  3. [root@29 ~]# cp -r /mnt/* /var/ftp/pub/fulliso/
  4. #复制所有文件到一个新的目录
  5. [root@29 ~]# cd /mnt/
  6. [root@29 /mnt]# cp .discinfo .treeinfo /var/ftp/pub/fulliso/
  7. #把隐藏文件也复制过去

3.删除所有的TRANS.TBL文件

  1. [root@29 ~]# cd /var/ftp/pub/fulliso/
  2. #切换目录
  3. [root@29 /var/ftp/pub/fulliso]# find -name TRANS.TBL -exec rm {} \;

4.删除源文件的repodata文件。(因为你是要重新定制光盘镜像,原有的repodata可能因为你路径的变换或者内容的删减变得不再合适了,你需要删除并根据现有情况重新生成repodata)

  1. [root@29 /var/ftp/pub/fulliso]# rm -rf repodata/

5.根据情况重新生成相关repodata。

  1. [root@29 /var/ftp/pub/fulliso]# mkdir repodata
  2. #新建目录
  3. [root@29 /var/ftp/pub/fulliso]# cp /mnt/repodata/d8***-x86_64-comps.xml repodata/
  4. #把原仓库中repodata目录下的内容复制到新的iso的repodata文件中。
  5. #注意只复制那个xml结尾的文件。尾号为x86_64-comps.xml的文件,就是需要复制的那个。
  6. #每台机器情况不一样,按实际情况去进行考量。
  7. [root@29 /var/ftp/pub/fulliso]# createrepo -g repodata/d87379a47bc2060f833000b9cef7f9670195fe197271d37fce5791e669265e8b-c7-x86_64-comps.xml ./
  8. #生成新的repodata文件。

6.定制kickstart文件
上文中生成的kickstart文件是个基本的模板,真实的安装环境我们还需要进行二次修改。

最小化安装版kickstart文件

  1. #platform=x86, AMD64, or Intel EM64T
  2. #version=DEVEL
  3. # Install OS instead of upgrade
  4. install #选择安装还是选择更新
  5. # Keyboard layouts
  6. keyboard 'us'
  7. # Root password #root用户密码的设定,可利用openssl命令设定(用法见百度)
  8. #或者在上文中图形化生成ks模板文件时直接设定好密码。
  9. rootpw --iscrypted $1$GKfMMD9.$Cgag5pWRZcCLO52j1Hw4P1
  10. # Use cdrom installation
  11. cdrom #重要的一个选项,如果是u盘装就选cdrom,如果cobbler装就和初始的那
  12. #个ks文件一样就好,声明是网络安装和相关服务的ip地址。
  13. # System language
  14. lang en_US
  15. # Firewall configuration
  16. firewall --disabled
  17. # System authorization information
  18. auth --useshadow --passalgo=sha512
  19. # Use text mode install
  20. text
  21. # SELinux configuration
  22. selinux --disabled
  23. # Do not configure the X Window System
  24. skipx
  25. # Network information
  26. network --bootproto=dhcp --device=ens33
  27. # Reboot after installation
  28. reboot
  29. # System timezone
  30. timezone Asia/Shanghai
  31. # System bootloader configuration
  32. bootloader --location=mbr
  33. # Clear the Master Boot Record
  34. zerombr
  35. # Partition clearing information
  36. clearpart --all --initlabel
  37. # Disk partitioning information
  38. #分区要注意不能分的太大了,要结合自己实际硬盘情况,不然安装的时候会报错。
  39. #可以在分区的时候直接定义lvm卷。
  40. part / --fstype="xfs" --size=20480
  41. part /boot --fstype="xfs" --size=500
  42. part swap --fstype="swap" --size=4096
  43. #接下来是迷你版安装的相关yum包
  44. %packages
  45. @^minimal
  46. @base
  47. -abrt-addon-ccpp
  48. -abrt-addon-python
  49. -abrt-cli
  50. -abrt-console-notification
  51. -bash-completion
  52. -blktrace
  53. -bridge-utils
  54. -bzip2
  55. -chrony
  56. -cryptsetup
  57. -dmraid
  58. -dosfstools
  59. -ethtool
  60. -fprintd-pam
  61. -gnupg2
  62. -hunspell
  63. -hunspell-en
  64. -kmod-kvdo
  65. -kpatch
  66. -ledmon
  67. -libaio
  68. -libreport-plugin-mailx
  69. -libstoragemgmt
  70. -lvm2
  71. -man-pages
  72. -man-pages-overrides
  73. -mdadm
  74. -mlocate
  75. -mtr
  76. -nano
  77. -ntpdate
  78. -pinfo
  79. -plymouth
  80. -pm-utils
  81. -rdate
  82. -rfkill
  83. -rng-tools
  84. -rsync
  85. -scl-utils
  86. -setuptool
  87. -smartmontools
  88. -sos
  89. -sssd-client
  90. -strace
  91. -sysstat
  92. -systemtap-runtime
  93. -tcpdump
  94. -tcsh
  95. -teamd
  96. -time
  97. -unzip
  98. -usbutils
  99. -vdo
  100. -vim-enhanced
  101. -virt-what
  102. -wget
  103. -which
  104. -words
  105. -xfsdump
  106. -xz
  107. -yum-langpacks
  108. -yum-utils
  109. -zip
  110. %end

上述文件除了密码之外的部分都可以拿去借鉴,如果你整个文件都拿去用的话,生成的默认密码是我所设置的密码。建议先自己生成一个模板ks文件,然后根据实际需要进行二次修改。

带桌面的全安装版本

  1. #platform=x86, AMD64, or Intel EM64T
  2. #version=DEVEL
  3. # Install OS instead of upgrade
  4. install
  5. # Keyboard layouts
  6. keyboard 'us'
  7. # Root password
  8. rootpw --iscrypted $1$GKfMMD9.$Cgag5pWRZcCLO52j1Hw4P1
  9. # Use cdrom installation
  10. cdrom
  11. # System language
  12. lang en_US
  13. # Firewall configuration
  14. firewall --disabled
  15. # System authorization information
  16. auth --useshadow --passalgo=sha512
  17. # Use text mode install
  18. text
  19. # SELinux configuration
  20. selinux --disabled
  21. # Do not configure the X Window System
  22. skipx
  23. # Network information
  24. network --bootproto=dhcp
  25. # Reboot after installation
  26. reboot
  27. # System timezone
  28. timezone Asia/Shanghai
  29. # System bootloader configuration
  30. bootloader --location=mbr
  31. # Clear the Master Boot Record
  32. zerombr
  33. # Partition clearing information
  34. clearpart --all --initlabel
  35. # Disk partitioning information
  36. part / --fstype="xfs" --size=20480
  37. part /boot --fstype="xfs" --size=500
  38. part swap --fstype="swap" --size=4096
  39. %packages
  40. @^graphical-server-environment
  41. @base
  42. @core
  43. @desktop-debugging
  44. @dial-up
  45. @fonts
  46. @gnome-desktop
  47. @guest-agents
  48. @guest-desktop-agents
  49. @ha
  50. @hardware-monitoring
  51. @input-methods
  52. @internet-browser
  53. @java-platform
  54. @kde-desktop
  55. @large-systems
  56. @load-balancer
  57. @multimedia
  58. @performance
  59. @print-client
  60. @virtualization-client
  61. @virtualization-hypervisor
  62. @virtualization-tools
  63. @x11
  64. chrony
  65. kexec-tools
  66. %end

7.生成专门的目录存放kickstart文件

  1. [root@29 /var/ftp/pub/fulliso]# mkdir kickstart
  2. [root@29 /var/ftp/pub/fulliso]# mv ks7-desktop.cfg ks7-mini.cfg kickstart/
  3. #将编写好的ks文件放入kickstart目录中,ks7-desktop.cfg是桌面完整版的配置
  4. #ks7-mini.cfg是精简mini版本的配置

8.制作启动菜单

  1. [root@29 /var/ftp/pub/fulliso]# cd isolinux/
  2. #进入到启动菜单目录
  3. [root@29 /var/ftp/pub/fulliso/isolinux]# vim isolinux.cfg
  4. #修改启动菜单

原有的内容都不变,在原有基础上增加两个label,这两个label在启动的时候会显示出来。增加desktopl标签和mini标签,并且指明ks文件的存放位置。

  1. ...
  2. ...
  3. ...
  4. label desktop
  5. menu label Install ^desktop system
  6. kernel vmlinuz
  7. append initrd=initrd.img ks=cdrom:/kickstart/ks7-desktop.cfg
  8. label mini
  9. menu label Install an m^ini system
  10. kernel vmlinuz
  11. append initrd=initrd.img ks=cdrom:/kickstart/ks7-mini.cfg
  12. label linux
  13. menu label ^Install CentOS 7
  14. kernel vmlinuz
  15. append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
  16. label check
  17. menu label Test this ^media & install CentOS 7
  18. menu default
  19. kernel vmlinuz
  20. append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
  21. menu separator # insert an empty line
  22. # utilities submenu
  23. menu begin ^Troubleshooting
  24. menu title Troubleshooting
  25. label vesa
  26. menu indent count 5
  27. menu label Install CentOS 7 in ^basic graphics mode
  28. text help
  29. Try this option out if you're having trouble installing
  30. CentOS 7.
  31. endtext
  32. kernel vmlinuz
  33. append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 xdriver=vesa nomodeset quiet
  34. label rescue
  35. menu indent count 5
  36. menu label ^Rescue a CentOS system
  37. text help
  38. If the system will not boot, this lets you access files
  39. and edit config files to try to get it booting again.
  40. endtext
  41. kernel vmlinuz
  42. append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet
  43. label memtest
  44. menu label Run a ^memory test
  45. text help
  46. If your system is having issues, a problem with your
  47. system's memory may be the cause. Use this utility to
  48. see if the memory is working correctly.
  49. endtext
  50. kernel memtest
  51. menu separator # insert an empty line
  52. label local
  53. menu label Boot from ^local drive
  54. localboot 0xffff
  55. menu separator # insert an empty line
  56. menu separator # insert an empty line
  57. label returntomain
  58. menu label Return to ^main menu
  59. menu exit

8.制作光盘镜像

  1. [root@29 /var/ftp/pub]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7.4 autoinstall" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /var/ftp/pub/auto_centos7.4.iso /var/ftp/pub/fulliso/
  2. #这条命令很长,我讲下要注意的几个选项。
  3. #-V "CentOS 7.4 autoinstall" 指的是镜像的详细信息,可以修改为和自己操作系
  4. #统版本一样的名字
  5. #-o /var/ftp/pub/auto_centos7.4.iso 指的是你自己制作的镜像的存放位置。
  6. #建议放在pub的目录下,一会儿好用ftp拉取出来。
  7. #最后一个参数是源文件的位置,就是你要制作为iso镜像的那一坨文件在哪里放。
  8. #举例而言,我一开始就把所有制作镜像所需的文件都放在了/var/ftp/pub/fulliso/目录下

除了上面所说的一些点,其他内容都是没必要进行修改的,直接照抄即可,如果你想知道其他选项含义,建议百度或者使用man
9.利用ftp拉取镜像到windows下,然后拷贝至u盘。在安装的时候选择一下安装桌面版或者最小版,剩下的就完全是自动化的了。

cobbler自动化安装

当有更多的机器的时候,u盘自动化依然很累,我们需要一个更加一劳永逸的办法。那就是给机房内的一台电脑安装上操作系统,然后给它搭建cobbler服务,让其他的机器通过pxe进行自动化安装。

请先看完下面这篇博客会对你帮助很大的。
使用Cobbler批量安装操作系统

文中的操作我是完全实验过的,完全可行,但是有一点文中讲的不是很清楚。就是有关ks文件的设置。

这里写图片描述

如果你使用u盘安装,这部分配置文件要写成cdrom,如果使用cobbler安装,这部分修改为http的url,确保这个url能够访问到镜像。

下面贴上我使用cobbler自动安装操作系统的ks文件

  1. #platform=x86, AMD64, or Intel EM64T
  2. #version=DEVEL
  3. # Install OS instead of upgrade
  4. install
  5. # Keyboard layouts
  6. keyboard 'us'
  7. # Root password
  8. rootpw --iscrypted $1$GKfMMD9.$Cgag5pWRZcCLO52j1Hw4P1
  9. # Use network installation
  10. url --url="http://10.1.18.29/cobbler/ks_mirror/centos7.4"
  11. # System language
  12. lang en_US
  13. # Firewall configuration
  14. firewall --disabled
  15. # System authorization information
  16. auth --useshadow --passalgo=sha512
  17. # Use text mode install
  18. text
  19. # SELinux configuration
  20. selinux --disabled
  21. # Do not configure the X Window System
  22. skipx
  23. # Network information
  24. network --bootproto=dhcp --device=ens33
  25. # Reboot after installation
  26. reboot
  27. # System timezone
  28. timezone Asia/Shanghai
  29. # System bootloader configuration
  30. bootloader --location=mbr
  31. # Clear the Master Boot Record
  32. zerombr
  33. # Partition clearing information
  34. clearpart --all --initlabel
  35. # Disk partitioning information
  36. part / --fstype="xfs" --size=40960
  37. part /boot --fstype="xfs" --size=500
  38. part /usr --fstype="xfs" --size=51200
  39. part swap --fstype="swap" --size=4096
  40. %packages
  41. @^minimal
  42. @base
  43. -abrt-addon-ccpp
  44. -abrt-addon-python
  45. -abrt-cli
  46. -abrt-console-notification
  47. -bash-completion
  48. -blktrace
  49. -bridge-utils
  50. -bzip2
  51. -chrony
  52. -cryptsetup
  53. -dmraid
  54. -dosfstools
  55. -ethtool
  56. -fprintd-pam
  57. -gnupg2
  58. -hunspell
  59. -hunspell-en
  60. -kmod-kvdo
  61. -kpatch
  62. -ledmon
  63. -libaio
  64. -libreport-plugin-mailx
  65. -libstoragemgmt
  66. -lvm2
  67. -man-pages
  68. -man-pages-overrides
  69. -mdadm
  70. -mlocate
  71. -mtr
  72. -nano
  73. -ntpdate
  74. -pinfo
  75. -plymouth
  76. -pm-utils
  77. -rdate
  78. -rfkill
  79. -rng-tools
  80. -rsync
  81. -scl-utils
  82. -setuptool
  83. -smartmontools
  84. -sos
  85. -sssd-client
  86. -strace
  87. -sysstat
  88. -systemtap-runtime
  89. -tcpdump
  90. -tcsh
  91. -teamd
  92. -time
  93. -unzip
  94. -usbutils
  95. -vdo
  96. -vim-enhanced
  97. -virt-what
  98. -wget
  99. -which
  100. -words
  101. -xfsdump
  102. -xz
  103. -yum-langpacks
  104. -yum-utils
  105. -zip
  106. %end

发表评论

表情:
评论列表 (有 0 条评论,535人围观)

还没有评论,来说两句吧...

相关阅读