03. March 2019 - verfasst von Oliver Gaida - Kategorien: ["ansible", "regex"]
Ansible in Windows
Einträge aus einer Textdatei entfernen
- name: String aus hosts Datei entfernen
win_lineinfile:
path: 'C:/mypath/123/filename'
regexp: "(?i:{{String}})"
state: absent
Erläuterungen dazu
- Warum
(?i:...)?
Im Default werden die Regulären Ausdrücke case-sensitiv gesucht. Mit ?i: kann man den ignorecase aktivieren.
Die Details dazu sind auf der entsprechenden Microsoftseite erläutert, also hier.
- Warum wird im Pfad ´/´ und kein ´\´ verwendet?
Das win_lineinfile Module ersetzt intern die / im Pfad durch \, dadurch funktioniert das schon mal. Ein \-Zeichen dient sehr
oft dem maskieren von speziellen Zeichen. Die hier verwendete Variante schliesst also aus, dass sonderbare Dinge passieren.
Beispiel lineinfile, also nicht Windows
Da kann man folgendes nehmen:
- name: Dateiliste relevanter Dateien erstellen
find:
paths: /mein/pfad
patterns: "abc*.conf"
register: filelist
- name: server aus File entfernen
lineinfile:
path: "{{ item.path }}"
state: absent
regexp: '(?i)^\s*(server)\s*='
with_items: "{{ filelist.files }}"