I'm new to Ansible, and trying to wrap my head around the variety of ways 
to organize playbooks and achieve certain tasks in a DRY way, without 
duplicating too much logic in several places.

Right now I'm trying to find a way in which I could have with_fileglob 
consolidate 
files of a certain pattern from all of the roles that a host belongs to. 
Specifically, some roles contain apt keys, some roles don't.

The way I envisioned setting this up is as follows. First, the role 
hierarchy:

roles/
  common/
    files/
      ... # no apt keys for this role
  db/
    files/
      ... # no apt keys for this role
  rabbitmq/
    files/
      apt_keys/
        some_rabbitmq_specific_key.asc
  web/
    files/
      apt_keys/
        some_web_specific_key.asc
  
The task in roles/common/tasks/main.yml:

- name: add apt keys
  apt_key: file="{{ item }}"
  sudo: true
  with_fileglob:
    - apt_keys/*.asc

In my ideal world, if a host belongs to common and web, with_fileglob would 
add some_web_specific_key.asc. If a host belongs to common, db and rabbitmq, 
it would add some_rabbitmq_specific_key.asc. 

As you've probably guessed from the fact that I'm writing this post, this 
approach doesn't work. The task, placed inside common, is simply skipped, 
apparently because the common role contains no apt keys (and even if it 
did, it would still ignore the keys in rabbitmq and web).

Is this type of cross-role file aggregation possible? I can sort of see why 
it wouldn't be, though in my current circumstance it would seem very useful.

The deeper rationale here is that I want a certain other task to get run 
after *all* the apt keys that apply to a host through *all of its role 
memberships* have been added. Had the approach above worked, I would have 
simply placed this task right after the apt_key task in 
common/tasks/main.yml, but since it doesn't, I don't know how to achieve 
this. Suggestions?

-- 
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/d8dfcf1b-501c-4808-87a5-2ffc8153b05e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to