如何实现服务器的自动化安装?
服务器自动化安装
一、背景与
1 背景介绍
随着互联网技术的不断壮大,服务器数量不断增加,从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被重视,自动化批量部署安装一个稳定的系统是实现自动化的第一步。
2 PXE简介
PXE(Pre-boot Execution Environment,预启动执行环境)是一种引导启动的方式,这种协议一般由两部分构成,一部分是服务器端,另一部分是客户端,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装,在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如ftp、http、tftp、dhcp等。
3 自动部署的好处
传统的部署方式如下:
运维人员手工使用Scp、Xftp等方式来传输数据。
手工登录服务器执行git pull、svn update等命令进行更新代码的操作。
开发人员手工编译打包,然后通过内网传输给运维人员。
运维人员通过rz上传的方式上传到目标服务器,然后执行重命名原包、拷贝新包到目标目录,再执行服务应用重启命令完成整个部署过程。
看似非常简单,也不是很麻烦,但是一旦项目多,部署频繁,这种情况下就会大大降低工作效率,自动化部署逐渐成为各中小型企业追求的方向。
二、实验环境配置
1 实验环境准备
实验环境准备 |
1.红帽7主机 |
2.要全图形安装 |
3.配置网络为手动,配置网络可用 |
4.关闭vmware DHCP功能 |
2 配置仓库
root@node2 ~]# mkdir -p /rhel7 [root@node2 ~]# echo mount /dev/cdrom /rhel7 >> /etc/rc.d/rc.local [root@node2 ~]# chmod +x /etc/rc.d/rc.local [root@node2 ~]# mount /dev/cdrom /rhel7 mount: /dev/sr0 is write-protected, mounting read-only [root@node2 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 894M 0 894M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/rhel-root 15G 4.1G 11G 28% / /dev/sda1 1014M 183M 832M 19% /boot tmpfs 182M 28K 182M 1% /run/user/1000 /dev/sr0 4.3G 4.3G 0 100% /rhel7 #rhel7已经挂载上来 tmpfs 182M 0 182M 0% /run/user/0
2.3 Kickstart自动安装脚本制作
Kickstart是一种用于自动化操作系统安装的工具,它通过一个配置文件(即Kickstart脚本),让用户能够预先指定安装过程中的各种详细参数和选项,用户可以在脚本中指定磁盘分区的方式、要安装的软件包、系统的语言和时区设置、网络配置信息,甚至可以设置root用户的密码等,在企业级环境中,如果需要大量部署相同配置的服务器或计算机,Kickstart可以显著提高安装效率,减少人工干预和出错的可能性。
下载kickstart:
[root@node2 ~]# yum install system-config-kickstart -y
启动图形界面:
[root@node2 ~]# system-config-kickstart
照着提示图修改配置文件并保存退出。
三、配置和安装DHCP服务
1 安装DHCP服务
[root@node2 ~]# yum install dhcpd -y
2 配置DHCP服务
编辑/etc/dhcp/dhcpd.conf
文件:
subnet 192.168.14.0 netmask 255.255.255.0 { range 192.168.25.50 192.168.25.100; next-server 192.168.25.107; #指明tftp服务器的地址 filename "pxelinux.0"; #指定PXE文件 }
3 启动DHCP服务
[root@node2 ~]# systemctl start dhcpd [root@node2 ~]# systemctl enable dhcpd
四、配置和安装TFTP服务
1 安装TFTP服务
[root@node2 ~]# yum install tftp-server -y
2 配置TFTP服务
创建/etc/xinetd.d/tftp
文件:
service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
复制PXE引导文件到/var/lib/tftpboot
目录下:
[root@node2 ~]# cp -r /rhel7/Packages/pxe.tar.gz boot/pxelinux.0 /var/lib/tftpboot/
启动TFTP服务:
[root@node2 ~]# systemctl start tftp [root@node2 ~]# systemctl enable tftp
五、配置和安装HTTP服务
1 安装HTTP服务
[root@node2 ~]# yum install httpd -y
2 配置HTTP服务
将ISO镜像挂载到HTTP服务目录下:
[root@node2 ~]# mount /dev/cdrom /var/www/html/
启动HTTP服务:
[root@node2 ~]# systemctl start httpd [root@node2 ~]# systemctl enable httpd
六、验证与测试
1 检查DHCP服务是否正常工作
[root@node2 ~]# dhclient -v
2 检查TFTP服务是否正常工作
[root@node2 ~]# tftp localhost tftp> localhost> tftp> ok mode u mode u ok get pxelinux.0 Received packet: oob=0 sofar=0 timeleft=60000 datasize=516 blocksize=8192 maxblocks=-1 windowsize=65536 microtickdelay=0ms tsize=800 msize=800 blksize=8192 csize=800 rsize=64 insize=64 outsize=64 offset=0 resbloc=0 nread=516 totread=516 hbcount=0 hblocks=0 code=0 retrying=0 rexmt=0 ackedbyother=0 othercount=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount=0 otherhblocks=0 othercode=0 otherretrying=0 otherrexmt=0 otherackedbyother=0 otherhbcount==其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块内容...其他代码块 content ...其他代码块内容...其他代码块 content ...其他代码块 content ...其他代码块 content ...其他代码 block content ...其他代码 block content ...其他代码 block content ...其他代码 block content ...其他代码 block content ...其
各位小伙伴们,我刚刚为大家分享了有关“服务器自动化安装”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
暂无评论,1人围观