Ansible定制嵌套循环与子元素

时间:2016-01-25 15:37:54

标签: ansible

这是我的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_subelementswith_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"}

1 个答案:

答案 0 :(得分:2)

在ansible 2.0中,您可以通过- include playbook.yml嵌套循环。外环包含playbook.yml且内环位于playbook.yml

的位置