这是我的vars/main.yml
文件中简短而富有表现力的数据结构:
webapp_dirs:
- /var/www/example.com
- /var/www/test.example.ru
webapp_acls:
- dirs:
- app
- web
- src
- vendor
perm: rX
recursive: yes
- dirs:
- app/cache
- app/logs
perm: rwX
recursive: no
我想迭代第一个列表,然后遍历第二个列表,最后遍历第二个列表中的嵌套列表:
for top_dir in webapp_dirs:
for acl in webapp_acls:
for dir in i.dirs:
....
我有with_subelements
和with_nested
,但无法合并。有没有办法在ansible中做我想要的事情?
UPD
@chrism给了我一个好主意,但我不能让外循环工作:
- include: app-permissions.yml
vars:
webapp_dir: "{{ item }}"
with_items:
- /var/www/example.com
app-permissions.yml
包含变量的内部循环。此操作失败,错误为{"failed": true, "msg": "ERROR! an unexpected type error occurred. Error was can only concatenate list (not \"str\") to list"}
答案 0 :(得分:2)
在ansible 2.0中,您可以通过- include playbook.yml
嵌套循环。外环包含playbook.yml
且内环位于playbook.yml