el módulo lineinfile no funciona correctamente con el diccionario de variables Ansible
Mi código está eliminando todas las instancias de variables de socket en el archivo my.cnf y luego repoblando el archivo con la variable correcta y la ubicación del archivo.
La parte de eliminación funciona correctamente, sin embargo, la inserción se cierra después de la primera línea. Por lo tanto, insertará la línea correcta 'socket' directamente debajo de [mysqladmin] pero no se agregará a las secciones restantes del archivo.
- name: modify my.cnf setting
hosts: dbservers
remote_user: dbuser
become: yes
tasks:
- name: delete old socket definitions
lineinfile:
dest: /etc/mysql/my.cnf
regexp: "^socket "
state: absent
- name: add new socket variable
lineinfile:
dest: /etc/mysql/my.cnf
line: "{{ item.line }}"
insertafter: "{{ item.insertafter }}"
with_items:
- { line: 'socket = /mysql/run/mysqld.sock', insertafter: '^\[mysqladmin\]' }
- { line: 'socket = /mysql/run/mysqld.sock', insertafter: '^\[mysql\]' }
- { line: 'socket = /mysql/run/mysqld.sock', insertafter: '^\[mysqldump\]' }
- { line: 'socket = /mysql/run/mysqld.sock', insertafter: '^\[mysqld\]' }
En una nota adicional, me gustaría que haya una línea de espacio entre el encabezado y la nueva declaración de socket si eso es posible.
He intentado con la versión 2.0.2 y 2.2.0 y ninguno se está comportando como se esperaba.