2016-09-30 4 views
2

Ich bin neu bei Ansible und versuche, eine Zeile in /etc/default/grub zu ändern, um Auditing zu aktivieren.Ansible lineinfile - Ändern einer Zeile

brauche ich audit=1 innerhalb der Anführungszeichen irgendwo auf einer Linie hinzuzufügen, die wie folgt aussieht:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap biosdevname=0 net.ifnames=0 rhgb quiet net.ifnames=0" 

Bisher habe ich es geschafft haben, die Zeile zu löschen und bin nur mit

net.ifnames=0, audit=1 

links, wenn Ich verwende etwas wie

lineinfile: 
    state: present 
    dest: /etc/default/grub 
    backrefs: yes 
    regexp: "net.ifnames=0" 
    line: "\1 audit=1" 

Kann dies getan werden?

Antwort

4

Sie können dies versuchen:

- lineinfile: 
    state: present 
    dest: /etc/default/grub 
    backrefs: yes 
    regexp: '^(GRUB_CMDLINE_LINUX=(?!.*audit)\"[^\"]+)(\".*)' 
    line: '\1 audit=1\2' 

Diese audit=1 hinzufügen wird kurz vor dem doppelten Anführungszeichen zu schließen.
Und es versucht idempotent werden: keine Linien entsprechen, die bereits Audit Wort nach GRUB_CMD haben ...

würde ich empfehlen Websites zu verwenden, wie regex101 zuerst Ihre regulären Ausdrücke zu testen (es gibt auch eine Substitution Modus dort).
Wenn Sie mit dem Ergebnis zufrieden sind, fahren Sie mit einer Aufgabe fort.

+0

@Jeff Bilbro - Wenn Sie es nur zu Zeilen hinzufügen müssen, die "net.ifnames = 0" haben, müssen Sie das zur Regexp-Zeile hinzufügen, die Konstantin Survorov bereitgestellt hat. Wahrscheinlich in etwa so: 'regexp: '^ (GRUB_CMDLINE_LINUX =. * Net.iframes = 0. * (?!. * Audit) \" [^ \ "] +) (\". *)' ' –

+0

Danke Leute Das hat perfekt funktioniert! –

Verwandte Themen