Я использую Ansible для создания файлов конфигурации в формате ini. Когда я использую модуль ini_file
с парой параметров и значений, он работает так, как ожидалось, например:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
option: foo
value: bar
В результате:
[lol]
foo = bar
Однако я хочу, чтобы определенный раздел существовал без параметров в нем, например :
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
Но все, что он делает, это сообщает ok
о задаче и переходит к следующей.
Когда я использую подробный режим, я вижу: ok: [localhost] => { "changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}
Как я могу использовать модуль для создания разделов без параметров ?
ini - неофициальный стандарт, но, насколько я понимаю, нет особого смысла в разделе без опции. Это будет мое первое предположение, почему это не реализовано в Ansible.
Вместо того, чтобы использовать ini
-модуль, я бы предложил использовать модуль lineinfile , чтобы гарантировать, что раздел присутствует в ini-файле.
Для создания файлов конфигурации используйте шаблоны, это правильный способ. Используйте модуль ini_file
только для редактирования файлов. Старайтесь избегать использования модуля lineinfile, используйте его в крайнем случае.
правило 0) Если возможно, используйте вместо этого модуль шаблона, это дает вам полный контроль и проверка. Брайан Кока (старший инженер-программист, Ansible, Red Hat)
обходным решением является использование без значения, с пустым/комментарным кодом в опции.
- ini_file:
dest: '/tmp/telegraf.conf'
section: '[inputs.interrupts]'
option: ' ## no configuration'
allow_no_value: yes
Но если в вашем разделе уже есть значение, вы должны удалить его состоянием: отсутствует
, если вы хотите раздел без параметров и значения. затем добавьте.
Извините, но я также не нашел реального ответа.