我有一个看起来像这样的yaml:
apache:
apache_mods:
- libapache2-mod-perl2
- libapache2-reload-perl
vhosts:
- name: default
servername: "*"
port: 81
conf-file: default.conf
documentroot: /var/www/html
directories:
- path: "/var/www/"
is_protected: "htpasswd1"
- path: "/var/www/cgi-bin/"
is_cgi: "yes"
- path: "/var/www/html/data"
is_protected: "htpasswd3"
- path: "/var/www/html/data-bandwith"
is_protected: "htpasswd2"
- path: "/var/www/html/fusion"
options: |
ForceType text/plain
- path: /var/www/html/cedexis/
- path: "/var/www/php"
is_php: "yes"
php_version: "5.6"
我希望获得所有is_protected值。
第二级没问题:{{apache.vhosts | map(attribute = \" port \")| list}}给我所有端口例如但我无法访问第3级,链接" map"根本不工作。
有什么我不明白的吗?这种操作是强制查找吗?
非常感谢。
答案 0 :(得分:2)
您需要在链中获取嵌套列表:
- debug: msg="{{ apache.vhosts | map(attribute='directories') | sum(start=[]) | map(attribute='is_protected') | reject('undefined') | list }}"
我使用sum(start=[])
将列表列表展平为单个列表。