Я использую 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
если вам нужен раздел без опций и значения, то добавьте. Извините, но я также не нашел реального ответа.