Vor ein paar Tagen habe ich mal wieder an einer Ansible
-Rolle geschraubt und wurde beim Ausführen von ansible-playbook
mit folgender Fehlermeldung begrüßt:
Source /root/.ansible/tmp/ansible-tmp-1746359478.4110813-9236-74562322926004/.source not found
Das war seltsam, weil ich nur das Modul ansible.builtin.copy
aufgerufen hatte, was vorher auf anderen Rechner problemlos funktioniert hatte.
Und jetzt?
Die Fehlermeldung
TASK [meine_rolle : inst | linux_install | Copy Binaries] *************************************************************************************************************************************************************************************************
failed: [t24] (item=/pfad/zur/datei/foo) => {"ansible_loop_var": "item", "changed": false, "checksum": "884109935b2a432cb6edb5003c4ac5adc9462cbe", "item": "/pfad/zur/datei/foo", "msg": "Source /root/.ansible/tmp/ansible-tmp-1746359476.4233594-9236-186673184030632/.source not found"}
failed: [t24] (item=/pfad/zur/datei/bar) => {"ansible_loop_var": "item", "changed": false, "checksum": "9e184000b3f2541c07f62dcbf8bf7e8927757bec", "item": "/pfad/zur/datei/bar", "msg": "Source /root/.ansible/tmp/ansible-tmp-1746359478.4110813-9236-74562322926004/.source not found"}
Die Task
1- name: inst | linux_install | Copy Binaries
2 ansible.builtin.copy:
3 src: '{{ item }}'
4 dest: '{{ meine_rolle_install_path }}'
5 owner: 'root'
6 group: 'root'
7 mode: '0755'
8 become: true
9 loop:
10 - '/pfad/zur/datei/foo'
11 - '/pfad/zur/datei/bar'
Das Problem
Ich bin per ssh
auf die betroffene Maschine gesprungen und musste feststellen, dass das Verzeichnis /root/.ansible/tmp/
auf der Remote-Maschine wirklich nicht da war. Auch wurde das /root
Verzeichnis (meiner Erinnerung nach) nicht angefasst. Ein manuelles Erstellen des Verzeichnisses brachte keine Besserung.
Zuerst kam mir keine Idee und daher hatte ich diverse Suchmaschinen befragt. Ich erwähnte es eingangs: “auf anderen Rechner problemlos”. Nun erinnerte ich mich, dass bei mir eine andere Distribution Einzug gehalten hat, die auf Ubuntu basiert.
Die Lösung
Hier scheint das Modul ansible.builtin.copy:
mit dem become: true
laut meinen Recherchen das Problem zu sein.
Beheben lies sich dies, in dem ich in der ansible.cfg
folgende Option gesetzt habe:
1remote_tmp = /tmp/ansible_tmp
Ich hab das Playbook dann noch mit einem Host, der unter einem Debian 12 läuft, probiert und auch da lief das Playbook anstandslos durch. Ich lass das jetzt so.