O módulo lineinfile não está funcionando adequadamente com o dicionário de variáveis Ansible
Meu código está removendo todas as instâncias de variáveis de soquete no arquivo my.cnf e, em seguida, preenchendo novamente o arquivo com a variável e o local do arquivo corretos.
A parte de exclusão está funcionando corretamente, no entanto, a inserção é encerrada após a primeira linha. Portanto, ele inserirá a linha 'socket' correta diretamente em [mysqladmin], mas não será adicionada às seções restantes do arquivo.
- 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\]' }
Em uma nota adicional, eu gostaria que houvesse uma linha de espaço entre o cabeçalho e a nova declaração de soquete, se isso for possível.
Eu tentei com a versão 2.0.2 e 2.2.0 e nenhum deles está se comportando como planejado.