es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comando Ansible para obtener el historial de yum

Hola, aquí hay una traducción al español del texto proporcionado:

¡Hola a todos! Soy nuevo en Ansible y estoy buscando una forma de obtener la última fecha de actualización de yum y escribirla en un archivo de texto (que más tarde formará parte de una página web). Conozco el comando sin procesar:

hostname && yum history | awk 'NR==5 { print $7, $8 }'

y esto funciona correctamente cuando se ejecuta desde un shell bash regular (en versiones de RHEL 7 y 8). Sin embargo, cuando intento poner esto en un comando ad-hoc de ansible, obtengo errores:

ansible -m shell -a "hostname && yum history | awk 'NR==5 { print $7, $8 }'" localhost
localhost | FAILED | rc=1 >>
server: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:               ^ syntax error
awk: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:                  ^ syntax error
awk: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:                   ^ unexpected newline or end of stringnon-zero return code

¿Alguna sugerencia? Supongo que escapar algunos caracteres puede ayudar, pero en este momento no estoy seguro de qué es necesario escapar.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para evitar el error de sintaxis en el comando ad-hoc, puedes escapar las comillas y los signos de dólar usando barras invertidas. El comando actualizado debería verse así:

    ansible -m shell -a "hostname && yum history | awk 'NR==5 { print \$7, \$8 }'" localhost

    Esto debería ejecutar correctamente el comando awk y mostrar la última fecha de actualización de yum en la terminal. Para escribirlo en un archivo de texto, puedes usar el módulo shell dentro de un playbook de ansible de la siguiente manera:

    - name: Obtener la última fecha de actualización de yum
      hosts: localhost
      tasks:
        - name: Guardar la fecha en un archivo
          shell: "hostname && yum history | awk 'NR==5 { print \$7, \$8 }' > /ruta/al/archivo.txt"
    

    Esto creará un archivo de texto en la ruta especificada con la última fecha de actualización de yum. Luego puedes incluir este playbook como parte de tu proyecto de ansible más grande.

Comments are closed.