zoukankan      html  css  js  c++  java
  • 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试试,看看会出现什么情况,重复执行效果如下

  • 相关阅读:
    慎用rm -rf
    Jquery 中a||""的含义
    【学习、总结】Spring security 登陆超时处理
    Eclipse 无限编译Invoking 'Maven Project Builder'导致卡主
    For多重循环 break continue
    随机编码的生成
    QQ互联Oauth2.0认证测试
    Java开发工程师(Web方向)
    Java开发工程师(Web方向)
    前端开发工程师
  • 原文地址:https://www.cnblogs.com/minseo/p/13754947.html
Copyright © 2011-2022 走看看