Plusieurs boucles imbriquées dans ansible

Je suis en train de boucler sur une liste, qui est stockée dans une dict, qui fait partie d'une autre liste. mon playbook ressemble à ceci:

---
- hosts: all 
  vars:
    copy_certs:
      - { domain: 'domainname', copy_to: ['/tmp/foo', '/tmp/bar'], restart: [["mailhost", "postfix"], ["mailhost", "dovecot"]] }
      - { domain: 'domainname2', copy_to: ['/tmp/foo2', '/tmp/bar2'], restart: [["mail.lxc", "postfix"]] }
  tasks:
[...]
    - name: Copy Private Key 
      register: copied_key
      copy: src=/etc/letsencrypt/live/{{ item.0.domain }}/privkey.pem dest="{{ item.1 }}/"
      with_subelements:
        - copy_certs
        - copy_to
    - name: Debug (here should be delegates to "item.restart.NUM.0" to restart "item.restart.NUM.1" with_subelements: ...)
      debug: var=item
      with_items: copied_key.results

Maintenant, je suis pile à l'itération sur les listes, comme ansible ne semble pas réel de soutien de nidification, mais seulement quelques structures prédéfinies pour les deux boucles imbriquées.

j'aurais besoin de quelque chose comme (ne fonctionne pas):

with_subelements:
  - copied_key.results
  - item.domain.restart

ou (mauvaise syntaxe pour les sous-éléments):

with_subelements:
  - copied_key.results
  - item.domain
  - restart

J'ai déjà essayé d'utiliser une liste redondante:

vars:
  restart_services:
    domainname: [["mailhost", "postfix"]]
tasks:
  - name: Debug
  debug: var=restart_services[item.item.0.domain]
  with_items: copied_key.results

comme vous le voyez, il commence déjà d'être moche avec item.item.

Il aurait besoin de quelque chose comme

  register: [to_restart for to_restart in item['restart']] as services_to_rstart
- debug: var=item # item.0 = hostname item.1 = servicename
  with_items: services_to_restart

ou si elle n'a pas besoin d'être des listes pour être en mesure d'effectuer une itération sur elle même item.hostname au lieu de n-uplets (en fait des listes).

Il serait vraiment bien d'avoir un moyen de spécifier des boucles à la nidification, au lieu de l'utilisation de filtres prédéfinis comme with_subelements.

OriginalL'auteur allo | 2016-03-24