Hi,

I have a playbook with many roles plus a common role that is used by each 
other roles.
Basically, this common role is used because I have some tasks that are 
applicable for all roles, obviously, I don't want to rewrite these tasks as 
many time as I have a role.
Recently I encountered a case where I need a task to be played for all 
roles except only one. Therefore, I'm looking for a way to detect which 
role issued the call to the common role due to dependency so I could filter 
when to skip the task or not with a simple `when` statement.



├── roles
│   ├── common
│   │   ├── defaults
│   │   │   └── main.yml
│   │   └── tasks
│   │       ├── main.yml
│   │       └── test.yml
│   ├── first_role
│   │   ├── meta
│   │   │   └── main.yml
│   │   └── tasks
│   │       └── main.yml
│   └── second_role
│       ├── meta
│       │   └── main.yml
│       └── tasks
│           └── main.yml
└── site.yml



The only way I see at the moment to achieve that would be something like 
following:


# ./hosts[group1]
laptop ansible_host=127.0.0.1



# ./site.yml
---
- hosts: group1
  roles:
    - first_role



# ./roles/first_role/meta/main.yml
---
dependencies:
  - { role: common, parent_role: "first_role" }



# ./roles/common/defaults/main.yml
---
parent_role:



# ./roles/common/tasks/main.yml
---
- name: common task
  debug:
    msg: "I'm a common task"


- name: common task but not for all roles
  debug:
    msg: "I'm not a common task for all roles"
  when: parent_role != 'first_role'

  


1/ The fact that I need to hardcode the rolename is not something really 
clean I think.

2/ I'm obliged to declare a default variable for `parent_role` to avoid an 
error message :

"The error was: 'parent_role' is undefined"

Indeed, when my common role is played and was not called by my role that 
doesn't need to exclude the task from being played, I'll get this error 
since I do not pass the `parent_role` variable from the other roles.


Maybe someone know a nicer way to do this ?

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/7cd49c8c-99bf-4758-bb1c-129c80306abd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to