0

Ansible-playbook 有一个--list-hostscli 开关,它只输出受 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()使其输出受影响的主机并退出。

4

1 回答 1

0

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

于 2016-08-01T17:12:03.360 回答