ansible的变量不只能够是单个的值,也能够为列表。shell
- hosts: localhost gather_facts: no vars: - list: [1,2,3] tasks: - name: echo debug: msg="{{ list }}"
输出为:oop
TASK [echo] ******************************************************************** ok: [localhost] => { "msg": [ 1, 2, 3 ] }
结合循环,这个特性就变得颇有用;以参数传递列表给playbook,不用在playbook中固定循环的次数与内容。debug
- hosts: localhost gather_facts: no vars: - list: [1,2,3] tasks: - name: loop debug: msg="{{ item }}" with_items: '{{list}}'
输出为:code
TASK [loop] ******************************************************************** ok: [localhost] => (item=1) => { "item": 1, "msg": 1 } ok: [localhost] => (item=2) => { "item": 2, "msg": 2 } ok: [localhost] => (item=3) => { "item": 3, "msg": 3 }
变量也能够为字典:it
- hosts: localhost gather_facts: no vars: - lists: list1: [1,2,3] list2: [4,5] tasks: - name: loop debug: msg="{{ item }}" with_items: '{{lists["list1"]}}'
TASK [loop] ******************************************************************** ok: [localhost] => (item=1) => { "item": 1, "msg": 1 } ok: [localhost] => (item=2) => { "item": 2, "msg": 2 } ok: [localhost] => (item=3) => { "item": 3, "msg": 3 }