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="listen\1 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="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中的兩個任務都被正常執行了,如下圖所示

ansible-playbook nginx.yml

 

這樣沒有任何問題,與我們預期的一樣,端口號從8080修改為8088,重啟了服務

那么,我們再來重復執行一遍上述playbook試試,看看會出現什么情況,重復執行效果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM