2017-10-06 2 views
0

J'ai une tâche ansible et je veux enregistrer plusieurs variables à l'intérieur, comment puis-je y parvenir? Il ne semble pas qu'une liste ou une chaîne séparée par des virgules fonctionnerait.Ansible enregistrer plusieurs variables dans une seule tâche

Je veux faire quelque chose comme ceci:

- name: my task 
    module_name: 
    <some more params> 
    register: [var1, var2] 

Si j'ajoute register: var1 \n register: var2 alors que le second get est enregistré. OK, je pense que ma confusion a menti dans le bit comment fonctionne l'enregistrement variable. Ainsi, lorsque vous faites register: any_var_name, la variable nouvellement créée contient la totalité de la sortie de la tâche. Ensuite, vous pouvez y accéder comme vous le souhaitez dans la réponse acceptée. Pourquoi ne pouvez-vous pas le faire en plusieurs étapes?

+1

Quelle est la raison pour cela? –

+0

Je veux vérifier les valeurs de plusieurs valeurs dans une sortie de la tâche 'ma tâche' dans une tâche suivante – eddyP23

Répondre

1

Non, ce n'est pas possible.

Ansible (à partir de la version actuelle 2.4) ne permet pas d'enregistrer une sortie partielle du module (ou de plusieurs parties différentes).

Vous pouvez enregistrer uniquement le résultat complet et en extraire des parties dans les tâches à suivre.

Par exemple, si vous voulez obtenir std_out et std_err du module command, vous feriez deux tâches:

- command: myscript.sh 
    register: cmd_res 
- set_fact: 
    std_out: "{{ cmd_res.stdout }}" 
    std_err: "{{ cmd_res.stderr }}" 

Et vous ne pouvez pas le faire en seul coup, comme ceci:

- command: myscript.sh 
    # this code does not work! 
    register: 
    std_out: result.stdout 
    std_err: result.stderr 
0

- name: my task 
    module_name: 
    <some more params> 
    register: var1 

    - set_fact: 
     var2: "{{var1}}"