## TL;DR
The `-i` inventory or `--limit` pattern names hosts or groups that do not exist: a typo, an empty group, or the wrong inventory file. Run `ansible-inventory --list` to see reality, fix the pattern, and the play targets hosts.

## Error
```text
ansible: no hosts matched the inventory pattern
```

## Steps
1. Dump the inventory: run `ansible-inventory -i` on your inventory file with `--list` and inspect the groups and hosts. Expected: the real group names, which often differ from what the playbook assumes.
2. Compare the play's `hosts:` line (or `--limit`) against the dump. Expected: the typo or wrong group name is visible.
3. Check group membership: a correctly named but empty group also matches nothing. Expected: the group has members, or you know it is intentionally empty.
4. Verify you passed the right inventory file: plays default to `/etc/ansible/hosts` unless `-i` says otherwise. Expected: the inventory you edited is the one Ansible reads.
5. Re-run with the corrected pattern. Expected: the play executes against the intended hosts.

## When to use
- Plays exit immediately with "no hosts matched"
- New inventories or renamed groups
- `--limit` patterns that select nothing

## When not to use
- Hosts match but connections fail (SSH layer)
- Dynamic inventory returning empty (inventory plugin issue)

## Tool compatibility
- Ansible inventory (`ansible-inventory --list`); static and dynamic inventories

## Variant phrasings
### ansible limit matches no hosts
Check the limit pattern against `ansible-inventory --list`; limits filter the already-loaded inventory.

### play hosts group empty
The group exists but has no members; add hosts or target a different group.

## Why it happens
Ansible resolves the `hosts` pattern purely against the loaded inventory before doing anything else. A misspelled group, an empty group, or pointing at the wrong inventory file all resolve to the empty set, and Ansible refuses to run against nothing.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_de_bcdobB4ffChrStaP6OA
