marcador de desactivación de archivo de bloqueo ansible


11

Soy nuevo en ansible, sin embargo, pude usar con éxito la función blockinfile . Sin embargo, no puedo entender cómo evitar que se inserten marcadores. Leí la documentación pero no parecía describirla.

Esto es lo que aparece en cada archivo en el que blockinfile escribe.

# BEGIN ANSIBLE MANAGED BLOCK
# END ANSIBLE MANAGED BLOCK

Respuestas:


14

Eché un vistazo al blockinfilemódulo original en github : antes de Ansible 2 no estaba incluido con Ansible. Resulta que los marcadores se usan realmente para identificar el bloque :

Eso parece un comportamiento intencionado. Reemplaza todas las líneas rodeadas por los marcadores de bloque con el contenido especificado.

Eso significa que si elimina los marcadores, blockinfileya no podrá identificar el bloque, lo que hará que el módulo agregue el bloque al archivo cada vez que ejecute el libro de jugadas.

Por lo tanto, los marcadores antes y después del bloque escrito son un requisito del módulo y no se pueden eliminar.

Si este es un libro de jugadas de una sola vez que nunca se ejecutará nuevamente, puede ejecutar el lineinfilemódulo con la state: absentopción posterior.


Vieja respuesta:

Según los documentos, el blockinfilemódulo tiene una markeropción.

¿Intentaste configurarlo en una cadena vacía o False?

blockinfile:
    dest: /var/www/html/index.html
    marker: ""

o

blockinfile:
    dest: /var/www/html/index.html
    marker: False

1
Perdón por la declaración incompleta anterior, alguien llamó a la puerta y tuve que correr. Intenté estas ideas ayer. marker: "" - Agrega una línea en la parte superior e inferior del archivo. Falso: solo agrega la palabra falso en la parte inferior y superior del archivo. ¿Alguna otra idea?
Nik

2
Actualicé mi respuesta. Los marcadores son realmente requeridos por el módulo gthe mismo e incluso si pudieras, probablemente no quieras eliminarlos. Ver respuesta actualizada para más detalles.
udondan

0

hice algo como esto ...

- name: Insert someline in somefile.sh
    blockinfile:
      path: /usr/share/somefile.sh
      block: -sometext
      insertafter: '-XX:originaltext'
      marker: ""
      backup: yes


 - name: Remove blank lines blockinfile put in
    lineinfile :
     path: /usr/share/somefile.sh
     state: absent
     regexp: '^$'
  • el marcador "" insertará líneas en blanco en el archivo
  • lineinfile los eliminará (junto con todas las demás líneas en blanco) ¡así que ten cuidado!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.