如何使用Ansible迭代两个维度列表?

时间:2016-10-12 14:27:47

标签: ansible ansible-playbook

我有一个像这样的变量:

"files": {
    "results": [
        {
            "files": [
                {
                    "path": "/etc/file1.xml", 
                }, 
                {
                    "path": "/etc/file2.xml", 
                }
            ]
        },
        {
            "files": [
                {
                    "path": "/etc/file2.xml", 
                }
            ]
        }, 
        {
            "files": []
        }
    }
}

如何遍历所有路径?

1 个答案:

答案 0 :(得分:1)

您无需迭代两个维度即可获得所有路径 使用map过滤器缩小原始列表。

从示例中获取路径的简单列表:

- debug: msg="{{ files.results | map(attribute='files') | sum(start=[]) | map(attribute='path') | list }}"