Cannot define a role dependency with source control repository url

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!

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:

http://docs.ansible.com/galaxy.html#advanced-control-over-role-requirements-files

Thanks!

Ok, thank you.

I will wait for the 1.8 to be released then…

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:

or

dependencies:

RTFM