python - 使用 ansible API 打印 hoSTList

标签 python ansible

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

ansible all --list-host

编辑:

这是正确的方法吗?

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

最佳答案

像这样:

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”的操作

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

关于python - 使用 ansible API 打印 hoSTList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809991/

相关文章:

python - csv.reader 错误解析文件

python - 将 python 列表插入 Postgres 数据库

dependencies - Ansible 角色依赖于不运行多次的其他角色

ansible - 在 Ansible playbook 中指定多个默认组作为主机

ansible - 我可以在 Ansible 模板中使用主机变量吗?

docker - docker容器上的Ansible命令?

python - 限制属性的创建/设置

python - Django 如何创建表(sqlite)?

python - 在Python中解析JSON

ansible - 警告 : Ansible evaluating bare variable. 如何正确实现?