1. ansible-playbook流程控制-loops循环使用
有时你想要多次重复任务。在计算机编程中,这称为循环。common ansible循环包括使用文件模块更改多个文件和/或目录的所有权,使用用户模块创建多个用户,并重复轮询步骤,直到达到某个结果。ansible提供两个用于创建循环的关键字:loop和with_<lookup>
注意:
- 我们loop在ansible 2.5中添加了,他尚未完全替代with_<lookup>,但我们建议大多数用例。
- 我们还没弃用with_<lookup> 该语法乃然有效
2. 循环示例1:
2.1) 示例1:with_list直接替换为loop
1 - name: with_list 2 debug: 3 msg: "{{ item }}" 4 with_list: 5 - one 6 - two 7 8 - name: with_list -> loop 9 debug: 10 msg: "{{ item }}" 11 loop: 12 - one 13 - two
3. 案例:循环操作
3.1) 案例1:with_list直接替换为loop
1 [root@test-1 loops]# vim loops_test1.yaml 2 [root@test-1 loops]# cat loops_test1.yaml 3 --- 4 - hosts: web1 5 gather_facts: no 6 7 tasks: 8 - name: with list 9 debug: 10 msg: "{{ item }}" 11 with_list: 12 - one 13 - two 14 - name: with_list -> loop 15 debug: 16 msg: "{{ item }}" 17 loop: 18 - one 19 - two
3.2) 检查配置文件
1 [root@test-1 loops]# ansible-playbook --syntax-check loops_test1.yaml 2 3 playbook: loops_test1.yaml
3.3) 执行模块
1 [root@test-1 loops]# ansible-playbook loops_test1.yaml 2 3 PLAY [web1] ************************************************************************************************************************************************************* 4 5 TASK [with list] ******************************************************************************************************************************************************** 6 ok: [192.168.200.132] => (item=one) => { 7 "msg": "one" 8 } 9 ok: [192.168.200.132] => (item=two) => { 10 "msg": "two" 11 } 12 ok: [192.168.200.133] => (item=one) => { 13 "msg": "one" 14 } 15 ok: [192.168.200.133] => (item=two) => { 16 "msg": "two" 17 } 18 19 TASK [with_list -> loop] ************************************************************************************************************************************************ 20 ok: [192.168.200.132] => (item=one) => { 21 "msg": "one" 22 } 23 ok: [192.168.200.132] => (item=two) => { 24 "msg": "two" 25 } 26 ok: [192.168.200.133] => (item=one) => { 27 "msg": "one" 28 } 29 ok: [192.168.200.133] => (item=two) => { 30 "msg": "two" 31 } 32 33 PLAY RECAP ************************************************************************************************************************************************************** 34 192.168.200.132 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 35 192.168.200.133 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0