Das Ansible ini_file-Modul erstellt keine Abschnitte, wenn keine Optionen angegeben sind

Das Ansible ini_file-Modul erstellt keine Abschnitte, wenn keine Optionen angegeben sind

Ich verwende Ansible, um Konfigurationsdateien im INI-Format zu erstellen. Wenn ich das ini_fileModul mit einem Options- und Wertepaar verwende, funktioniert es wie erwartet, zum Beispiel:

- name: Create configuration file
  ini_file:
    path: /tmp/test.conf
    state: present
    section: lol
    option: foo
    value: bar

Hätte ergeben:

[lol]
foo = bar

Ich möchte jedoch, dass ein bestimmter Abschnitt ohne Optionen vorhanden ist, etwa so:

- name: Create configuration file
  ini_file:
    path: /tmp/test.conf
    state: present
    section: lol

Es meldet jedoch lediglich okdie Aufgabe und fährt mit der nächsten fort.

Wenn ich den ausführlichen Modus verwende, kann ich Folgendes sehen:ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}

Wie kann ich das Modul verwenden, um Abschnitte ohne Optionen zu erstellen?

Antwort1

ini ist ein informeller Standard, aber meines Wissens nach macht ein Abschnitt ohne Option nicht viel Sinn. Das wäre meine erste Vermutung, warum dies in Ansible nicht implementiert ist.

Anstatt des ini-Moduls würde ich vorschlagen, dasLineInFile-Modulum sicherzustellen, dass ein Abschnitt in einer INI-Datei vorhanden ist.

Antwort2

Verwenden Sie zum Erstellen von Konfigurationsdateien Vorlagen. Das ist eine gute Methode. Verwenden Sie ini_filedas Modul nur zum Bearbeiten von Dateien. Vermeiden Sie das Line-In-File-Modul und verwenden Sie es nur als letztes Mittel.

Regel 0)Wenn möglich, verwenden Sie stattdessen ein Vorlagenmodul, das Ihnen die volle Kontrolle und Überprüfung gibt. Brian Coca (Senior Software Engineer, Ansible, Red Hat.)

Antwort3

Die Problemumgehung besteht darin, keinen Wert zuzulassen und den Code in der Option leer/kommentiert zu lassen.

- ini_file:
    dest: '/tmp/telegraf.conf'
    section: '[inputs.interrupts]'
    option: '  ## no configuration'
    allow_no_value: yes

Wenn Ihr Abschnitt jedoch bereits einen Wert enthält, müssen Sie ihn entfernen, state: absentwenn Sie einen Abschnitt ohne Optionen und Werte wünschen. Fügen Sie ihn dann hinzu. Tut mir leid, aber ich habe auch keine richtige Antwort gefunden.

verwandte Informationen