4、Ansible(tags、roles)
阿新 • • 發佈:2019-01-03
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: httpd5 - 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