ansible-playbook实现Apache批量部署
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible-playbook实现Apache批量部署相关的知识,希望对你有一定的参考价值。
Apache有着提供http协议服务、多个虚拟主机、CGI、反向代理、负载均衡、路径别名、丰富的用户认证机制和支持第三方模块等功能。在CentOS/Ubuntu系统中,我们可以直接下载httpd/apache2包,里面会带有Apache服务,例如笔者在CentOS8通过yum下载的httpd包,查看Apache版本已经是2.4.37,算是比较新的(如下图)。
现阶段来看,部分CentOS版本中直接安装的Apache已经够用,但随着Apache新版本的推出,一些老版本的CentOS通过yum安装可能就不太能满足需求,因此本次实验笔者将通过yum和编译安装两种方式在CentOS主机上演示如何利用ansible-playbook实现Apache的批量部署,并对不同主机提供以各自IP地址为内容的index.html。
- yum方式部署
与上一篇实验相同,笔者准备了5台虚拟主机,ip分别为10.0.0.152-156,其中10.0.0.152的主机为ansible主控制端,取名为ansible;ip为10.0.0.154-156的3台虚拟主机作为需要部署Apache服务的被控制端,分别取名web1、web2和web3。
1.1 主控制端配置
1.1.1 下载ansible
主控制端ansible主机下载ansible。
1.1.2 基于key验证
笔者这边还是用脚本来做基于key验证的,脚本内容可在上一篇查看。
1.1.3 设置主机清单
打开/etc/ansible/hosts文件添加主机清单,根据此次实验的规划,笔者将10.0.0.154-156的3台主机放在websrvs分组中。
1.1.4 检测是否可达被控制端
在完成基于key验证和设置主机清单的基础上检测ansible主控制端是否可达被控端的主机。
1.2 创建playbook剧本
因是直接通过yum来安装httpd包进行Apache的批量部署,所有剧本会比较简单,设置好对应的目标主机分组、软件名称及状态等即可完成。将不同主机的ip显示在index.html部分,因笔者直接执行hostname -I会有两个地址,所以需利用awk来取值。
1.3 运行playbook剧本
在运行playbook剧本之前,先查看一下是否有语法错误,也可以使用-C选项模拟运行一遍,在确认可行的情况下运行playbook剧本。
1.4 检测环节
在完成上一步的操作后,利用curl命令分别去查看websrvs分组中的3台主机web网页,均能显示出对应的ip,也能通过浏览器正常查看。
- 编译安装方式部署
编译安装方式也是要先在ansible主控制端下载ansible服务,同时做好与被控制端主机间的基于key验证,上一篇和本篇开头都有讲到这两部分,这里就不多做演示。
2.1 下载压缩包
Apache的源码包可通过官网(下载选择页面:https://dlcdn.apache.org//httpd/)进行下载,目前已更新到2.4.53版本,笔者就用此版本来演示。
2.2 创建service文件
service文件规定了服务的启动命令和启动类型等,编译安装形成的service文件并不符合我们日常使用httpd服务的习惯,因此可以找一个已安装好httpd服务的主机,根据/usr/lib/systemd/system/目录下的httpd.service文件作为参考来编写,在后面的yaml文件中将此文件拷贝到被控制端主机的对应目录下(如下图)。
2.3 创建playbook剧本
剧本中需设定好被控制端的主机ip或分组;remote_user设为root避免出现权限问题;由于是编译安装,搜集信息的话会影响执行速度,gather_facts设为no关闭掉。
tasks部分从上到下分别为:被控制端安装依赖包、创建压缩包解压路径、解压Apache压缩包到被控制端目录、创建apache组、创建apache用户、进入解压包目录后运行configure文件指定安装路径和配置文件路径、编译、安装、创建软链接、修改默认的Apache服务用户、生成PATH变量、拷贝创建的service文件到被控制端对应目录、修改网页内容、启动服务(如下图)。
2.4 运行playbook剧本
在执行剧本之前,先检查一下是否有语法问题,建议先用-C选项做一下试运行,或者找一台主机先走一遍看能否走通,确认有效后再批量执行,语法没问题不代表剧本能走通。
2.5 检测环节
playbook剧本能走通的情况下,使用curl命令去查看两台被控制端的web页面,均能显示对应的ip,同样能在浏览器中查看(如下图)。
以上是关于ansible-playbook实现Apache批量部署的主要内容,如果未能解决你的问题,请参考以下文章