Модуль Ansible ini_file не создает разделы, если не указаны параметры

Модуль Ansible ini_file не создает разделы, если не указаны параметры

Я использую Ansible для создания файлов конфигурации в формате ini. Когда я использую ini_fileмодуль с парой option и value, он работает так, как и ожидалось, например:

- 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"}

Как использовать модуль для создания разделов без опций?

решение1

ini — это неформальный стандарт, но, насколько я понимаю, в разделе без опции нет особого смысла. Это было бы моей первой догадкой, почему это не реализовано в Ansible.

Вместо использования -Module iniя бы предложил использоватьмодуль lineinfileчтобы убедиться, что раздел присутствует в INI-файле.

решение2

Для создания файлов конфигурации используйте шаблоны, это правильный способ. Используйте ini_fileмодуль только для редактирования файлов. Старайтесь избегать модуля lineinfile, используйте его в крайнем случае.

правило 0)Если это вообще возможно, используйте вместо этого модуль шаблона, он дает вам полный контроль и проверку. Брайан Кока (старший инженер-программист, Ansible, Red Hat.)

решение3

Обходной путь — использовать параметр allow no value с пустым/закомментированным кодом в параметре.

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

Но если в вашем разделе уже есть значение, то вам придется удалить его, state: absentесли вам нужен раздел без опций и значения, то добавьте. Извините, но я также не нашел реального ответа.

Связанный контент