Registra le variabili nel ciclo with_items nel playbook Ansible

Ho un dizionario con nomi diversi come

vars: images: - foo - bar 

No, voglio controllare i repository e successivamente creare le immagini della finestra mobile solo quando la fonte è cambiata. Dal momento che ottenere l’origine e build l’immagine è la stessa per tutte le voci tranne il nome con cui ho creato le attività con with_items: images e prova a registrare il risultato con:

 register: "{{ item }}" 

e anche provato

 register: "src_{{ item }}" 

Quindi ho provato il seguente conditon

 when: "{{ item }}|changed" 

e

 when: "{{ src_item }}|changed" 

Ciò risulta sempre fatal: [piggy] => |changed expects a dictionary

Quindi, come posso salvare correttamente i risultati delle operazioni nei nomi delle variabili in base alla lista I iterate su?

Aggiornamento: mi piacerebbe avere qualcosa del genere:

 - hosts: all vars: images: - foo - bar tasks: - name: get src git: repo: git@foobar.com/repo.git dest: /tmp/repo register: "{{ item }}_src" with_items: images - name: build image shell: "docker build -t repo ." args: chdir: /tmp/repo when: "{{ item }}_src"|changed register: "{{ item }}_image" with_items: images - name: push image shell: "docker push repo" when: "{{ item }}_image"|changed with_items: images 

    Quindi, come posso salvare correttamente i risultati delle operazioni nei nomi delle variabili in base alla lista I iterate su?

    Non è necessario. Le variabili registrate per un’attività con with_items hanno un formato diverso, contengono risultati per tutti gli elementi.

     - hosts: localhost gather_facts: no vars: images: - foo - bar tasks: - shell: "echo result-{{item}}" register: "r" with_items: "{{ images }}" - debug: var=r - debug: msg="item.item={{item.item}}, item.stdout={{item.stdout}}, item.changed={{item.changed}}" with_items: "{{r.results}}" - debug: msg="Gets printed only if this item changed - {{item}}" when: item.changed == true with_items: "{{r.results}}"