2016-11-09 3 views
2

Comment puis-je spécifier un rôle Ansible et son argument dans le rôle dépendant dependency list, qui sont tous deux stockés dans des référentiels Git distincts?Comment puis-je spécifier un rôle Ansible et son argument dans la liste de dépendances d'un autre rôle?

Prenons l'exemple incorrect suivant où le rôle tomcat dépend de la version 8 du rôle openjdk:

# Role tomcat at git+http://source/ansible/roles/tomcat. 
# File tomcat/meta/main.yml. 
--- 
dependencies: 
    # When it retrieves role tomcat, ansible-galaxy retrieves role openjdk. 
    - src: git+http://source/ansible/roles/openjdk 
    version: master 

    # ansible-playbook invokes role openjdk, but fails to set openjdk_version. 
    - { role: openjdk, openjdk_version: 8 } 

Quelle est la bonne façon de préciser le rôle de la dépendance openjdk?

Ansible Version Galaxy:

[email protected]:~/Projects/deployer$ ansible-galaxy --version 
ansible-galaxy 2.3.0 (devel 947e0f264e) last updated 2016/11/10 11:45:16 (GMT -400) 
    lib/ansible/modules/core: (detached HEAD 2584fca0ae) last updated 2016/11/04 12:08:44 (GMT -400) 
    lib/ansible/modules/extras: (detached HEAD a1dcbf9ce5) last updated 2016/11/04 12:08:44 (GMT -400) 
    config file = /home/derek/Projects/deployer/ansible.cfg 
    configured module search path = Default w/o overrides 

Ansible Version Playbook:

ansible-playbook 2.3.0 (devel 947e0f264e) last updated 2016/11/10 11:45:16 (GMT -400) 
    lib/ansible/modules/core: (detached HEAD 2584fca0ae) last updated 2016/11/04 12:08:44 (GMT -400) 
    lib/ansible/modules/extras: (detached HEAD a1dcbf9ce5) last updated 2016/11/04 12:08:44 (GMT -400) 
    config file = /home/derek/Projects/deployer/ansible.cfg 
    configured module search path = Default w/o overrides 
+1

Je définiriez comme une variable de rôle dans 'var/main.yml'. Est-ce que cela fonctionne pour vous? –

+0

Btw, accotding à ce lien: https://galaxy.ansible.com/intro#meta votre fichier est correct –

+0

Voir http://docs.ansible.com/ansible/galaxy.html#dependencies que j'ai inclus dans ma question . Ni «ansible-galaxy» ni «ansible-playbook» ne se plaignent de la syntaxe, mais 'ansible-playbook' échoue finalement à se plaindre que' openjdk_version' n'est pas défini. J'ai également pensé à le placer dans 'vars/main.yml' comme une solution de contournement, cependant. –

Répondre

1

Comme je ne pouvais pas trouver un moyen de passer openjdk_version comme argument pour le rôle openjdk, je place suivi Andrey Rusanov « s suggestion et ajouté la variable openjdk_version à vars/main.yml du rôle tomcat:

--- 
openjdk_version: 8 

meta/main.yml ne contient maintenant que la dépendance src pour openjdk:

# From role tomcat at git+http://source/ansible/roles/tomcat. 
# File tomcat/meta/main.yml. 
--- 
dependencies: 
    - src: git+http://source/ansible/roles/openjdk 
    version: master