Ich versuche, ein Ansible-Skript zu schreiben, das eine Shell-Pipeline ausführt, und bestimmt, ob die Ausführung des Playbooks basierend auf der Ausgabe dieser Pipeline beendet wird.Überprüfen der Ausgabe eines Shell-Befehls in ansible
Hier ist die problematische Code:
- name: Check if the number of HITACHI devices is equal to 1
shell: lsscsi | grep HITACHI | awk '{print $6}' | wc -l
register: numOfDevices
when: numOfDevices|int == 1
Hier wird der Fehler:
{
"failed":true,
"msg":"The conditional check 'numOfDevices|int == 1' failed.
The error was: error while evaluating conditional (numOfDevices|int == 1): 'numOfDevices' is undefined\n\nThe error appears to have been in '/etc/ansible/config/test.yml': line 14, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Check if the number of HITACHI devices is equal to 1\n ^here\n"
}
Kann mir jemand sagt, was das Problem sein könnte?
'grep | awk | wc'? Du erkennst, dass 'awk' die Aufgabe aller drei Befehle ausführen könnte? –
BTW, was ist dein eigentliches Ziel hier? Möchten Sie die Ausführung des Playbooks stoppen, wenn nicht genau ein Hitachi-Gerät vorhanden ist? Führen Sie einen anderen Befehl aus, wenn genau ein Hitachi-Gerät vorhanden ist (oder nicht)? Etwas anderes? Die 'when'-Klausel macht keinen Sinn, wo Sie sie haben; Die Frage ist, wo es sein sollte. –
Ich möchte das Playbook anhalten, wenn es nicht genau ein Hitachi-Gerät gibt. – Omri