Utilizo Ansible para crear archivos de configuración en formato ini. Cuando uso el ini_file
módulo con par de opción y valor, funciona como se esperaba, por ejemplo:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
option: foo
value: bar
Resultaría con:
[lol]
foo = bar
Sin embargo, quiero que exista una sección específica sin opciones, así:
- name: Create configuration file
ini_file:
path: /tmp/test.conf
state: present
section: lol
Pero lo único que hace es informar ok
sobre la tarea y pasar a la siguiente.
Cuando uso el modo detallado puedo ver:ok: [localhost] => {"changed": false, "msg": "OK", "path": "/tmp/test.conf", "state": "absent"}
¿Cómo puedo usar el módulo para crear secciones sin opciones?
Respuesta1
ini es un estándar informal, pero según tengo entendido, no tiene mucho sentido una sección sin una opción. Esa sería mi primera suposición de por qué esto no está implementado en Ansible.
En lugar de usar el ini
-Module, sugeriría usar elmódulo de archivo de líneapara garantizar que una sección esté presente en un archivo ini.
Respuesta2
Para crear archivos de configuración, utilice plantillas, es una forma adecuada. Utilice ini_file
el módulo solo para editar archivos. Intente evitar el módulo lineinfile, utilícelo como último recurso.
regla 0)Si es posible, utilice el módulo de plantilla, ya que le brinda control y verificación totales. Brian Coca (ingeniero de software sénior, Ansible, Red Hat).
Respuesta3
La solución alternativa es no permitir ningún valor, con la opción de código en blanco o comentado.
- ini_file:
dest: '/tmp/telegraf.conf'
section: '[inputs.interrupts]'
option: ' ## no configuration'
allow_no_value: yes
Pero si ya hay un valor en su sección, debe eliminarlo state: absent
si desea una sección sin opciones ni valor. Luego añade. Lo siento, pero tampoco encontré una respuesta real.