2016-01-08 22 views
7

Ho un problema nell'esecuzione di un playbook Ansible con un set di ruoli privati ​​(ovvero ruoli Ansible in un repository git privato).Playbook anonimo che utilizza dipendenza da ruolo git privato

Ad esempio, ho un playbook che utilizza il ruolo base che dipende da dep, che sono entrambi ospitati in archivi di git privati. L'esecuzione di ansible-galaxy recupera e installa tutti i ruoli e le dipendenze come dovrebbe, ma successivamente ansible-playbook non riesce a utilizzare il nome del ruolo corretto.

play.yml

- hosts: test 
    roles: 
    - role: base 

requirements.yml

- name: base 
    src: ssh://[email protected]/ansible/role-base.git 
    scm: git 

role-base/meta/main.yml

galaxy-info: 
    author: Me 
    description: Test Ansible role dependencies 
    min_ansible_version: 1.9 
    platforms: Ubuntu 
dependencies: 
    - name: dep 
    src: ssh://[email protected]/ansible/role-dep.git 
    scm: git 

$ ansible-galaxy -r requirements.yml 
- executing: git clone ssh://[email protected]/ansible/role-base.git base 
- executing: git archive --prefix=base/ --output=/tmp/tmp4YKG7a.tar 
- extracting base to ansible-roles/base 
- base was installed successfully 
- adding dependency: dep 
- executing: git clone ssh://[email protected]/ansible/role-dep.git dep 
- executing: git archive --prefix=dep/ --output=/tmp/tmpT2YiW4.tar 
- extracting base to ansible-roles/dep 
- dep was installed successfully 

$ ansible-playbook play.yml 
ERROR: expected a role name in dictionary: {'scm': 'git', 'src': 'ssh://[email protected]/ansible/role-dep.git', 'name': 'dep'} 

Ho provato ad utilizzare il sistema di ruolo nome alternativo come la dipendenza:

dependencies: 
    - role: "git+ssh://[email protected]/ansible/role-dep.git,,dep" 

che va bene per ansible-galaxy ma ancora ansible-playbook fallisce ...

$ ansible-galaxy -r requirements.yml 
- executing: git clone ssh://[email protected]/ansible/role-base.git base 
- executing: git archive --prefix=base/ --output=/tmp/tmpTcvpDu.tar 
- extracting base to ansible-roles/base 
- base was installed successfully 
- adding dependency: dep 
- executing: git clone ssh://[email protected]/ansible/role-dep.git dep 
- executing: git archive --prefix=dep/ --output=/tmp/tmpd726OV.tar 
- extracting base to ansible-roles/dep 
- dep was installed successfully 

$ ansible-playbook play.yml 
ERROR: cannot find role in <pwd>/roles/git+ssh://[email protected]/ansible/role-dep.git,,dep or <pwd>/git+ssh://[email protected]/ansible/role-dep.git,,dep or <pwd>/ansible-roles/git+ssh://[email protected]/ansible/role-dep.git,,dep 

c'è un modo per utilizzare le dipendenze di ruolo da repository privato correttamente?

risposta

2

Sembra che si tratti di un bug nel 1.9. Ho creato un PR (https://github.com/ansible/ansible/pull/13802) ma dubito che verrà unito quando Ansible 2.0 è appena stato rilasciato.

+0

Ho letto che ci sarà un 1.9.5. – udondan

+0

1.9.5 è stato rilasciato ora. Anche se non riesco a vedere la tua correzione nelle note di rilascio: https://groups.google.com/forum/#!topic/ansible-announce/h6KTqCd2r1c – udondan

0

In role-base/meta/main.yml è possibile definire il nome del proprio ruolo come dep. Quindi lo invochi come:

- hosts: test 
    roles: 
    - role: dep 
+0

Non sto applicando il ruolo 'dep' a nessun host, dovrebbe essere inserito come dipendenza da' base', come si vede nell'esempio 'play.yml'. –

Problemi correlati