Ich verwende Ansible, um Konfigurationsdateien im INI-Format zu erstellen. Wenn ich das ini_file
Modul 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 ok
die 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_file
das 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: absent
wenn 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.