1. 程式人生 > >4、Ansible(tags、roles)

4、Ansible(tags、roles)

Tags   

https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html

http://www.zsythink.net/archives/2641

tags用於讓使用者選擇執行playbook中的部分程式碼。ansible具有冪等性,因此會自動跳過沒有變化的部分,即便如此,有些程式碼為測試其確實沒有發生變化的時間依然會非常地長。此時,如果確信其沒有變化,就可以通過tags跳過此些程式碼片斷。

tags:在playbook中可以為某個或這些任務定義一個"標籤",在執行此playbook時,通過ansible-playbook命令使用

--tags選項能實現僅執行指定的tasks而非所有的。

# vim apache.yml //在配置檔案修改以後,沒有必要把整個playbook定義的tasks都執行一遍。執行playbooks時只需指定說明需要執行的task。

 1 - hosts: websrvs        //如何只執行所需要執行的task?可以給每個task都給一個單獨的標籤或者只給需要鄖執行的task一個單獨的標籤,在執行ansible-playbook明確指明標籤對應的task就可以了。
 2   remote_user: root
 3   vars:
 4   - package: httpd
5 - service: httpd 6 tasks: //第一次執行的時候,tasks全部執行一邊,再次執行時可以只執行一分部內容 7 - name: install httpd package //比如第一個tasks在第一次執行後,如果配置檔案發生改變,那麼再次執行tasks時,沒有必要把此tasks再執行一遍,因為即使執行了也沒有發生任何改變。 8 yum: name={{ package }} state=latest 9 - name: install configuration file for httpd //檔案修改後,可以之執行這個任務,其他的任務可以不執行
10 template: src=/root/templates/httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf 11 tags: //此處定義標籤 12 - conf //標籤對應的task名字 13 notify: 14 - restart httpd 15 - name: start httpd service 16 service: name={{ service }} enabled=true state=started 17 handlers: 18 - name: restart httpd 19 service: name=httpd state=restarted

# vim /etc/ansible/hosts   //對websrvs進行修改,表示playbook中定義的配置檔案有修改

[websrvs]
192.168.184.142 http_port=8080
192.168.184.143 http_port=80

# ansible-playbook apache.yml --tags="conf"

 1 PLAY [websrvs] ***********************************************************************************************************************
 2    
 3 TASK [Gathering Facts] ***************************************************************************************************************
 4 ok: [192.168.184.143]
 5 ok: [192.168.184.142]
 6                           //安裝程式包的task和啟動服務的task都沒有執行,而是直接複製配置檔案到被管控主機。
 7 TASK [install configuration file for httpd] ******************************************************************************************
 8 changed: [192.168.184.143]     //這裡只運行了標籤tags為conf的task
 9 changed: [192.168.184.142]
10 
11 RUNNING HANDLER [restart httpd] ******************************************************************************************************
12 changed: [192.168.184.142]    //由於存在notify機制,所以在配置檔案修改後會重啟服務
13 changed: [192.168.184.143] 
14 
15 PLAY RECAP ***************************************************************************************************************************
16 192.168.184.142            : ok=3    changed=2    unreachable=0    failed=0   
17 192.168.184.143            : ok=3    changed=2    unreachable=0    failed=0