使用ansible API打印主机列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ansible API打印主机列表相关的知识,希望对你有一定的参考价值。

如何使用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”的操作。

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

以上是关于使用ansible API打印主机列表的主要内容,如果未能解决你的问题,请参考以下文章

python3.6环境下ansible拉取镜像失败

ansible playbook在服务器怎么执行

ansible使用

在ansible模板中使用动态组名称

ansible应用

安装ansible