2

如何使用 ansible API 获取主机列表。我想要使​​用 ansible python API 的以下命令的等效项。

ansible all --list-host

编辑:

这是正确的方法吗?

inventory = ansible.inventory.Inventory(options.inventory)
for h in inventory.host_list():
    print h
4

1 回答 1

1

像这样:

import json
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager

loader = DataLoader()

inventory = InventoryManager(loader=loader, sources=['PATH_TO_INVENTORY_FILE'])

variable_manager = VariableManager(loader=loader, inventory=inventory)

myhosts = variable_manager.get_vars()['groups']['all']

请注意 PATH_TO_INVENTORY_FILE 可以是绝对的或相对于当前目录的,因此您可以执行类似“./inventory/hosts”的操作

还要注意“所有”主机都将聚集在那里。如果您想过滤特定组,只需指定组的名称而不是“全部”。

于 2018-03-06T09:25:57.547 回答