Ansible在2.0版本引入块功能,块功能可以将任务进行分组,并且可以块级别上应用任务变量,同时支持在块内进行异常处理
常用语法:
- block:定义块
rescue:当出现异常时,执行的语句
always:无论结果如何都要执行的语句
块用法示例:
[root@nfs-server playbook]# cat block.yml ---- hosts: webservers remote_user: root gather_facts: True tasks: - block: - service: name={ { item }} state=stopped with_items: - nginx - httpd - memcached tags: - stop_application - yum: name={ { item }} state=absent with_items: - nginx - httpd - memcached tags: - remove_soft when: ansible_os_family == 'RedHat'[root@nfs-server playbook]# ansible-playbook block.ymlPLAY [webservers] **************************************************************************************************************************************TASK [Gathering Facts] *********************************************************************************************************************************ok: [192.168.2.111]ok: [192.168.2.101]TASK [service] *****************************************************************************************************************************************changed: [192.168.2.101] => (item=nginx)changed: [192.168.2.111] => (item=nginx)ok: [192.168.2.101] => (item=httpd)ok: [192.168.2.111] => (item=httpd)changed: [192.168.2.111] => (item=memcached)changed: [192.168.2.101] => (item=memcached)TASK [yum] *********************************************************************************************************************************************changed: [192.168.2.101] => (item=[u'nginx', u'httpd', u'memcached'])changed: [192.168.2.111] => (item=[u'nginx', u'httpd', u'memcached'])PLAY RECAP *********************************************************************************************************************************************192.168.2.101 : ok=3 changed=2 unreachable=0 failed=0 192.168.2.111 : ok=3 changed=2 unreachable=0 failed=0