Hi all,
I have a role that has a dependency on another role, however by default, Ansible will execute the dependency first. In my case, I do not want this to happen. I don’t want the role executed automatically at all. The role that is requiring this dependency will call it on its own within it’s own tasks. Right now, I am checking if a variable is defined, and if it is, then the tasks within the dependent role will run, but you still see the task line item in the playbook output. I would like to avoid it attempting to execute it altogether.
https://gist.github.com/lconnell/dfb1dc5383517b3bdd9c4832ae9027e2
It doesn't sound like you want a dependency at all.
Why not just stick the slack tasks in the relevant roles?
You're losing a lot of clarity trying to use a role to save a bit
of typing, and from the look of that gist you aren't even saving
much typing
I agree, I’m going to move them into the roles, especially since the slack role doesn’t really accomplish much.
With that being said, say the dependent role was a bunch of API calls to accomplish some task. In this case, I could call include role and call for a particular task within that role.
If I added it as a dependency to my calling role, I would end up in the same position. Am I just using Ansible and roles, the wrong way here?
How can you add a role as a dependency without it being called by default? Seems like that isn’t possible. Any alternative approaches?
Thanks for your response
Just add it in the playbook. Ansible reads all roles on the playbook level and includes their variables, the same as a role dependency in meta/main.yml
. That way you can run the specific roles using tags without executing the dependencies as well.
Right, that’s what I was originally doing and works just fine. My thought process whas to add it as a dependency so it would get installed via the galaxy command automatically. Without the role added as a dependency, it will need to be a manual process.
Thanks!