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!