Cannot define a role dependency with source control repository url

951 views
Skip to first unread message

Vincent Jestin

unread,
Sep 18, 2014, 5:45:11 AM9/18/14
to ansible...@googlegroups.com
Hello,

This might be a dummy question but I'm stuck with role dependency definition in ansible.

I'd like to use a role defined in a git repository as a dependency for another role. In the doc I can see that:

Role dependencies can also be installed from source control repos or tar files, using a comma separated format of path, an optional version (tag, commit, branch etc) and optional friendly role name (an attempt is made to derive a role name from the repo name or archive filename):
---
dependencies:
- { role: 'git+http://git.example.com/repos/role-foo,v1.1,foo' }
- { role: '/path/to/tar/file.tgz,,friendly-name' }

I tried with a public github repo, let say something like https://github.com/myuser/my-role-test.git

I put this in the meta/main.yml file:

dependencies:
  - { role: 'git+https://github.com/myuser/my-role-test.git,master,test-dep' }

Then I run my playbook, and I get the following error:

ERROR: cannot find role in /var/lib/awx/projects/_1__myproject/roles/git+https:/github.com/myuser/test.git,master,test-dep or /var/lib/awx/projects/_1__myproject/git+https:/github.com/myuser/test.git,master,test-dep or /etc/ansible/roles/git+https:/github.com/myuser/test.git,master,test-dep

(Here you can guess I'm using tower. But for the purpose of this issue, I'm trying to run the playbook directly with ansible-playbook command.)

When I see this error message, I guess that the git url is just parsed like a directory structure. I've tried several url format like git@, git+ssh://, ssh://... No success.

So I had a look at ansible source code to figure out how the role value was parsed (play.py). I'm not a python expert however I can just see a _get_role_path method dealing exclusively with filesystem path stuff.

Is this "role dependency from git repo" feature real?

On the other side I can see this recent thread with famous people here talking about this feature...

I'm probably missing something. Can someone help?

Thank you!

James Cammarata

unread,
Sep 18, 2014, 9:19:52 AM9/18/14
to ansible...@googlegroups.com
Hi Vincent,

Right now, you can install roles and dependencies via the ansible-galaxy command, however when those roles are executed via ansible-playbook, they need to be local. So I would recommend installing them first via the ansible-galaxy command. If you're not familiar with it, please see this documentation page on how to install roles directly from git repositories:


Thanks!

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/5964e584-6f1f-43fa-b211-188deaf02819%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Vincent Jestin

unread,
Sep 18, 2014, 11:36:36 AM9/18/14
to ansible...@googlegroups.com
Ok, thank you.

I will wait for the 1.8 to be released then...

ZillaYT

unread,
Oct 3, 2017, 1:55:47 PM10/3/17
to Ansible Project
I'm using ansible v2.3.2.0. How come I still can't use git repos for role dependencies in a role's meta/main.xml file? I'm using the OP's syntax.

dependencies:
 
- { role: 'git+http://git.example.com/repos/role-foo.git'}

or

dependencies:
 
- { role: 'git+ssh://git.example.com:9999/repos/role-foo,v1.1,foo' }

ZillaYT

unread,
Oct 3, 2017, 2:09:12 PM10/3/17
to Ansible Project

ZillaYT

unread,
Oct 3, 2017, 2:09:30 PM10/3/17
to Ansible Project
Reply all
Reply to author
Forward
0 new messages