host iterate on host rather on groups

Hello,

I tring to write a role that manage installation of application modules on servers.
All modules must be installed in one time: installtion command takes list of modules to install.

My inventory file list all servers that must receive a module (module are groups) =>

module1:
hosts:
host_1.xxx.com:
host_2.xxx.com:

module2:
hosts:
host_1.xxx.com:

module3:
host_2.xxx.com:

But by default playbook iterate on groups not hosts.

  1. i got host_1.xxx.com and host_2.xxx.com for installtion module1
  2. i got host_1.xxx.com:for installtion of module2
  3. i got host_2.xxx.com for installtion of module3

But i want:

  1. host_1.xxx.com for installation of module1 and module2
  2. host_2.xxx.com for installation of module1 and module3

note: organize by group is important because some conifguration’s informations are passed to host_1.xxx.com about host_2.xxx.com modules and vice versa.

How can iterate on hosts and run install command with list of groups listed in inventory.

In other words i must iterate by host not by groups.

How to do that ?

Many thanks in andvance for any help

It’s going to be something close to the following. No loops necessary.
Since I don’t know what your module installation task looks like, I just
made one up and wrapped it inside a debug task.

---
- name: Install modules on hosts matching module groups
  hosts: module_*
  tasks:
    - name: Install modules by host's groups
      ansible.builtin.debug:
        msg: |
          - name: Module install task
            module_installer:
              modules: "{{ modules }}"
      vars:
        modules: "{{ group_names | select('match', 'module_.*') }}"