双循环 Ansible [英] Double loop Ansible
本文介绍了双循环 Ansible的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的对象
objs:
- { key1: value1, key2: [value2, value3] }
- { key1: value4, key2: [value5, value6] }
我想创建以下文件
value1/value2
value1/value3
value4/value5
value4/value6
但我不知道如何使用 with_items
推荐答案
看看这里 http://docs.ansible.com/ansible/playbooks_loops.html#nested-loops
Take a look at with_subelements
in here http://docs.ansible.com/ansible/playbooks_loops.html#nested-loops
- 您需要创建目录:
- 遍历
objs
并创建文件:
- You need to create directories:
- Iterate though
objs
and create files:
这是一个例子:
---
- hosts: localhost
gather_facts: no
vars:
objs:
- { key1: value1, key2: [ value2, value3] }
- { key1: value4, key2: [ value5, value6] }
tasks:
- name: create directories
file: path="{{ item.key1 }}" state=directory
with_items:
objs
- name: create files
file: path="{{ item.0.key1 }}/{{ item.1 }}" state=touch
with_subelements:
- objs
- key2
输出是不言自明的,第二个循环以您需要的方式遍历值:
An output is pretty self explanatory, the second loop iterates through the values the way you need it:
PLAY [localhost] **************************************************************
TASK: [create files] **********************************************************
changed: [localhost] => (item={'key2': ['value2', 'value3'], 'key1': 'value1'})
changed: [localhost] => (item={'key2': ['value5', 'value6'], 'key1': 'value4'})
TASK: [create files] **********************************************************
changed: [localhost] => (item=({'key1': 'value1'}, 'value2'))
changed: [localhost] => (item=({'key1': 'value1'}, 'value3'))
changed: [localhost] => (item=({'key1': 'value4'}, 'value5'))
changed: [localhost] => (item=({'key1': 'value4'}, 'value6'))
PLAY RECAP ********************************************************************
localhost : ok=2 changed=2 unreachable=0 failed=0
这篇关于双循环 Ansible的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文