Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1425|回复: 0

kickstart自动化安装linux系统

[复制链接]

217

主题

331

帖子

4711

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4711
QQ
发表于 2015-4-10 17:21:55 | 显示全部楼层 |阅读模式
随着公司业务不断增加,经常需要采购新服务器,并要求安装Linux系统,并且要求Linux版本要一致,方便以后的维护和管理,每次人工安装linux系统会浪费掉更多时间,如果我们有办法能节省一次一次的时间岂不更好呢?
大中型互联网公司一次采购服务器上百台,如果采用人工手动一台一台的安装,一个人得搞坏N张光盘,得多少个加班加点才能完成这项”艰巨”的任务呢,我们可以看到全人工来完成这样的工作太浪费人力了,有没有自动化安装平台呢,通过一台已存在的系统然后克隆或者复制到新的服务器呢。Kickstart可以毫不费力的完成这项工作。
PXE(prebootexecute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。
要使用kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、nfs、kickstart/pxe等。
1)  DHCP、TFTP安装
  1. yum  install   -y   dhcp*  tftp*
复制代码
首先配置tftp服务:
  1. vi /etc/xinetd.d/tftp
  2. service tftp
  3. {
  4. disable = no
  5. socket_type = dgram
  6. protocol = udp
  7. wait = yes
  8. user = root
  9. server = /usr/sbin/in.tftpd
  10. server_args = -u nobody -s /tftpboot
  11. per_source = 11
  12. cps = 100 2
  13. flags = IPv4
  14. }
复制代码
只需要把disable = yes改成disable = no即可。
2)  TFTP+PXE配置
要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下:
  1. mount     /dev/cdrom    /mnt 挂载本地光盘
  2. #如果系统是5.x,默认tftpboot目录已经自动创建到/根目录下
  3. #如果系统是6.x,默认tftpboot目录在/var/lib/下,所以centos6.x需要做软链接到/根目录下。
  4. cp /usr/lib/syslinux/pxelinux.0 ./
  5. cp  /mnt/images/pxeboot/{vmlinuz,initrd.img}   ./  拷贝内核至tftpboot目录下
  6. mkdir  -p  pxelinux.cfg  &&cp  /mnt/isolinux/isolinux.cfg   pxelinux.cfg/default
  7. 拷贝isolinux.cfg配置文件重命名,系统安装的时候会根据这个文件的配置启动相应的选项。
复制代码
修改vi pexlinux.cfg/default内容如下:
  1. default linux
  2. prompt 1
  3. timeout 10
  4. display boot.msg
  5. F1 boot.msg
  6. F2 options.msg
  7. F3 general.msg
  8. F4 param.msg
  9. F5 rescue.msg
  10. label centos5.8
  11. kernel vmlinuz
  12. append ks=nfs:192.168.0.79:/centosinstall/ks.cfg  ksdevice=eth0 initrd=initrd.img
  13. label text
  14. kernel vmlinuz
  15. append initrd=initrd.img text
  16. label ks
  17. kernel vmlinuz
  18. append ks initrd=initrd.img
  19. label local
  20. localboot 1
  21. label memtest86
  22. kernel memtest
  23. append –
复制代码
解析:192.168.0.79是kickstart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装文件的路径,ks.cfg是kickstart主配置文件;设置timeout 10 /*超时时间为10S */;ksdevice=etho代表当我们有多块网卡的时候,要实现自动化需要设置从eth0安装。
TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:
  1. chkconfig    tftp  --level 35 on  && service  xinetd  restart
复制代码
3)  NFS+KICKSTART配置
远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来。
  1. mkdir   -p   /centosinstall
  2. nohup cp  -rf   /mnt/*  /centosinstall  &
  3. echo  “/centosinstall    *(rw,sync)” >>/etc/exports
复制代码
在NFS配置文件/etc/exports中加入如上语句:/centosinstall    *(rw,sync),表示允许任何主机访问/centosinstall目录,有读写权限。
   配置kickstart,可以使用system-kickstart系统软件包来配置,也可以直接拷贝/root/目录下anaconda-ks.cfg 重命名为ks.cfg,并把ks.cfg拷贝至刚共享的/centosinstall目录下,赋权限为chmod 777 ks.cfg
如下我这里采用配置文件内容如下:vi ks.cfg
  1. # Kickstart file automatically generated by anaconda.
  2. install
  3. text
  4. nfs --server=192.168.0.79 --dir=/centosinstall
  5. key --skip
  6. lang zh_CN.UTF-8
  7. keyboard us
  8. network --device eth0 --bootproto=dhcp --noipv6
  9. rootpw 123456
  10. firewall --disabled
  11. authconfig --enableshadow --enablemd5
  12. selinux --disabled
  13. timezone Asia/Shanghai
  14. bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
  15. clearpart --all --initlabel
  16. part /boot --fstype ext3 --size=200
  17. part swap --size=4000
  18. part / --fstype ext3 --size=80000
  19. part /data --fstype ext3 --size=1 --grow
  20. %packages
  21. @admin-tools
  22. @base
  23. @core
  24. @development-libs
  25. @development-tools
  26. @editors
  27. @system-tools
  28. @base-x
  29. @chinese-support
  30. keyutils
  31. kexec-tools
  32. trousers
  33. fipscheck
  34. device-mapper-multipath
  35. imake
  36. audit
  37. xorg-x11-server-Xnest
  38. xorg-x11-server-Xvfb
复制代码
第一步install,以text字符界面,指定nfs共享IP和目录,设置安装后的服务器字符集、网络分配方式、密码;
然后设置防火墙状态,磁盘采用MBR方式引导,然后客户机分区的情况;%packages
后写入客户机系统需要安装的软件包,可以自己定制。更多详细的参数在此就不做过多的说明了,可以进一步学习。
在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。
需要在ks.cfg末尾添加如下命令来实现需求:
  1. %pre
  2. parted -s /dev/sdb  mklabel gpt
  3. %end
复制代码
为了实现kickstart安装完系统后,自动初始化系统等等工作,我们可以在系统安装完后,自动执行定制的脚本,需要在ks.cfg末尾加入如下配置:
  1. %post
  2. mount  -t  nfs 192.168.0.79:/centos/init /mnt
  3. cd  /mnt/ ;/bin/sh  auto_init.sh
  4. %end
复制代码
4)  DHCP配置及测试
Pxe+kickstart自动安装系统,需要用到DHCP分配的客户端的IP地址,这里直接上dhcpd.conf配置文件:
  1. ddns-update-style interim;
  2. ignore client-updates;
  3. next-server 192.168.0.79;
  4. filename "pxelinux.0";
  5. allow booting;
  6. allow bootp;
  7. subnet 192.168.0.0 netmask 255.255.255.0 {
  8. # --- default gateway
  9. option routers          192.168.0.1;
  10. option subnet-mask      255.255.252.0;
  11. range dynamic-bootp 192.168.0.100 192.168.0.200;
  12. host ns {
  13. hardware ethernet  00:1a:a0:2b:38:81;
  14. fixed-address 192.168.0.101;}
  15. }
复制代码
最后重启所有服务,并关闭iptables和selinux,然后找一台新服务器,接入网线与kickstart服务器在一个交换机或通过中继能获取到IP的网络即可。
  1. service  xinetd  restart
  2. service nfs restart
  3. service   dhcpd restart
复制代码
注*KICKSTART所有配置就此告一段落,真实环境需要注意,新服务器跟kickstart最后独立在一个网络,不要跟办公环境或者服务器机房网络混在一起,如果别的机器以网卡就会把它的系统重装成Linux系统。

京峰Linux教育出品:www.jfedu.net
京峰Linux教育创始人之一,只为有梦想的人!任何事情只要去行动,就会收获结果!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2020-2-22 02:04 , Processed in 0.024051 second(s), 12 queries , Redis On.

快速回复 返回顶部 返回列表