Soit le fichier mon_fichier suivant :
$ cat mon_fichier
Bonjour
{{ MOTiF }}
MOTiF
Au revoir
Soit la variable VALEUR (définie quelquepart dans ansible) valant framboise.
Alors, pour remplacer la chaîne MOTiF par le contenu de la variable VALEUR, je peux utiliser le module Ansible suivant :
- name: 'Replace values in file'
replace:
path: '{{ MY_PATH }}/mon_fichier'
regexp: '{{ item.mask }}'
replace: "{{ item.value }}"
with_items:
- { mask : "^(.*)MOTiF(.*)$", value : '\1{{ VALEUR }}\2'}
Le fichier mon_fichier devient alors :
$ cat mon_fichier
Bonjour
{{ framboise }}
framboise
Au revoir
Et si la chaîne à remplacer contient des accolades, et vaut par exemple {{ MOTiF }}, il faut échapper celles-ci :
- name: 'Replace values in file'
replace:
path: '{{ MY_PATH }}/mon_fichier'
regexp: '{{ item.mask }}'
replace: "{{ item.value }}"
with_items:
- { mask : "^(.*)\\{\\{ MOTiF \\}\\}(.*)$", value : '\1{{ VALEUR }}\2'}
Le fichier mon_fichier devient cette fois :
$ cat mon_fichier
Bonjour
framboise
MOTiF
Au revoir