"check_mode" without physical access to hosts

In a project for which I have created an ansible-based installer the productive system is big, i.e. about 100 hosts.

For organising my deployments I keep inventory files for all target systems and I make extensive use of groups.

Now after a productive deployment (which I don’t do personally) I got the feedback that tasks were executed on hosts on which they were not supposed to.

Since I have no physical access to that environment while part of my deployment’s logic is implemented in the inventory files, I would like to simulate a run against the productive inventory on my development host.

I have found that the ‘–check’ option does not help here since ansible will always try to see whether something has changed on the respective target hosts.

So what I think I need would be an option to tell ansible “don’t even bother to connect to hosts, consider everything changed”.

Is there a way to do this?

check mode tells the module 'not change anything', not to not execute
at all, as it needs to figure out current state before it can decide
if 'changed' is true or not (modules that don't support check mode
exit right away).

to 'not connect' to a host, just don't include it in the target (via
hosts:/--limit or inventory).

From this I read that there is no way to simulate a playbook against a given inventory without connecting to the inventory’s hosts.

Let me explain why this would make sense for me. Although this is may be a rather exotic case, there may be others who have the same problem?

The point is that through group and host variables some installation steps are configured to be executed on some hosts while not on others.

On a software system with lots of different services that are distributed over the target system’s host associating services (i.e. programs to be installed and configured) to groups. Hence there are a large number of groups, and each host is in a number of them - roughly speaking as many as it will be running services in the end.

Because there are quite a few permutations of groups-per-host searching for bugs in the inventory, var files, playbooks, roles etc. can be difficult and confusing, and since the productive system with its about 100 hosts is by far the most complicated it would be good to dry-run that environment at home without physical access to the machines.

Running an installation with a different inventory will not really help here.

do you just want a --sytnax-check? check_mode is not designed for this use case.

I normally use 'mock inventories' when testing playbooks (they all
have ansible_host point to localhost or local vms).

No syntax check. Just a “print what I would do” without actually connecting to the hosts.
Duplicating the inventory and mapping everything to localhost would probably help, but this is of course not convenient.
If it remains as the only option, this is what I will have to do.

it is hard for a module to know 'what it would do' w/o checking the
current state of affairs.