Saltar al contenido

Ansible – Comprobar si string existe en el archivo

Te recomendamos que pruebes esta respuesta en un ambiente controlado antes de enviarlo a producción, saludos.

Solución:

Es complicado. el módulo lineinfile está diseñado específicamente para modificar el contenido de un archivo, pero también puede usarlo para una verificación de validación.

- name: find
  lineinfile: 
    dest: /etc/passwd
    line: "user"
  check_mode: yes
  register: presence
  failed_when: presence.changed

check_mode asegura que nunca actualiza el archivo.
register guarda la variable como se indica.
failed_when le permite establecer la condición de falla, es decir, agregando el usuario porque no se encontró en el archivo.

Hay múltiples iteraciones de esto que puede usar en función de lo que desea que sea el comportamiento. documentos de lineinfile en particular relacionados con state y regexp debería permitirle determinar si la presencia o ausencia es o no una falla, etc., o puede hacer lo mismo not presence.changed etc.


Probablemente registraría y evaluaría una variable.

El siguiente libro de jugadas simple funciona para mí:

- hosts: localhost
  tasks:

  - name: read the passwd file
    shell: cat /etc/passwd
    register: user_accts

  - name: a task that only happens if the user exists
    when: user_accts.stdout.find('hillsy') != -1
    debug: msg="user hillsy exists"

Si quieres fallar si no hay ningún usuario:

tasks:
  - shell: grep username /etc/passwd
    changed_when: false

Por defecto shell el módulo fallará si el código de salida del comando no es cero.
Entonces te dará ok si el nombre de usuario está allí y falla en caso contrario.
yo suelo changed_when: false para prevenir changed estado al grepping.

Si piensas que ha sido de provecho este artículo, sería de mucha ayuda si lo compartes con el resto seniors así nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *