Beim Ausführen von Ansible-Playbooks läuft man immer mal wieder
in Fehler. Die Fehlermeldungen von Ansible sind lang und unleserlich.
Hier beschreibe ich, wie die Fehlermeldungen aussehen und wie man
sie in ein brauchbareres Format überführen kann.
Typische Ansible-Fehlermeldung
Wenn ich ein Ansible-Playbook mit Fehler ausführe, dann sehen die Fehlermeldungen
für mich typischerweise so aus:
12345678
$ ansible-playbook site.yml -l testserver
...
TASK [basis : copy templates for host testserver] *************************************************************************************************************************************
ok: [testserver] => (item={'src': 'testserver/apache2-sites-available/git.daemons-point.com.conf', 'dest': '/etc/apache2/sites-available/git.daemons-point.com.conf'})
failed: [testserver] (item={'src': 'mich-gibt-es nicht', 'dest': '/wohin-auch-immer'}) => {"ansible_loop_var": "item", "changed": false, "item": {"dest": "/wohin-auch-immer", "src": "mich-gibt-es nicht"}, "msg": "Could not find or access 'mich-gibt-es nicht'\nSearched in:\n\t/home/uli/git/dpserver-ansible/roles/basis/templates/mich-gibt-es nicht\n\t/home/uli/git/dpserver-ansible/roles/basis/mich-gibt-es nicht\n\t/home/uli/git/dpserver-ansible/roles/basis/tasks/templates/mich-gibt-es nicht\n\t/home/uli/git/dpserver-ansible/roles/basis/tasks/mich-gibt-es nicht\n\t/home/uli/git/dpserver-ansible/templates/mich-gibt-es nicht\n\t/home/uli/git/dpserver-ansible/mich-gibt-es nicht on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}
PLAY RECAP **********************************************************************************************************************************************************************************
testserver : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Temporäre Verbesserung
Wenn ich die Fehlermeldung einmalig verschönert haben möchte, dann stelle ich
ANSIBLE_STDOUT_CALLBACK=debug vor den Ansible-Aufruf:
123456789101112131415161718192021222324252627
$ ANSIBLE_STDOUT_CALLBACK=debug ansible-playbook site.yml -l testserver
...
TASK [basis : copy templates for host testserver] *************************************************************************************************************************************
ok: [testserver] => (item={'src': 'testserver/apache2-sites-available/git.daemons-point.com.conf', 'dest': '/etc/apache2/sites-available/git.daemons-point.com.conf'})
failed: [testserver] (item={'src': 'mich-gibt-es nicht', 'dest': '/wohin-auch-immer'}) => {
"ansible_loop_var": "item",
"changed": false,
"item": {
"dest": "/wohin-auch-immer",
"src": "mich-gibt-es nicht"
}
}
MSG:
Could not find or access 'mich-gibt-es nicht'
Searched in:
/home/uli/git/dpserver-ansible/roles/basis/templates/mich-gibt-es nicht
/home/uli/git/dpserver-ansible/roles/basis/mich-gibt-es nicht
/home/uli/git/dpserver-ansible/roles/basis/tasks/templates/mich-gibt-es nicht
/home/uli/git/dpserver-ansible/roles/basis/tasks/mich-gibt-es nicht
/home/uli/git/dpserver-ansible/templates/mich-gibt-es nicht
/home/uli/git/dpserver-ansible/mich-gibt-es nicht on the Ansible Controller.
If you are using a module and expect the file to exist on the remote, see the remote_src option
PLAY RECAP **********************************************************************************************************************************************************************************
testserver : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Permanente Verbesserung
Wenn ich die Verbesserung dauerhaft verfügbar haben möchte, dann
passe ich die Datei “ansible.cfg” in meinem Projektverzeichnis an: