使用ansible v2.0 api怎么指定hosts

我想用python ansible api操作服务器,但是想要操作的服务器并不确定,请问怎么指定hosts。代码类似这样

play_source =  dict(
        name = "Ansible Play",
        hosts = hosts,
        gather_facts = 'no',
        tasks = [
            dict(action=dict(module=module))
         ]
    )
    play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
阅读 7.1k
3 个回答

如果hosts是不确定的话,可以用动态inventory来实现。
而且hosts应该是支持正则匹配的吧~

可能是我描述不清吧,楼上的回答跟我的问题并没有关系。。。
我的意思是ansible2.0的api似乎不能像以前一样传入一个hosts列表,只能指定某个host文件里的某个组(或者全部组),但是我无法预先写好一个hosts文件和组,因为要操作哪些服务器是在web上输入的。我现在解决的方法是对于传入的hosts列表,遍历后写在一个临时文件里,Inventory指定这个临时文件即可。

还有一个问题,怎么指定 2.1 版本的 ansible API 中的 hosts,直接指定的话报 OSError: [Errno 24] Too many open files

play_source = dict(

    name = "Ansible Play",
    hosts = '172.17.33.214',
    gather_facts = 'no',
    tasks = [
        dict(action=dict(module='shell', args='ls'))
     ]
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进