diff --git a/changelogs/fragments/group_by_localhost.yaml b/changelogs/fragments/group_by_localhost.yaml new file mode 100644 index 00000000000..81835d3fba3 --- /dev/null +++ b/changelogs/fragments/group_by_localhost.yaml @@ -0,0 +1,2 @@ +bugfixes: +- group_by - support implicit localhost (https://github.com/ansible/ansible/pull/41860) diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index 32053b4da53..216bd7f98e1 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -717,7 +717,12 @@ class StrategyBase: # the host here is from the executor side, which means it was a # serialized/cloned copy and we'll need to look up the proper # host object from the master inventory - real_host = self._inventory.hosts[host.name] + real_host = self._inventory.hosts.get(host.name) + if real_host is None: + if host.name == self._inventory.localhost.name: + real_host = self._inventory.localhost + else: + raise AnsibleError('%s cannot be matched in inventory' % host.name) group_name = result_item.get('add_group') parent_group_names = result_item.get('parent_groups', [])