GNU/Linux >> Tutoriales Linux >  >> Linux

Ansible condicional basado en stdout de resultado?

¿Intenta verificar si es igual a una cadena en blanco o no?

- hosts: myhosts
  tasks:
  - name: echo hello
    command: echo hello
    register: result
  - command: somecommand {{ result.stdout }}
    when: result.stdout != ""
  - command: someothercommand
    when: result.stdout == ""

A partir de 2018, la forma recomendada de probar si la salida está vacía es simplemente:

when: result.stdout | length > 0

Esa es la forma pitónica de evaluar la verdad, cadenas nulas, vacías, listas vacías, todas se evalúan como falsas.

Otras alternativas más antiguas no recomendadas o incluso no funciona:

  • result.stdout != "" ¡no pasaría la verificación de pelusa ansible!
  • result.stdout | bool NO funcionará ya que la mayoría de las cadenas se evaluarán como falsas, solo los casos en los que devolvería verdadero es si stdout resulta ser uno de los true , yes ,... tipo de cadenas.
  • result.stdout solía funcionar pero ahora activa:

[ADVERTENCIA DE DESAPROBACIÓN]:al evaluar como una variable simple, este comportamiento desaparecerá y es posible que deba agregar |bool a la expresión en el futuro. Consulte también el conmutador de configuración CONDITIONAL_BARE_VARS. Esta función se eliminará en la versión 2.12. Las advertencias de desuso se pueden desactivar configurando deprecation_warnings=False inansible.cfg.`


Linux
  1. Deconstruyendo un libro de jugadas de Ansible

  2. Renovando mi emoción en el trabajo con Ansible

  3. Compruebe si existe la base de datos mysql, realice la acción según el resultado

  4. Ansible:sudo sin contraseña

  5. ¿Rotación de registro de stdout?

Las mejores distribuciones de Linux basadas en KDE

Introducción a la plataforma de automatización de Ansible

Instalar y configurar Ansible en Linux

Cómo usar Ansible para configurar Vim

Una introducción a los hechos de Ansible

Una breve introducción a Ansible Vault