linux - modules - ansible playbook example
Ansible: ¿Es posible buscar reemplazar una sola palabra? (3)
Nuevo módulo de replace disponible desde la versión 1.6
:
- replace:
dest=abc.conf
regexp=''horse''
replace=''dog''
backup=yes
En el módulo lineinfile , reemplaza la línea completa.
Si la línea es larga tengo que repetir la línea completa otra vez.
Supongamos que quiero reemplazar la única palabra en el archivo:
#abc.conf
This is my horse
este es el libro de jugadas:
- lineinfile: dest=abc.conf
state=present
regexp=''horse''
line=''This is my dog''
backup=yes
¿Hay alguna manera de lograr algo como sed ''s/horse/dog/g''
?
Puede usar las backreferences para recuperar otras partes (que no deben cambiarse) de la línea:
- lineinfile: dest=abc.conf
state=present
regexp=''^(.*)horse(.*)$''
line=''/1dog/2''
backup=yes
backrefs=yes
Si necesita realizar más operaciones de reemplazo en un bloque y tiene el archivo localmente, es posible que desee considerar el uso de la plantilla, que sustituye las variables en el archivo de plantilla y copia el archivo en el control remoto:
- template: src=/mytemplates/foo.j2 dest=/etc/file.conf
En el archivo local puede escribir una variable con sintaxis ansible como
{{variable}}
y se sustituirá si está en el alcance del script. Here los documentos.