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   

 

 

猜你喜欢

转载自www.cnblogs.com/hanshanxiaoheshang/p/10214947.html