PXE自动化安装linux操作系统
对于单台主机可以用光盘来安装系统,
对于很多台主机,可以使用自动化安装,安装自动化(kickstart),启动自动化,
完成后要安装各种服务,各种配置文件定制,如何快速部署,包括运行过程中某台主机出现故障,换下来后如何将这台主机快速安装上对应的软件等等。
运维工作稳定压倒一切,安装软件不能盲目追新,只要能用,能满足要求就是好的。
硬件标准化:比如服务器最好同一批次,同一型号,好管理
操作系统标准化:安装的操作系统最好都是统一的,便于配置管理
程序版本标准化:比如httpd-2.4,所有的服务器都是这个软件版本
配置文件标准化:配置文件的位置,命名,都要统一,标准化,便于自动化统一操作
程序发布:
人工智能(手动发布)
通过脚本发布
发布程序(运维系统)
要求:发布的时候
1、不能影响用户体验;
2、系统不能停机;
3、不能导致系统故障或造成系统完全不可用;
灰度模型:
主机:一次发布一部分主机,测试没有问题,再发布一部分
用户:设定条件,根据用户来发布,免费的用户先使用,没有问题再让付费用户使用
发布路径:
/webapps/data/waimai #软件所在的目录,设置软链接链接到下面的1.2版本,如果有问题,将软链接再重新指定为1.1版本的软件,查找1.2版本的问题,快速滚回。 /webapps/data/waimai-1.1 #1.1版本软件目录 /webapps/data/waimai-1.2 #1.2软件所在的目录 /webapps/data/waimai-1.3 /webapps/data/waimai-1.4
在调度器上下线一批主机(标记为维护模式)–> 关闭服务 –> 部署新版本 –> 启动服务 –> 在调度器启用这一批主机
BootStraping:系统提供(OS Provision),系统安装和部署
服务器物理网卡内建有一个程序,这个程序可以作为dhcp服务器的客户端,自动获取一个地址,同时dhcp服务器可以告诉这台主机的网卡去另一个主机(TFTP)请求一个程序,或者叫做bootloader。
预启动执行环境(PXE)指的是那些使得IBM兼容计算机,不需要硬盘或是启动软盘就能启动的方法
pxe –> preboot excution environment, Intel
cobbler –> Cobbler is a network install server. Cobbler supports PXE, ISO virtualized installs, and re-installing existing Linux machines,这个貌似更好用,有空测试下
pxe:所需要的服务,以及文件
dhcp service 此服务为主机提供(ip/nemask, gw, dns; filename, next-server) tftp server 此服务为主机提供(bootloader, kernel, initrd) yum repository 可以用的协议(ftp, http, https, nfs)
kickstart(系统开始安装的时候需要点很多的下一步来设置具体的参数,kickstart可以将所有需要的配置都事先放到一个配置文件中,调用这个文件就可以实现完全的自动化安装)
BootStraping(OS install):需要网卡支持,有这个功能,现在基本都有这种功能。
客户端网卡首先通过dhcp获得一个ip地址,包括掩码,以及文件服务器名称,ip;
客户端的网卡中也有tftp协议的驱动,可以自动和tftp服务器通信,网卡向文件服务器(tftp)加载bootloader,显示给用户一个菜单,当用户选择后,再去加载内核(专用于pxe自动化安装的内核),init程序,内核启动起来后,(anaconda)根据配置(kickstart)去yun仓库所在的服务器去安装所需要的rpm包。
流程说明
对于一个新建的主机,所在的网络里面要有dhcp服务器,网卡先去dhcp服务器(192.168.170.50:67)端口请求一个ip地址,以及tftp服务器的地址(192.168.170.50),bootloader文件名
然后主机A根据指定的地址去TFTP服务器(192.168.170.50:69)去下载所需要的系统安装选项文件,当用户选择要安装的系统后,网卡去TFTP请求所需要的简易的内核镜像以及其他的文件,开始安装
如果系统安装选项中没有自动化安装配置文件,会根据选项配置文件中指定的anconda文件的路径(192.168.170.50)去下载系统镜像进行手动安装,这时就看到了安装的界面,然后选选选,,,
如果系统安装选项中有自动化安装配置文件,则根据指定的路径(192.168.170.50)去下载kickstart文件,再根据kickstart文件中指定的系统镜像路径下载系统镜像进行自动化安装
这里的dhcp服务器和tftp服务器以及ftp服务器(或者http服务器)都是一台主机,为了避免外界的干扰,选择的是虚拟机内部的虚拟网络来进行通信,并关闭该网络中的dhcp服务器
注意:只有要装系统的时候,才将此服务打开,平时关闭此服务。并且开机自动安装有风险,最好将倒计时去掉,默认选项是从本地磁盘开始安装,需要人工确认后才能进行自动化安装。不然某一台有人开机后去个卫生间,回来就是全新的系统,文件都被删除了,要注意!!!
dhcp服务配置
具体的安装见dhcp相关的博文,新建一个主机,并将这个主机的mac地址填写到dhcp服务的配置文件中,只要是该mac地址请求动态ip地址,分配的ip地址是固定的:00:50:56:22:DD:D0
host abc { hardware ethernet 00:50:56:22:DD:D0; fixed-address 192.168.170.55; #固定ip地址为55 filename "pxelinux.0"; #从tftpd服务器下载的文件名 server-name "192.168.170.50"; #指定tftpd服务器地址 }
配置好后启动新主机,查看情况
配置tftp服务器
安装服务端和客户端,客户端用来测试是否可以正常下载文件,监听端口:udp:69
[root@master ~]#yum info tftp-server [root@master ~]#yi tftp-server tftp [root@master ~]#rpm -ql tftp-server /etc/xinetd.d/tftp /usr/sbin/in.tftpd #修改配置文件 [root@master ~]#cat /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /data/tftpboot #修改这里的文件目录,便于统一管理,原来的目录:/var/lib/tftpboot disable = no #将此处的yes改为no,表示启用这个服务,这样端口才会监听 per_source = 11 cps = 100 2 flags = IPv4 } [root@master ~]#mkdir /data/tftpboot #创建root文件路径 [root@master ~]#cp /etc/fstab /data/tftpboot/ #并复制测试文件到该目录 #下面是两种系统不同启动方式 CentOS 7: systemctl start xinetd CentOS 6: chkconfig tftp on service xinetd restart [root@master ~]#service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] [root@master /etc/xinetd.d]#ss -unlp State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 *:67 *:* users:(("dhcpd",1379,7)) UNCONN 0 0 *:68 *:* users:(("dhclient",1285,6)) UNCONN 0 0 *:69 *:* users:(("xinetd",1684,5)) #端口成功监听 #测试可以正常获取文件 [root@master ~]#tftp 192.168.170.50 tftp> get fstab tftp> quit [root@master ~]#ls fstab 如果测试不行,将客户端的防火墙关闭再试,服务端防火墙也要放行 经过测试,tftp服务和dhcp服务必须要和客户机在同一个网段,跨网段不行。都是udp广播服务
配置tftp需要的文件
dhcp服务器给新主机配置ip的时候会说明tftp服务器地址,这里就是提供那个文件的服务器配置
[root@master ~]#yum info syslinux syslinux-nonlinux [root@master ~]#yum install -y syslinux syslinux-nonlinux [root@master ~]#rpm -ql syslinux-nonlinux | grep pxelinux /usr/share/syslinux/gpxelinux.0 /usr/share/syslinux/gpxelinuxk.0 /usr/share/syslinux/pxelinux.0 [root@master ~]#cp /usr/share/syslinux/pxelinux.0 /data/tftpboot/ #bios不同,文件不同
关闭防火墙,重置新主机,就可以看到加载到这个文件了
然后继续配置需要的文件,将centos6.9系统镜像文件挂载到:192.168.170.50机器的:/mnt目录下面,并将镜像里面的所有文件复制到:/data/ftp/centos6.9目录下面,然后这个镜像文件就可以移除了
centos6.9镜像下载:https://mirrors.aliyun.com/centos/6.9/isos/x86_64/ 应该下载:CentOS-6.9-x86_64-bin-DVD1to2.torrent 因为里面的rpm比较全,wget包需要安装上去,才可以使用wget命令下载系统初始化脚本文件
http://mirrors.aliyun.com/centos/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso
将dvd1挂载,
[root@master ~]#mount /dev/cdrom /mnt mount: block device /dev/sr0 is write-protected, mounting read-only [root@master ~]#cd /mnt/ [root@master /mnt]#ls CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6 [root@master /mnt]#mkdir -p /data/ftp/centos6.9 [root@master /mnt]#cp -r * /data/ftp/centos6.9 [root@master /data/ftp/centos6.9]#ls CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6 EFI Packages RPM-GPG-KEY-CentOS-Security-6 EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6 GPL repodata TRANS.TBL images RPM-GPG-KEY-CentOS-6
复制其他需要的文件
[root@master /data/ftp/centos6.9/images/pxeboot]#cp vmlinuz /data/tftpboot/ [root@master /data/ftp/centos6.9/images/pxeboot]#cp initrd.img /data/tftpboot/ [root@master /data/ftp/centos6.9/images/pxeboot]#cd [root@master ~]#cp /usr/share/syslinux/{chain.c32,memdisk,menu.c32,mboot.c32} /data/tftpboot/ [root@master /data/tftpboot]#ls chain.c32 fstab initrd.img mboot.c32 memdisk menu.c32 pxelinux.0 vmlinuz [root@master /data/tftpboot]#mkdir pxelinux.cfg [root@master /data/tftpboot]#cd pxelinux.cfg/ [root@master /data/tftpboot/pxelinux.cfg]#cat default #编写启动界面选择启动项 default menu.c32 prompt 5 timeout 200 #倒计时20秒 MENU TITLE CentOS PXE LABEL linux MENU LABEL Install CentOS 6.9 x86_64 KERNEL vmlinuz APPEND initrd=initrd.img inst.repo=http://192.168.170.50/centos6.9/
指明anaconda文件所在的目录,当内核启动起来以后,可以从上面的文件引导加载真正的操作系统文件。
安装ftp服务
[root@master ~]#rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/rc.d/init.d/vsftpd /etc/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_conf_migrate.sh /usr/sbin/vsftpd
修改配置文件,将匿名用户家目录更改为:/data/ftp目录
[root@master /etc/vsftpd]#cat vsftpd.conf anonymous_enable=YES anon_root=/data/ftp [root@master /etc/vsftpd]#service vsftpd restart Shutting down vsftpd: [FAILED] Starting vsftpd for vsftpd: [ OK ] [root@master ~]#ss -tnlp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 32 *:21 *:* users:(("vsftpd",2009,3))
通过网页访问正常,以后可以继续添加其他系统的镜像文件到这里,多种安装系统的选择,这里的路径和上面tftpd服务器的配置文件相对应
然后启动新主机
接下来选择ok, ok, 选择url,ok ,将系统镜像的地址填为上面的ftp的地址,这里也可以使用http服务器地址
然后就进入手动安装界面,下一步,下一步,,,
为自动化安装配置kickstart文件
这样新的机器安装,只要打开计算机,就不用再人工干预了
在ftp上配置需要的kickstart文件,这里可以是ftp服务器,也可以是http服务器,http方式经过测试可以正常使用,只要将ftp协议换成http协议就可以,下面的测试使用http方式
默认情况下:永远都要选择 Core 和 Base 组,所以并不需要在 %packages 部分指定它们。
[root@master ~]#grub-crypt Password: redhat Retype password: $6$3Urxi19IkzNn9wO7$GX5UPKMbjTjOMLfFkkgpU02FNGS6pVPLW/Xk9LPXXOEFeij/KSyKuey.prH1AMk9DV3hnctrVLeAn6GPhgwLD1 [root@master /data/ftp]#mkdir kickstart [root@master /data/ftp]#mkdir system_init [root@master /data/ftp]#ls centos6.9 kickstart system_init [root@master /data/ftp]#cd kickstart/ [root@master /data/ftp/kickstart]#cat centos6.9.cfg # Kickstart Configurator for CentOS 6.9 install # Use network installation url --url="http://192.168.170.50/centos6.9" # Use text mode install text # System language lang en_US.UTF-8 # Keyboard layouts keyboard us # Use network installation network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6 # System timezone timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 # Root password user:root passwd:redhat rootpw --iscrypted $6$3Urxi19IkzNn9wO7$GX5UPKMbjTjOMLfFkkgpU02FNGS6pVPLW/Xk9LPXXOEFeij/KSyKuey.prH1AMk9DV3hnctrVLeAn6GPhgwLD1 ignoredisk --only-use=sda # Clear the Master Boot Record zerombr # System bootloader configuration bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # Partition clearing information clearpart --all --initlabel part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --asprimary --size=20480 part /data --fstype=ext4 --grow --size=200 firstboot --disable # SELinux configuration selinux --disabled firewall --ssh logging --level=info # Reboot after installation reboot %packages %end
将上面的配置文件路径添加到tftpd目录的配置文件中
[root@master /data/tftpboot/pxelinux.cfg]#cat default default menu.c32 prompt 5 timeout 200 MENU TITLE CentOS PXE label local menu default #默认选项 menu label Boot from local drive localboot 0xffff label linux menu label Install CentOS 6.9 x86_64 kernel vmlinuz append initrd=initrd.img inst.repo=http://192.168.170.50/centos6.9/ label linux_auto menu label Auto Install CentOS 6.9 x86_64 kernel vmlinuz # append initrd=initrd.img ks=http://192.168.170.50/kickstart/centos6.9.cfg append initrd=initrd.img ks=http://192.168.170.50/kickstart/centos6.9.cfg ksdevice=eth0 # ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。
不然会出现下面的情况
然后重置新主机
选择下面的自动安装
自动安装就完成了!!!
设置初始化脚本
还可以更自动化一些
1、本来说是在kickstart文件的%post脚本中执行初始化脚本,尝试几次都有错误,然后决定在kickstart的%post里面只设置几个echo到/etc/rc.d/rc.local里面,然后重启新主机,真正的初始化任务等新主机重启后,所有的服务都执行完成,然后执行/etc/rc.d/rc.local里面的初始化脚本,执行完成后,将这里面的语句删除,这样就可以愉快的玩耍了
2、这里的初始化脚本是gitlab上克隆的最新的代码仓库,是一个目录,每次装机的时候,里面的内容也需要根据需求修改,这个账号是只读账号,只可以从gitlab拉取代码
3、当初始化脚本有问题,修改后,提交到gitlab,在192.168.170.50机器上面的初始化脚本目录里面执行
git reset --hard && git pull
来获取最新修改后的代码,然后修改里面的配置文件为需要的,进行装机工作
4、这里必须要sleep 60秒,centos6还好,rc.local是最后执行。但是centos7是并行执行,这里需要等待网卡启动,dhcp启动,获取ip地址后才能执行,不然网络不通
5、这里的wget是递归下载目录,而不是下载压缩包,因为打压缩包麻烦,这种更简单。system_init_6/后面的斜杠不能省略,不然下载的就不是目录了
6、文件:/etc/rc.d/rc.local文件里每条语句后面都要有“#init”注释,这样,最后的sed语句会将其删除,这样脚本只会执行一次
7、日志可以在/var/log/message里面查到
8、https://www.cnblogs.com/lidp/archive/2010/03/02/1696447.html
9、其实可以直接在后面操作:下载,执行安装脚本,而不用放到开机启动里面,更省事,直接
[root@master /data/ftp]#ls centos6.9 kickstart system_init [root@master /data/ftp]#cd kickstart/ [root@master /data/ftp/kickstart]#ls centos6.9.cfg [root@master /data/ftp/kickstart]#cat centos6.9.cfg ... ... ... # Reboot after installation reboot %packages %end %post --log=/root/ks-post.log cat >> /etc/rc.d/rc.local <<EOF sleep 60 #init /usr/bin/wget -c -r -np -k -L -p -q http://192.168.170.50/system_init/system_init_6/ -P /root #init sh /root/192.168.170.50/system_init/system_init_6/system_init.sh -a #init sed -i '/#init/d' /etc/rc.d/rc.local EOF chmod +x /etc/rc.d/rc.local %end
下面是具体的执行过程,重启后,有进度条的时候,按esc键,可以看到具体的执行过程
安装后的文件都符合预期
[root@master ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 20G 0 part / ├─sda3 8:3 0 1G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 28.8G 0 part /data sdb 8:16 0 20G 0 disk [root@master ~]#df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 20G 1006M 18G 6% / tmpfs tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 ext4 190M 35M 146M 19% /boot /dev/sda5 ext4 29G 44M 27G 1% /data
说明
至此,系统一键安装就完成了,如果公司新到了一批服务器,装好服务器后,将每天机器的启动设置为网络启动,调整安装界面默认安装方式,就可以自动安装
为了速度,建议内网设置yum源
新主机唯一确定的是mac地址,需要设置主机的ip,只需将此主机对应的mac地址填入到dhcp服务器上面,该主机获取的ip地址即为特定的ip地址,初始化脚本会将此ip地址写入到配置文件中,设置为永久有效
安照此方法,一上午可以部署100台服务器都可以做到
后续会将saltstack服务添加到初始化脚本文件中,批量控制
小知识点说明
让CentOS 6显示详细启动信息,不显示进度条
一些CentOS等Linux系统启动后可能会出现读进度条等待进入系统的过程,出现错误不易查看,我们可以将它恢复到显示详细启动过程模式。
使用root用户修改 /boot/grub/grub.conf 文件。
sed -i 's#rhgb quiet##g' /boot/grub/grub.conf
其中"rhgb"表示"redhat graphics boot",就是图形进度条模式。而"quiet"表示在启动过程中只显示重要启动信息,类似硬件自检之类的消息不会显示,可以有选择地选用。
下面是思维导图
centos7安装
centos7安装的时候和上面的相同,只是下面的文件不同,前面引导所需要的文件initrd这些文件需要从centos7系统上面找到才可以,centos6的不可以,下面文件是centos7的
yum -y install syslinux cp -a /usr/share/syslinux/{menu.c32,vesamenu.c32,pxelinux.0} /临时目录,然后将这个目录下的文件复制到tftp服务器的/data/tftpboot目录 下面是tftp服务器 mkdir /data/tftpboot/pxelinux.cfg ls -l /data/tftpboot/ -rw-r--r-- 1 root root 61796 Oct 16 2014 menu.c32 # 提供图形化菜单功能 -rw-r--r-- 1 root root 26759 Oct 16 2014 pxelinux.0 # boot loader文件 drwxr-xr-x 2 root root 4096 Feb 24 20:02 pxelinux.cfg # 开机的菜单设定在这里 -rw-r--r-- 1 root root 163728 Oct 16 2014 vesamenu.c32 # 也是提供图形化菜单功能,但界面和menu.c32不同
要安装Linux系统,必须提供Linux内核文件和initrd文件,这里以64位版本的CentOS 7.2为例。从安装镜像中获取内核相关文件,首先得要挂载镜像到/mnt目录
这里使用CentOS-7-x86_64-DVD-1511.iso镜像文件,不可以使用最小安装版镜像,有问题,其他高版本的系统镜像需要测试,不一定可以用
[root@master ~]#mount /dev/cdrom /mnt cp /mnt/isolinux/{vmlinuz,initrd.img} /data/tftpboot [root@master /mnt]#mkdir -p /data/ftp/centos7.2 [root@master /mnt]#cp -r * /data/ftp/centos7.2
其实仅需要vmlinuz和initrd.img两个文件即可,不过这里还将isolinux.cfg这个文件拷贝出来了,这个文件里提供了开机选项,可以以它作为修改开机选项和菜单的模板,这样修改起来比较容易,也更便捷!
在dhcp中配置mac地址
下面是引导文件
[root@master /data/tftpboot/pxelinux.cfg]#cat default default menu.c32 prompt 5 timeout 200 #倒计时20秒 MENU TITLE CentOS PXE label local menu default menu label Boot from local drive localboot 0xffff label linux_7.2 menu label Install CentOS 7.2 x86_64 kernel vmlinuz append initrd=initrd.img inst.repo=http://192.168.170.50/centos7.2/ label linux_7.2_auto menu label Auto Install CentOS 7.2 x86_64 kernel vmlinuz append initrd=initrd.img inst.repo=http://192.168.170.50/centos7.2 inst.ks=http://192.168.170.50/kickstart/centos7.2.cfg quiet ksdevice=em1
也可以修改为下面的
append initrd=initrd.img inst.repo=http://192.168.170.50/centos7.2 inst.ks=http://192.168.170.50/kickstart/centos7.2.cfg quiet net.ifnames=0 biosdevname=0
其中"net.ifnames=0 biosdevname=0"这两个内核启动参数是为了让网卡名称为ethN,而不是默认的eno16777728这样的随机名称。
这个根据实际情况来,也可以使用默认的,看具体的机器,如果修改为ethx的话,kvm机器网络初始化会有问题,慎重
下面是centos7的cfg文件,磁盘空间要大于50G,不然需要修改下面的配置文件里面的磁盘大小
还有不同的地方,这里需要一个单独的分区,必须要加,具体查看下面:part biosboot –fstype=biosboot –size=1 参考https://blog.csdn.net/signmem/article/details/78810678
[root@master ~]#grub-crypt Password: redhat Retype password: $6$3Urxi19IkzNn9wO7$GX5UPKMbjTjOMLfFkkgpU02FNGS6pVPLW/Xk9LPXXOEFeij/KSyKuey.prH1AMk9DV3hnctrVLeAn6GPhgwLD1 [root@master /data/ftp/kickstart]#cat centos7.2.cfg # cat /var/www/html/ks.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # new format: keyboard --vckeymap=us --xlayouts='us' #after install reboot # System authorization information auth --enableshadow --passalgo=sha512 # Root password user:root passwd:redhat rootpw --iscrypted $6$3Urxi19IkzNn9wO7$GX5UPKMbjTjOMLfFkkgpU02FNGS6pVPLW/Xk9LPXXOEFeij/KSyKuey.prH1AMk9DV3hnctrVLeAn6GPhgwLD1 # Use text mode install text #只操作sda盘 ignoredisk --only-use=sda # System timezone timezone Asia/Shanghai --isUtc # Use network installation url --url="http://192.168.170.50/centos7.2" #最后面不需要加 / # System language lang en_US.UTF-8 # Firewall configuration centos7的firewall不是iptables服务,这里不开启 firewall --disabled # Network information,这里通过网卡来区分从哪个网卡安装,也可以通过mac地址来区分 network --bootproto=dhcp --device=em1 --onboot=yes --noipv6 --hostname=master # SELinux configuration selinux --disabled # System bootloader configuration # 新硬盘需要创建mbr bootloader --location=mbr --boot-drive=sda --append="crashkernel=auto rhgb quiet" # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part biosboot --fstype=biosboot --size=1 part / --asprimary --fstype="ext4" --size=20480 part /boot --asprimary --fstype="ext4" --size=512 part swap --asprimary --fstype="swap" --size=2048 part /data --asprimary --fstype="ext4" --grow --size=1 # 如果是要LVM分区,则考虑以下分区 # part /boot --fstype ext4 --size=100 # part swap --fstype=swap --size=2048 # part pv26 --size=100 --grow # volgroup VG00 --pesize=32768 pv26 # logvol / --fstype ext4 --name=LVroot --vgname=VG00 --size=29984 # logvol /data --fstype ext4 --name=LVdata --vgname=VG00 --size=100 --grow %packages @core @Base %end
经过测试,centos7必须要指定:@core @Base才会安装这两个包组,centos6不用指定就可以把这两个包组都安装上,要注意,wget包在@Base包组中
自动安装就完成了!!!
初始化centos7脚本
还可以更自动化一些
具体的介绍看上面centos6的
[root@master /data/ftp]#ls centos6.9 centos7.2 kickstart system_init [root@master /data/ftp]#cd kickstart/ [root@master /data/ftp/kickstart]#ls centos7.2.cfg centos6.9.cfg [root@master /data/ftp/kickstart]#cat centos7.2.cfg ... ... ... # Reboot after installation reboot %packages @core @Base %end %post --log=/root/ks-post.log cat >> /etc/rc.d/rc.local <<EOF sleep 60 #init /usr/bin/wget -c -r -np -k -L -p -q http://192.168.170.50/system_init/system_init_7/ -P /root #init sh /root/192.168.170.50/system_init/system_init/system_init_7/system_init.sh -a #init sed -i '/#init/d' /etc/rc.d/rc.local EOF chmod +x /etc/rc.d/rc.local %end
在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行命令赋予其可执行权限
下面是具体的执行过程,重启后,有进度条的时候,按esc键,可以看到具体的执行过程
如果安装出现错误,可能的原因是环境变量引起的,,,
–
下面是ftp文件列表,注意防火墙等其他因素
[root@master /data/ftp]#tree -L 2 . ├── centos6.9 │ ├── CentOS_BuildTag │ ├── EFI │ ├── EULA │ ├── GPL │ ├── images │ ├── isolinux │ ├── Packages │ ├── RELEASE-NOTES-en-US.html │ ├── repodata │ ├── RPM-GPG-KEY-CentOS-6 │ ├── RPM-GPG-KEY-CentOS-Debug-6 │ ├── RPM-GPG-KEY-CentOS-Security-6 │ ├── RPM-GPG-KEY-CentOS-Testing-6 │ └── TRANS.TBL ├── centos7.2 │ ├── CentOS_BuildTag │ ├── EFI │ ├── EULA │ ├── GPL │ ├── images │ ├── isolinux │ ├── LiveOS │ ├── Packages │ ├── repodata │ ├── RPM-GPG-KEY-CentOS-7 │ ├── RPM-GPG-KEY-CentOS-Testing-7 │ └── TRANS.TBL ├── kickstart │ ├── centos6.9.cfg │ └── centos7.2.cfg └── system_init ├── system_init_6... └── system_init_7... 16 directories, 18 files
优化
12、为了便于一台机器可以安装多个服务,这里可以用软链,用哪个服务软链哪个目录,互不干扰
ll /data total 24 drwxr-xr-x 6 root root 4096 Jul 23 06:09 ftp lrwxrwxrwx 1 root root 13 Oct 18 14:45 tftpboot -> tftpboot_esxi_5.5/ drwxr-xr-x 5 root root 4096 Oct 18 14:46 tftpboot_esxi_5.5 drwxr-xr-x 5 root root 4096 Oct 18 13:43 tftpboot_esxi_6.5 drwxr-xr-x 3 root root 4096 Jul 23 06:17 tftpboot_centos_6.9 drwxr-xr-x 3 root root 4096 Jul 23 09:18 tftpboot_centos_7.2
参考文档:http://www.zyops.com/autoinstall-kickstart
参考文档:http://www.cnblogs.com/f-ck-need-u/p/7342919.html
参考文档:http://www.cnblogs.com/f-ck-need-u/p/7342022.html
–
–
–
评论前必须登录!
注册