2017-09-06 1 views
0

je le code suivant qui est de ne pas jeter une erreur, mais le fait est videParse ansible default utilisation supplémentaire var si regex ne

- shell: echo '{{ p }}' 
    register: results 

    - debug: 
     var: results 

    - set_fact: 
     myrepo: "{{ results.stdout | regex_search(regexp,'\\1') | default ({'0':'global'}) }}" 
    vars: 
     regexp: '(.*)/(.*)' 

est ici la sortie

TASK [command] ************************************************************************************************************************************************************************************** 
changed: [localhost] 

TASK [debug] **************************************************************************************************************************************************************************************** 
ok: [localhost] => { 
    "results": { 
     "changed": true, 
     "cmd": "echo 'tim'", 
     "delta": "0:00:00.095831", 
     "end": "2017-09-06 16:37:19.977023", 
     "rc": 0, 
     "start": "2017-09-06 16:37:19.881192", 
     "stderr": "", 
     "stderr_lines": [], 
     "stdout": "tim", 
     "stdout_lines": [ 
      "tim" 
     ] 
    } 
} 

TASK [set_fact] ************************************************************************************************************************************************************************************* 
ok: [localhost] 

TASK [debug] **************************************************************************************************************************************************************************************** 
ok: [localhost] => { 
    "myrepo": "" 
} 

La commande est ansible-playbook -i hosts -c local file.yml --extra-vars "p=tim" Je souhaite que myrepo soit global si les résultats de l'expression régulière sont vides

Répondre

1

Sans aucun paramètre default Le filtre est déclenché uniquement lorsque la valeur est Undefin éd. Mais le résultat de regexp sans correspondance est une chaîne vide, qui est pas Undefined. Vous pouvez définir boolean flag:

- set_fact: 
     myrepo: "{{ results.stdout | regex_search(regexp,'\\1') | default('global', boolean=True) }}" 
    vars: 
     regexp: '(.*)/(.*)'