ansible-playbook实现Apache批量部署

落花踏尽游何处,笑入胡姬酒肆中。这篇文章主要讲述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。

  1. ?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 检测环节?
【ansible-playbook实现Apache批量部署】    在完成上一步的操作后,利用curl命令分别去查看websrvs分组中的3台主机web网页,均能显示出对应的ip,也能通过浏览器正常查看。






  1. ?编译安装方式部署?
    编译安装方式也是要先在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,同样能在浏览器中查看??(如下图)??。




    推荐阅读