GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ansible Zeile in Datei auskommentieren

Wenn Sie nach dem Zeichen „#“ null oder mehr Leerzeichen benötigen, sollte Folgendes ausreichen:

- name: Uncomment line from /etc/ssh/sshd_config
    lineinfile:
      dest: /etc/ssh/sshd_config
      regexp: '^#\s*AuthorizedKeysFile.*$'
      line: 'AuthorizedKeysFile    .ssh/authorized_keys'

Die Änderung an Ihrem ursprünglichen Code ist die Hinzufügung des 03 und die 12 in der Regex.

Erklärung:

20 - Entspricht Leerzeichen (Leerzeichen, Tabulatoren, Zeilenumbrüche und Formularvorschübe)

33 - gibt an, dass der Ausdruck links davon (45 ) kann null oder mehr Instanzen in einer Übereinstimmung haben

51 - stimmt mit keinem oder mehreren beliebigen Zeichen überein

61 - entspricht dem Zeilenende


Erstens verwenden Sie die falsche Sprache. Bei Ansible sagen Sie ihm nicht, was es tun soll, sondern definieren den gewünschten Zustand. Es sollte also nicht 79 sein , aber 86 .

Zweitens spielt es keine Rolle, wie der Anfangszustand ist (ob die Zeile kommentiert ist oder nicht). Sie müssen eine einzelne, eindeutige Zeichenfolge angeben, die die Zeile identifiziert.

Mit 91 dies ist als 106 möglich Direktive kommt nur einmal in der Datei vor. Bei anderen Konfigurationsdateien könnte dies schwieriger sein.

- name: Ensure AuthorizedKeysFile is set to .ssh/authorized_keys
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: AuthorizedKeysFile
    line: 'AuthorizedKeysFile    .ssh/authorized_keys'

Es passt zu jeder Zeile, die 118 enthält Zeichenfolge (egal ob kommentiert oder nicht, oder wie viele Leerzeichen vorhanden sind) und stellen Sie sicher, dass die vollständige Zeile lautet:

121

Wenn die Zeile anders wäre, meldet Ansible den Status "geändert".

Beim zweiten Durchlauf findet Ansible den 137 erneut und stellen Sie fest, dass sich die Leitung bereits im gewünschten Zustand befindet, sodass die Aufgabe mit dem Zustand "OK" beendet wird.

Ein Vorbehalt bei der obigen Aufgabe besteht darin, dass, wenn eine der Zeilen einen Kommentar enthält, wie z. B. ein echter, absichtlicher Kommentar (z ), ersetzt Ansible diese Zeile durch den in 158 angegebenen Wert .


Linux
  1. Cat Zeile X bis Zeile Y in einer riesigen Datei?

  2. Kann die zu patchende Datei in Eingabezeile 3 nicht finden?

  3. Pip3 fehlende Abhängigkeit?

  4. VIM:wie man unter Ubuntu zur genauen Zeile geht

  5. Zeile NUR zu einer Datei hinzufügen, wenn sie sich nicht bereits in der Datei befindet

So lesen Sie Dateien Zeile für Zeile in Bash

So verwenden Sie die Jinja2-Vorlage im Ansible Playbook

So lesen Sie eine Datei Zeile für Zeile in Bash

Diff-Befehl in Linux mit Beispielen

Ansible Inventar- und Konfigurationsdateien

Eine kurze Einführung in Ansible Vault