Mehrere geschachtelte Schleifen in ansible

Ich versuche eine Schleife über eine Liste, die gespeichert ist in ein dict, das ist Teil einer anderen Liste. mein playbook sieht wie folgt aus:

---
- 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

Nun bin ich Stapel bei der Iteration über die Listen, wie ansible scheint nicht zu unterstützen, echte Verschachtelung, aber nur wenige vordefinierte Strukturen für zwei geschachtelte Schleifen.

ich würde sowas braucht (funktioniert nicht):

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

oder (falsche syntax für Unterelemente):

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

Ich bereits versucht, eine redundante Liste:

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

wie Sie sehen, es bereits beginnt, hässlich mit item.item.

Bräuchte es so etwas wie

  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

oder wenn Sie nicht brauchen, um Listen zu können, Durchlaufen Sie noch item.hostname anstelle von Tupeln (eigentlich Listen).

Wäre es wirklich gut, eine Möglichkeit zu haben, geben Sie Schleifen mit der Verschachtelung statt mit vorgefertigten filtern wie with_subelements.

InformationsquelleAutor allo | 2016-03-24

Schreibe einen Kommentar