5

Jedes Mal, wenn ich mein Textbuch die folgende Warnung laufe aufkommt:Warnung, während eine Abbildung in ansible Konstruktion

[WARNUNG]: Während eine Abbildung von /etc/ansible/roles/foo/tasks/main.yml Konstruktion , Zeile 17, Spalte 3, gefunden ein doppelter Diktatschlüssel (Datei). Nur den zuletzt definierten Wert verwenden

Der relevante Teil meiner main.yml im Ordner Aufgaben ist wie folgt:

(Linie 17 ist die Aufgabe, die Dateien zu reinigen, die ein wenig abseits scheint also denke ich, das Problem mit dem ist vorherige "script" Linie)

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

Und meine vars-Datei:

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

auszuführen mein Textbuch ich tun:

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

Was ich versuche die Hosts zu tun ist, die Befehlszeilenargumente zu nehmen, setzen: mit dem „Server“ Parameter, die Aufgabenname erhalten und daraus herausfinden, auf die ID verweist zu. Diese ID wird als erste Eingabe für mein Python-Skript verwendet, das remote ausgeführt wird.

Das Playbook funktioniert gut, aber ich verstehe nicht, warum ich eine Warnung bekomme. Kann mir jemand erklären, was hier falsch ist?

Antwort

7

Sind Sie sicher, dass es nicht mehr um die Linie 17 gibt? Diese Warnung wird ausgelöst, wenn zwei identische Schlüssel in einer Aufgabe (oder allgemein irgendwo in einem Diktat) vorhanden sind.

Die Warnung behauptet, gibt es zwei file Schlüssel, was darauf hindeutet, die Aufgabe wie folgt aussieht:

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

Ein häufiger Fehler ist, dass die Menschen für die nächste Aufgabe ein neues Listenelement zu starten vergessen. In der folgenden würde gelten, während die oben nicht ist:

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

Ich bemerkte ansible wird manchmal die Linien oder Dateien auch falsch in Fehlermeldungen. Ich habe gesehen, wie es sich über tasks/main.yml beschwert hat, während das Problem tatsächlich in handlers/main.yml war. Wenn keine solche Aufgabe mit doppelten Schlüsseln file in der Nähe dieser Zeile gefunden werden kann, suchen Sie die gesamte Datei oder sogar andere Dateien dafür. Wenn es so etwas nirgendwo zu finden gibt, dann scheint es, dass Sie einen Fehler in Ansible gefunden haben. In diesem Fall sollten Sie repot it on github.

+0

Sie haben Recht. Es gab eine zweite 'Datei:' Aufgabe. Ich bin nicht vertraut mit der ansprechbaren Formulierung, also habe ich das nicht mit "fand einen doppelten Diktatschlüssel (Datei)" es bezieht sich auf das Dateimodul. Mit dem Wort "Schlüssel" dachte ich, dass es mit meinem Wörterbuch zu tun hat ... Danke für die Hilfe. –

+0

Sie können das auch bekommen, wenn Sie zwei "task:" - Schlüssel haben :) Szenario: Es gibt eine einzelne Aufgabe in einem Playbook und Sie haben es dupliziert, aber die Aufgabenüberschrift versehentlich kopiert. Kann das, was @udondan über fehlerhafte Zeilennummern sagt, auch sichern - ich habe Warnungen mehrere Zeilen entfernt gesehen. –

Verwandte Themen