Zum Inhalt

Ansible - Dateiverwaltung

In diesem Kapitel erfahren Sie, wie Sie Dateien mit Ansible verwalten.


Ziele: In diesem Kapitel lernen Sie Folgendes:

✔ den Inhalt einer Datei ändern;
✔ Dateien auf Zielserver hochladen;
✔ Dateien von Zielservern herunterladen.

🏁 ansible, module, Dateien

Vorkenntnisse: ⭐ ⭐
Schwierigkeitsgrad: ⭐

Lesezeit: 23 Minuten


Je nach Bedarf werden Sie unterschiedliche Ansible-Module verwenden, um Systemkonfigurationsdateien zu ändern.

ini_file module

Wenn Sie eine INI-Datei (Abschnitt zwischen eckige Klammern [] und key=value Paare) bearbeiten möchten, ist die Verwendung des Moduls ini_file am einfachsten.

Anmerkung

Weitere Informationen können Sie hier finden.

Das Modul erfordert Folgendes:

  • Der Wert der Sektion
  • Der Name der Option
  • Der neue Wert

Anwendungsbeispiel:

- name: change value on inifile
  community.general.ini_file:
    dest: /path/to/file.ini
    section: SECTIONNAME
    option: OPTIONNAME
    value: NEWVALUE

lineinfile Modul

Um sicherzustellen, dass eine Zeile in einer Datei vorhanden ist oder wenn eine einzelne Zeile in einer Datei hinzugefügt oder geändert werden sollte, sollten Sie das Modul linefile verwenden.

Anmerkung

Weitere Informationen können Sie hier finden.

In diesem Fall wird die zu ändernde Zeile in einer Datei mithilfe eines regulären Ausdrucks gesucht.

Um beispielsweise sicherzustellen, dass die mit SELINUX= beginnende Zeile in der Datei /etc/selinux/config den Wert enforcing enthält:

- ansible.builtin.lineinfile:
    path: /etc/selinux/config
    regexp: '^SELINUX='
    line: 'SELINUX=enforcing'

copy Modul

Wenn eine Datei vom Ansible-Server auf einen oder mehrere Hosts kopiert werden muss, ist es am besten, das copy-Modul zu verwenden.

Anmerkung

Weitere Informationen können Sie hier finden.

Hier kopieren wir myfile.conf von einem Ort an einen anderen:

- ansible.builtin.copy:
    src: /data/ansible/sources/myfile.conf
    dest: /etc/myfile.conf
    owner: root
    group: root
    mode: 0644

fetch Modul

Wenn eine Datei von einem Remote-Server auf den lokalen Server kopiert werden sollte, ist es am besten, das fetch-Modul zu verwenden.

Anmerkung

Weitere Informationen können Sie hier finden.

Das Modul macht das Gegenteil wie das copy-Modul:

- ansible.builtin.fetch:
    src: /etc/myfile.conf
    dest: /data/ansible/backup/myfile-{{ inventory_hostname }}.conf
    flat: yes

template Modul

Ansible und sein template-Modul verwenden das Jinja2-Vorlagensystem (http://jinja.pocoo.org/docs/), um Dateien auf dem Zielhosts zu generieren.

Anmerkung

Weitere Informationen können Sie hier finden.

Zum Beispiel:

- ansible.builtin.template:
    src: /data/ansible/templates/monfichier.j2
    dest: /etc/myfile.conf
    owner: root
    group: root
    mode: 0644

Sie können einen Validierungsschritt hinzufügen, wenn der Zieldienst dies zulässt (z. B. Apache mit dem Befehl apachectl -t):

- template:
    src: /data/ansible/templates/vhost.j2
    dest: /etc/httpd/sites-available/vhost.conf
    owner: root
    group: root
    mode: 0644
    validate: '/usr/sbin/apachectl -t'

Modul get_url

Um Dateien von einer Website oder FTP auf einen oder mehrere Hosts hochzuladen, verwenden Sie das get_url-Modul:

- get_url:
    url: http://site.com/archive.zip
    dest: /tmp/archive.zip
    mode: 0640
    checksum: sha256:f772bd36185515581aa9a2e4b38fb97940ff28764900ba708e68286121770e9a

Durch die Bereitstellung einer Prüfsumme wird die Datei nicht erneut heruntergeladen, wenn sie bereits am Zielort vorhanden ist und ihre Prüfsumme mit dem angegebenen Wert übereinstimmt.