ansible笔记(12):handlers的用法

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

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

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

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

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

[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="listen1 8088 2"
      backrefs=yes
      backup=yes
  - name: restart nginx
    service:
      name=nginx
      state=restarted

配置文件解析

lineinfile: #调用的模块是对行进行修改
      path=/etc/nginx/conf.d/test.zsythink.net.conf #需要修改的目标文件
      regexp="listen(.*)8080(.*)"#正则匹配,可以匹配到配置端口8080映射的哪一行
      line="listen1 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中的两个任务都被正常执行了,如下图所示

ansible-playbook nginx.yml

 

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

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

原文地址:https://www.cnblogs.com/minseo/p/13754947.html