GNU/Linux >> Linux Esercitazione >  >> Linux

Ansible condizionale basato sullo stdout del risultato?

Prova a controllare se è uguale a una stringa vuota 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 partire dal 2018, il modo consigliato per verificare se l'output è vuoto è solo:

when: result.stdout | length > 0

Questo è il modo pitonico di valutare verità, null, stringhe vuote, elenchi vuoti valutati tutti come falsi.

Altre alternative meno recenti sconsigliate o addirittura non funziona:

  • result.stdout != "" non supererebbe il controllo ansible-lint!
  • result.stdout | bool NON funzionerà poiché la maggior parte delle stringhe verrà valutata come False, solo i casi in cui restituirà true è se stdout risulta essere uno dei true , yes ,... tipo di stringhe.
  • result.stdout prima funzionava ma ora si attiva:

[AVVISO DI DEPRECAZIONE]:valutando come variabile semplice, questo comportamento scomparirà e potrebbe essere necessario aggiungere |bool all'espressione in futuro. Vedi anche CONDITIONAL_BARE_VARS configurationtoggle.. Questa funzione verrà rimossa nella versione 2.12. Gli avvisi di deprecazione possono essere disabilitati impostando deprecation_warnings=False inansible.cfg.`


Linux
  1. Decostruire un playbook Ansible

  2. Comprendere YAML per Ansible

  3. Compilazione condizionale in C++ basata sul sistema operativo

  4. Ansible:sudo senza password

  5. Android - Android è basato su Linux?

Le migliori distribuzioni Linux basate su KDE

Introduzione alla piattaforma di automazione Ansible

Installa e configura Ansible in Linux

Come usare Ansible per configurare Vim

Un'introduzione ai fatti Ansible

Una breve introduzione ad Ansible Vault