ansible-playbook实现apache批量部署

JohnnyFang      2022-03-27     548

关键词:

    Apache有着提供http协议服务、多个虚拟主机、CGI、反向代理、负载均衡、路径别名、丰富的用户认证机制和支持第三方模块等功能。在CentOS/Ubuntu系统中,我们可以直接下载httpd/apache2包,里面会带有Apache服务,例如笔者在CentOS8通过yum下载的httpd包,查看Apache版本已经是2.4.37,算是比较新的​(如下图)​。

ansible-playbook实现Apache批量部署_编译安装

    现阶段来看,部分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。

ansible-playbook实现Apache批量部署_centos_02

1.1.2 基于key验证

    笔者这边还是用脚本来做基于key验证的,脚本内容可在上一篇查看。

ansible-playbook实现Apache批量部署_centos_03

ansible-playbook实现Apache批量部署_centos_04

1.1.3 设置主机清单

    打开/etc/ansible/hosts文件添加主机清单,根据此次实验的规划,笔者将10.0.0.154-156的3台主机放在websrvs分组中。

ansible-playbook实现Apache批量部署_centos_05

1.1.4 检测是否可达被控制端

    在完成基于key验证和设置主机清单的基础上检测ansible主控制端是否可达被控端的主机。

ansible-playbook实现Apache批量部署_centos_06

1.2 创建playbook剧本

    因是直接通过yum来安装httpd包进行Apache的批量部署,所有剧本会比较简单,设置好对应的目标主机分组、软件名称及状态等即可完成。将不同主机的ip显示在index.html部分,因笔者直接执行hostname -I会有两个地址,所以需利用awk来取值。

ansible-playbook实现Apache批量部署_编译安装_07

1.3 运行playbook剧本

    在运行playbook剧本之前,先查看一下是否有语法错误,也可以使用-C选项模拟运行一遍,在确认可行的情况下运行playbook剧本。

ansible-playbook实现Apache批量部署_apache_08

1.4 检测环节

    在完成上一步的操作后,利用curl命令分别去查看websrvs分组中的3台主机web网页,均能显示出对应的ip,也能通过浏览器正常查看。

ansible-playbook实现Apache批量部署_centos_09

ansible-playbook实现Apache批量部署_编译安装_10

ansible-playbook实现Apache批量部署_apache_11

ansible-playbook实现Apache批量部署_apache_12


  1. 编译安装方式部署

    编译安装方式也是要先在ansible主控制端下载ansible服务,同时做好与被控制端主机间的基于key验证,上一篇和本篇开头都有讲到这两部分,这里就不多做演示。

2.1 下载压缩包

    Apache的源码包可通过官网​(下载选择页面:https://dlcdn.apache.org//httpd/)​进行下载,目前已更新到2.4.53版本,笔者就用此版本来演示。

ansible-playbook实现Apache批量部署_apache_13

ansible-playbook实现Apache批量部署_编译安装_14

2.2 创建service文件

    service文件规定了服务的启动命令和启动类型等,编译安装形成的service文件并不符合我们日常使用httpd服务的习惯,因此可以找一个已安装好httpd服务的主机,根据/usr/lib/systemd/system/目录下的httpd.service文件作为参考来编写,在后面的yaml文件中将此文件拷贝到被控制端主机的对应目录下​(如下图)​。

ansible-playbook实现Apache批量部署_centos_15

2.3 创建playbook剧本

    剧本中需设定好被控制端的主机ip或分组;remote_user设为root避免出现权限问题;由于是编译安装,搜集信息的话会影响执行速度,gather_facts设为no关闭掉。

    tasks部分从上到下分别为:被控制端安装依赖包、创建压缩包解压路径、解压Apache压缩包到被控制端目录、创建apache组、创建apache用户、进入解压包目录后​运行configure文件指定安装路径和配置文件路径、编译、安装、创建软链接、修改默认的Apache服务用户、生成PATH变量、拷贝创建的service文件到被控制端对应目录、修改网页内容、启动服务​(如下图)​。

ansible-playbook实现Apache批量部署_编译安装_16

ansible-playbook实现Apache批量部署_centos_17

2.4 运行playbook剧本

    在执行剧本之前,先检查一下是否有语法问题,建议先用-C选项做一下试运行,或者找一台主机先走一遍看能否走通,确认有效后再批量执行,语法没问题不代表剧本能走通。

ansible-playbook实现Apache批量部署_apache_18

ansible-playbook实现Apache批量部署_centos_19

ansible-playbook实现Apache批量部署_编译安装_20

2.5 检测环节

    playbook剧本能走通的情况下,使用curl命令去查看两台被控制端的web页面,均能显示对应的ip,同样能在浏览器中查看​(如下图)​。

ansible-playbook实现Apache批量部署_centos_21

ansible-playbook实现Apache批量部署_apache_22

ansible-playbook实现Apache批量部署_centos_23

ansible-playbook一键化部署apache服务

原创chaos_oper最后发布于2019-06-1321:31:44阅读数463收藏展开Playbook(任务剧本)playbook是简单易用的自动化语言编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式的*YML文件playbook是一个非常简单的配置管理和多... 查看详情

使用ansible-playbook实现自动打包上线

-hosts:ceshi remote_user:root tasks: -name:"192.168.55.14主机打包cms线上环境的war包"  script:/data/script/build_xianshang_cms.sh -name:"从192.168.55.14拷贝war包到jenkins上"  fe 查看详情

ansible-playbook之修改ssh端口和limits参数控制

一、描述  拿到一批机器,需要做首先是修改ssh端口,防火墙配置,以及limits.conf控制文件描述符,进程数,栈大小等。二、剧本如下:---    - hosts: "{{ host }}"      remote_u... 查看详情

ansible-playbook实现mysql的二进制部署

  在第十周作业的《通过编译、二进制安装MySQL5.7》一篇中,笔者演示了如何利用二进制来完成指定版本的MySQL安装,但此种方法仅适用于单台主机,如果是企业中,要安装MySQL的主机数量很多,则费时费力。借助于运维自... 查看详情

ansible-playbook自动化安装keepalived实现nginx服务双机热备自动化配置

脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下:Keepalived自动化安装;keepalived_vrid配置,自动根据vip获取最后一段作为vrid,确保同一网段不会出现vrid冲突导致HA切换失败的问题;自动配置Keepalived;HA检... 查看详情

关于 Apache Storm,Trident 拓扑中的一批是不是可以在多个 worker 上并行处理?

】关于ApacheStorm,Trident拓扑中的一批是不是可以在多个worker上并行处理?【英文标题】:AboutApachestorm,canonebatchinTridenttopologybeprocessedonseveralworkersparalle?关于ApacheStorm,Trident拓扑中的一批是否可以在多个worker上并行处理?【发布时... 查看详情

ansible-playbook

playbook: 通过事先编写好的playbook文件实现批量管理操作 ===============ansible的任务集注意:1.yml中不可使用tabs键2.缩进对齐,严格控制缩进3.#表注释4.---开头 playbook文件 :是ansible主机用于配置,部署和管理托管主机... 查看详情

ansible-playbook批量添加zabbix监控项目同步配置信息

前言 在上一篇教程中我们已经实现了使用ansible-playbook批量在远程主机上部署zabbix客户端并正常运行,现在我们再次通过ansible-playbook给客户端主机批量增加zabbix监控项目配置(创建监控项目示例:自动发现远程主机监听的TCP... 查看详情

ansible-playbook(代码片段)

...使用同样的缩进级别作为同一列表。who谁what事情how动作ansible-playbook命令格式ansible-playbook[option]filename常用选项:-C,--check模拟运行--list-hosts列出剧本主机清单[root@m01ansible_playbook]#ansible-playbook--list-hostsapache.yamlplaybook:apache.yamlplay# 查看详情

tensorflow实现条件批归一化(conditionalbatchnormalization)(代码片段)

TensorFlow实现条件批归一化(ConditionalBatchNormalization)条件批归一化(ConditionalBatchNormalization)TensorFlow实现条件批归一化在残差块中应用条件批归一化条件批归一化(ConditionalBatchNormalization)批归一化 查看详情

运维自动化工具ansible-playbook(代码片段)

一、简介playbook是一个非常简单的配置管理和多主机部署系统。可作为一个适合部署复杂应用程序的基础。playbook可以定制配置,可以按指定的操作步骤有序执行,支持同步和异步方式。playbook是通过YAML格式来进行描述定义的,... 查看详情

ansible-playbook未找到命令怎么解决

参考技术A上面的playbook实现的功能是新增一个用户:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值;hosts参数指定了对哪些主机进行参作;user参数指定了使用什么用户登录远程主机操作;gather_f... 查看详情

ansible-playbook调试

转载于互联网检测远程主机信息  ansible-i/XXXXX.hostsdev107-msetup   1.ansible-playbook 1)ansible-playbook的语法检测1[root@test-1bin]#ansible-playbook--syntax-checknginx_tags.yaml23playbook:n 查看详情

android通过实现view.onclicklistener接口来实现对点击事件的相应所出现的憨批问题

问题一:点击按键没反应解决:原来是憨批没有setOnclickListener问题二:点一个按键其他按键全被触发了解决:原来是憨批没有break 查看详情

ansible-playbook用法举例

查看详情

ansible-playbook变量(vars)

ansible-playbook中定义变量:-hosts:webserversvars:http_port:80 ①、在host里定义变量执行结果:  查看详情

pytorch实现批训练(代码片段)

代码:#进行批训练importtorchimporttorch.utils.dataasDataBATCH_SIZE=5#每批5个数据if__name__==‘__main__‘:x=torch.linspace(1,10,10)#x是从1到10共10个数据y=torch.linspace(10,1,10)#y是从10到1共10个数据#torch_dataset=Data.TensorDataset(data_tensor=x,target_tensor=y)会报错t... 查看详情

ansible-playbook拾遗

 ansible-playbook 和handles一起使用---- hosts: webuser: roottasks:- name: ensure nginx is at the latest versionyum: name=nginx sta 查看详情