diff --git a/lib/ansible/plugins/inventory/yaml.py b/lib/ansible/plugins/inventory/yaml.py index d9109177a9..4a7582a7bf 100644 --- a/lib/ansible/plugins/inventory/yaml.py +++ b/lib/ansible/plugins/inventory/yaml.py @@ -140,6 +140,9 @@ class InventoryModule(BaseFileInventoryPlugin): for host_pattern in group_data['hosts']: hosts, port = self._parse_host(host_pattern) self._populate_host_vars(hosts, group_data['hosts'][host_pattern] or {}, group, port) + if group == 'all': + for host in hosts: + self.inventory.add_host(host, group='ungrouped', port=port) else: self.display.warning('Skipping unexpected key (%s) in group (%s), only "vars", "children" and "hosts" are valid' % (key, group)) diff --git a/test/units/plugins/inventory/test_inventory.py b/test/units/plugins/inventory/test_inventory.py index 07934aa49b..ab6bdac84f 100644 --- a/test/units/plugins/inventory/test_inventory.py +++ b/test/units/plugins/inventory/test_inventory.py @@ -113,7 +113,7 @@ class TestInventory(unittest.TestCase): ) -class IniInventory(unittest.TestCase): +class TestInventoryPlugins(unittest.TestCase): def test_empty_inventory(self): inventory = self._get_inventory('') @@ -168,13 +168,21 @@ class IniInventory(unittest.TestCase): --- all: hosts: - test1 - test2 + test1: + test2: """)} C.INVENTORY_ENABLED = ['yaml'] fake_loader = DictDataLoader(inventory_content) im = InventoryManager(loader=fake_loader, sources=filename) self.assertTrue(im._inventory.hosts) + self.assertIn('test1', im._inventory.hosts) + self.assertIn('test2', im._inventory.hosts) + self.assertIn(im._inventory.get_host('test1'), im._inventory.groups['all'].hosts) + self.assertIn(im._inventory.get_host('test2'), im._inventory.groups['all'].hosts) + self.assertEqual(len(im._inventory.groups['all'].hosts), 2) + self.assertIn(im._inventory.get_host('test1'), im._inventory.groups['ungrouped'].hosts) + self.assertIn(im._inventory.get_host('test2'), im._inventory.groups['ungrouped'].hosts) + self.assertEqual(len(im._inventory.groups['ungrouped'].hosts), 2) def _get_inventory(self, inventory_content):