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