GNU/Linux >> Tutoriels Linux >  >> Linux

Ansible conditionnel basé sur stdout du résultat?

Essayez de vérifier si équivaut à une chaîne vide ou non ?

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

Depuis 2018, la méthode recommandée pour tester si la sortie est vide est simplement :

when: result.stdout | length > 0

C'est la manière pythonique d'évaluer la vérité, null, les chaînes vides, les listes vides sont toutes évaluées comme fausses.

Autres alternatives plus anciennes non recommandées ou même ne fonctionne pas :

  • result.stdout != "" ne passerait pas la vérification ansible-lint !
  • result.stdout | bool ne fonctionnera PAS car la plupart des chaînes seront évaluées comme fausses, seuls les cas où il retournerait vrai sont si stdout se trouve être l'un des true , yes ,... sorte de chaînes.
  • result.stdout fonctionnait auparavant, mais se déclenche désormais :

[AVERTISSEMENT DE DÉPRÉCATION] :évaluant en tant que variable nue, ce comportement disparaîtra et vous devrez peut-être ajouter |bool à l'expression à l'avenir. Voir également CONDITIONAL_BARE_VARS configurationtoggle. Cette fonctionnalité sera supprimée dans la version 2.12. Les avertissements de dépréciation peuvent être désactivés en définissant deprecation_warnings=False inansible.cfg.`


Linux
  1. Le Résultat De Ls * , Ls ** Et Ls *** ?

  2. Vérifiez si la base de données mysql existe, effectuez une action basée sur le résultat

  3. Ansible :sudo sans mot de passe

  4. Rotation du journal de stdout ?

  5. Android - Est-ce qu'Android est basé sur Linux ?

Meilleures distributions Linux basées sur KDE

Introduction à la plate-forme d'automatisation Ansible

Installer et configurer Ansible sous Linux

Comment utiliser Ansible pour configurer Vim

Une introduction aux faits Ansible

Une brève introduction à Ansible Vault