【问题标题】:How do I list hosts using Ansible 1.x API如何使用 Ansible 1.x API 列出主机
【发布时间】:2016-08-01 16:53:21
【问题描述】:

Ansible-playbook 有一个 --list-hosts cli 开关,它只输出受 playbook 中每个 play 影响的主机。我正在寻找一种通过 python API 访问相同信息的方法。

我现在用来测试的(非常)基本的脚本是

#!/usr/bin/python 
import ansible.runner
import ansible.playbook
import ansible.inventory
from ansible import callbacks
from ansible import utils
import json

# hosts list
hosts = ["127.0.0.1"]
# set up the inventory, if no group is defined then 'all' group is used by default
example_inventory = ansible.inventory.Inventory(hosts)

pm = ansible.runner.Runner(
    module_name = 'command',
    module_args = 'uname -a',
    timeout = 5,
    inventory = example_inventory,
    subset = 'all' # name of the hosts group 
    )

out = pm.run()

print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))

我只是不知道要添加什么到 ansible.runner.Runner() 以使其输出受影响的主机并退出。

【问题讨论】:

    标签: python ansible ansible-api ansible-runner ansible-1.x


    【解决方案1】:

    我不确定您要实现什么目标,但 ansible.runner.Runner 实际上是一项任务,而不是剧本。
    您的脚本更像是ansible CLI,而不是ansible-playbook
    ansible 没有任何类型的--list-hosts,而ansible-playbook 有。
    你可以看到listhosts是如何完成的here

    【讨论】:

    • 我正在尝试使用 ansible python 模块来获取受剧本影响的主机列表。类似于使用带有 --list-hosts 的 ansible-playbook 命令运行 playbook,但我希望数据采用更机器可读的格式(列出列表或元组)。
    • 那么您应该实现与 ansible-playbook CLI 中完全相同的功能(获取您需要的代码并对其进行修改)。不幸的是,没有方便的方法让您通过一些 API 调用列出受影响的主机。
    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 2020-11-09
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多