'How to use a different entry point in ansible roles
Based on ansible documentation for roles I can make multiple role entry points by creating files:
playbooks/roles/my_role/tasks/main.yml
playbooks/roles/my_role/tasks/other.yml
And I can add the default main.yml role using this code:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role
But how can I use the other.yml entrypoint?
I would expect it to be something like this, but none of those work:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role:other
- my_role/other
- my_role.other
Solution 1:[1]
The roles directive in a playbook loads the default "entrypoint" of the role, i.e. tasks/main.yml. Other tasks files like tasks/others.yml can be loaded from it based on conditions, tags, etc.
However if you do want to load a specific file from a role, you can use the include_role or import_role modules.
E.g.:
# invoke role's default "entrypoint" (main.yml)
roles:
- my_role
tasks:
# include the role, but tasks from other.yml
- include_role:
name: my_role
tasks_from: other.yml
Do note the order of execution mentioned in the documentation you linked.
Another "hacky" option is to use include|import_tasks modules which works just like including a simple "tasks" file (losing the roles functionality), if it meets your requirement.
tasks:
- include_tasks: path/to/my_role/tasks/other.yml
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | seshadri_c |
