作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码:我无法使用 python 运行 ansible 模块。如何传递正在运行此命令的 list 文件。我无法为我的库存运行它。我还需要做其他事情吗?这是我的 ansible 命令:
ansible all -i /home/ubuntu/extra -m 'debug' -a 'var=hostvars'
这是我的代码:
import json
import ansible.runner
import ansible.playbook
import ansible.inventory
hosts = ["10.12.11.101"]
example_inventory = ansible.inventory.Inventory(hosts)
pm = ansible.runner.Runner( module_name = 'debug', module_args = 'vars=hostvars', timeout = 5, inventory = example_inventory, subset = 'all')
out = pm.run()
print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))
最佳答案
您可以将 list 文件路径传递给 ansible.runner.Runner()
要获取 group-names
和 host-names
,您应该传递 var=hostvars
,而不是 vars=hostvars
你的代码看起来像这样,
import json
import ansible.runner
import ansible.playbook
import ansible.inventory
example_inventory = ansible.inventory.Inventory('path/to/your/inventory')
pm = ansible.runner.Runner( module_name = 'debug', module_args = 'var=hostvars', timeout = 5, inventory = example_inventory, subset = 'all')
out = pm.run()
print json.dumps(out, sort_keys=True, indent=4, separators=(',', ': '))
和你的输出
{'contacted': {'ip-address': {'invocation': {'module_args': u'var=hostvars',
'module_complex_args': {},
'module_name': 'debug'},
'var': {u'hostvars': {'group_names': ['group1', 'group2', 'group3'],
'groups': {'group1': ['ip-address'],
'all': ['ip-address'],
'group2': ['ip-address'],
'group3': ['ip-address'],
'ungrouped': []},
'inventory_hostname': 'ip/hostname',
'inventory_hostname_short': 'hostname-short'}},
'verbose_always': True}},
'dark': {}}
关于python - 如何在Python中运行ansible模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33538483/
我是一名优秀的程序员,十分优秀!