Passer Ansible variables d'un rôle (s'exécutant sur un hôte) à un autre rôle en cours d'exécution sur un autre hôte dans le même système de jeu

J'ai un playbook qui s'exécute différents rôles sur des hôtes différents.
Est-il possible de passer une variable à partir d'un rôle d'exécutant sur un hôte à un autre rôle sur un autre ordinateur hôte exécutant dans le même système de jeu exécuter? Ou de toute solution de contournement ?

playbook
   host1
     role1
       here I get some variables: var1 var2 ...etc
   host2
     role2
       here I need to use var1 var2 ... etc from the above host/role

La tâche dans role1 qui définit la variable db ressemble à ceci:

- shell: cd /ACE/conf && grep ^db.url local1.properties | awk -F/'{print $4}' | awk -F? '{print $1}'
  register: db

Mise à JOUR: Sur le premier hôte les valeurs sont dynamiques, c'est comme un fichier de configuration qui est toujours mis à jour. Après je stocker les valeurs dans des variables sur host1 avec le role1 je puis passer à la host2, exécutez la role2 et faire des trucs avec les valeurs de variables stockées par host1.

J'ai essayé avec hostvars:

{{ hostvars.LBL.db.stdout }}
{{ hostvars['LBL']['db'] }}
{{ hostvars['LBL']['db']['stdout'] }}

et je reçois l'erreur:

in get_variables raise Exception("host not found: %s" % hostname) Exception: host not found: LBL

LBL existe dans d'hôtes que sur elle je lance le premier rôle

J'ai mis une variable sur un hôte et je veux que la variable à la disposition de l'autre hôte. Tout cela dans un seul playbook. Peut-il être fait ?

hostvars ne fonctionne pas à l'utiliser comme ceci:

---   
- name: test hostvars host1
  hosts: LBL
  tasks:
    - command: "ls /bin"
        register: ls_out

- name: test hostvars host2
  hosts: LM
  tasks:
    - debug:
        var: "{{ hostvars['LBL']['ls_out']['stdout'] }}"

erreur:

fatal: [10.104.148.138] => host not found: LBL

/etc/ansible/hosts

[root@NS1 ansible]# cat /etc/ansible/hosts
[LBL]
10.104.148.136
[LM]
10.104.148.138
Vous pouvez poster la partie de la playbook qui définit les variables var1/2? hostvars.LBL.* devraient ai travaillé. Si le var1/2 sont définis dans le fichier d'inventaire, puis poster aussi.
C'est le premier rôle - name: bla bla shell: cd /ACE/conf && grep ^db.url local1.properties | awk -F/ '{print $4}' | awk -F? '{print $1}' register: db Si je fais l'echo {{ n'.stdout }} dans le même rôle, il fonctionne très bien. Je n'utilise pas d'un inventaire. Dans le deuxième rôle si je ne shell: echo "{{ hostvars['LBL']['db']['stdout'] }}" il donne l'erreur
"hostvars ne fonctionne pas à l'utiliser comme ceci:" ce n'est pas possible. Ces deux tâches fonctionnent très bien pour moi et imprimer ls_out comme prévu. Posté mauvais code ou quelque chose...? Veuillez elborate sur "pas de travail"
J'ai ajouté la sortie de ce single playbook à la question ci-dessus. Ansible version est 1.9.0.1 ... même sortie pour 1.8.4

OriginalL'auteur ady8531 | 2015-03-31