Question:
I have an issue running an Ansible playbook with a set of private roles (that is, Ansible roles in a private git repository).
For example, I have a playbook that uses the role base
which depends on dep
, both of which are hosted in private git repositories. Running ansible-galaxy
fetches and installs all roles and dependencies as it should, but later ansible-playbook
fails at using the correct role name.
play.yml
1 2 3 4 |
- hosts: test roles: - role: base |
requirements.yml
1 2 3 4 |
- name: base src: ssh://git@10.0.0.1/ansible/role-base.git scm: git |
role-base/meta/main.yml
1 2 3 4 5 6 7 8 9 10 |
galaxy-info: author: Me description: Test Ansible role dependencies min_ansible_version: 1.9 platforms: Ubuntu dependencies: - name: dep src: ssh://git@10.0.0.1/ansible/role-dep.git scm: git |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ ansible-galaxy -r requirements.yml - executing: git clone ssh://git@10.0.0.1/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://git@10.0.0.1/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://git@10.0.0.1/ansible/role-dep.git', 'name': 'dep'} |
I tried using the alternative role-name system as the dependency:
1 2 3 |
dependencies: - role: "git+ssh://git@10.0.0.1/ansible/role-dep.git,,dep" |
Which is fine for ansible-galaxy
but still ansible-playbook
fails…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ ansible-galaxy -r requirements.yml - executing: git clone ssh://git@10.0.0.1/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://git@10.0.0.1/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 |
Is there a way to use role dependencies from private repos correctly?
Answer:
Looks like it’s a bug in the 1.9. I created a PR (https://github.com/ansible/ansible/pull/13802) but I doubt it’ll get merged as Ansible 2.0 has just been released.