5

Ogni volta che eseguo il mio playbook il seguente avviso viene in su:Attenzione mentre la costruzione di una mappatura in Ansible

[ATTENZIONE]: Durante la costruzione di una mappatura da /etc/ansible/roles/foo/tasks/main.yml , riga 17, colonna 3, trovato una chiave dict duplicata (file). Usando solo l'ultimo valore definito.

La parte rilevante della mia main.yml nella cartella compiti è come questo:

(linea 17 è il compito di pulire i file che sembra un po 'fuori quindi credo che il problema è con il precedente linea di "script")

- name: Run script to format output 
    script: foo.py {{ taskname }} /tmp/fcpout.log 
- name: Clean temp files 
    file: path=/tmp/fcpout.log state=absent 

E il mio file di Vars:

--- 
my_dict: {SLM: "114", Regular: "255", Production: "1"} 
taskid: "{{my_dict[taskname]}}" 

Per eseguire il mio playbook che faccio:

ansible-playbook playbooks/foo.yml --extra-vars "server=bar taskname=SLM" 

Quello che sto cercando di fare è di prendere gli argomenti della riga di comando, impostare i padroni di casa: con il parametro "server", ottenere il taskname e da quel scoprire a cui si riferisce id a. Questo id è usato come primo input per il mio script python che viene eseguito da remoto.

Il playbook funziona bene, ma non capisco perché ricevo un avvertimento. Qualcuno potrebbe spiegare cosa c'è di sbagliato qui?

risposta

7

Sei sicuro che non ci sia più intorno alla linea 17? Questo avviso viene attivato quando ci sono due chiavi identiche in un compito (o in generale ovunque in un dict).

L'avvertimento afferma che ci sono due chiavi file, suggerendo il compito si presenta così:

- name: Clean temp files 
    file: ... 
    file: ... 

Un errore comune è che la gente dimentica di iniziare una nuova voce di lista per l'operazione successiva. Di seguito sarebbe valida, mentre quanto sopra non è:

- name: Clean temp files 
    file: ... 
- file: ... 

ho notato Ansible a volte ottiene le linee o anche file sbagliato nei messaggi di errore. L'ho visto lamentarsi di tasks/main.yml mentre il problema era in realtà in handlers/main.yml. Se nessuna attività del genere con duplicate chiavi file si trova vicino a quella linea, cercare l'intero file o anche altri file per esso. Se non c'è nulla di simile da trovare, allora sembrerebbe che tu abbia trovato un bug in Ansible. In tal caso è necessario repot it on github.

+0

Sei corretto. C'era un secondo task 'file:'. Non ho familiarità con la dicitura ansible, quindi non ho ottenuto che con "trovato un duplicato dict key (file)" si stesse riferendo al modulo file. Con la parola "chiave" ho pensato che avesse a che fare con il mio dizionario ... Grazie per l'aiuto. –

+0

Puoi ottenere questo se hai due chiavi "task:" troppo :) scenario: c'è una singola attività in un playbook e l'hai duplicata, ma anche copiata per errore l'intestazione dell'attività. È possibile eseguire il backup di ciò che @udondan dice anche sui numeri di riga errati - Ho visto degli avvertimenti su diverse righe. –

Problemi correlati