ansible笔记(12):handlers的用法

  参考:http://www.zsythink.net/archives/2624

不过在开始介绍它们之前,我们先来描述一个工作场景。

当我们修改了某些程序的配置文件以后,有可能需要重启应用程序,以便能够使新的配置生效,那么,如果使用playbook来实现这个简单的功能,该怎样编写playbook呢?

我们来试试,此处我们使用nginx作为示例,虽然nginx可以使用'nginx -s reload'命令重载配置,但是此处的示例中并不会使用这个命令,而是用nginx类比那些需要重启生效的应用。

假设我们想要将nginx中的某个server的端口从8080改成8088,并且在修改配置以后重启nginx,那么我们可以编写如下剧本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 ansible]# cat nginx.yml
---
- hosts: test70
  remote_user: root
  tasks:
  - name: Modify the configuration
    lineinfile:
      path=/etc/nginx/conf.d/test.zsythink.net.conf
      regexp="listen(.*)8080(.*)"
      line="listen\1 8088 \2"
      backrefs=yes
      backup=yes
  - name: restart nginx
    service:
      name=nginx
      state=restarted

配置文件解析

1
2
3
4
5
6
lineinfile: #调用的模块是对行进行修改
      path=/etc/nginx/conf.d/test.zsythink.net.conf #需要修改的目标文件
      regexp="listen(.*)8080(.*)"#正则匹配,可以匹配到配置端口8080映射的哪一行
      line="listen\1 8088 \2"#根据正则匹配到的替换,此处\1 \2分别代表上一行(.*)匹配到的内容寄
      backrefs=yes #默认如果没有匹配到则会把line加到最后一行,加次参数没有匹配到则不作修改
      backup=yes#修改前备份,会在当前操作的文件夹下创建一个加了时间信息的文件

 

 

 

原始配置文件如下,需要把端口修改成8088然后重启nginx

 

 上述play表示修改test70主机的/etc/nginx/conf.d/test.zsythink.net.conf配置文件,将监听端口8080改为监听端口8088,端口修改完成后,重启服务。

在执行这个playbook之前,我们先来确认一下test70主机的8080端口是否被监听

可以看到test70主机上的8080正常被监听,那么现在我们来执行一下上述playbook,看一下执行效果

执行后可以看到,play中的两个任务都被正常执行了,如下图所示

1
ansible-playbook nginx.yml

 

这样没有任何问题,与我们预期的一样,端口号从8080修改为8088,重启了服务

那么,我们再来重复执行一遍上述playbook试试,看看会出现什么情况,重复执行效果如下

posted @   minseo  阅读(747)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2019-09-30 ELK之es常用查询语句
点击右上角即可分享
微信分享提示