Ich habe das folgende Ansible-Skript erstellt, in dem ich mit einem Platzhalter überprüfe, ob ein Verzeichnis vorhanden ist oder nicht, aber es ist bei mir fehlgeschlagen:
- host: windows
vars:
dir: 'c:\inetpub\wwwroot\mysite*' # without * playbook working well
tasks:
- name : check dir
win_stat:
path: "{{ dir }}"
register: dirdata
- name: check
fail:
msg: not present
when: dirdata.stat.exists == false
Es tritt der folgende Fehler auf:
FAILED: => { " argument for the path is of type System.String and we were unable to convert to path: Illaegel characters in path.”}
Kann mir jemand dasselbe vorschlagen? Vielen Dank im Voraus.
Antwort1
Der Fehler liegt daran, dass der Ansible Control Node einen Pfad auf einem Remote Node nicht erweitern kann, ohne eine Verbindung hergestellt und nach ihm gesucht zu haben. Dies ist also das erwartete Verhalten.
Es gibt Module für die Verwendung mit Platzhaltern wieFileglob-Lookup – Listet Dateien auf, die einem Muster entsprechen, Aber
Der Abgleich erfolgt mit lokalen Systemdateien auf dem Ansible-Controller. Um eine Liste von Dateien auf einem Remote-Knoten zu iterieren, verwenden Sie die
ansible.builtin.find
Modul.
in Ihrem Fallwin_find
Zu
Gibt eine Liste von Dateien basierend auf bestimmten Kriterien zurück.