无法将清单脚本解析为清单

时间:2019-03-01 00:09:43

标签: ansible ansible-2.x ansible-inventory

我的python脚本动态查询并生成JSON文件,如下所示:

 const FILTERS = {
    age: 32,
    name: 'Simon',
    occupation: ''
  }

但是当我执行下面的命令时

 const NEW_ARRAY = [
    {
      name: 'Simon',
      age: 32,
      occupation: 'Student'
    }
  ];

它发出以下警告消息

  • [警告]无法将/etc/ansible/script.py解析为库存来源
  • [警告]没有解析清单,只有隐式本地主机可用。
  • [警告]提供的主机列表为空,只有localhost可用。请注意,隐式本地主机与“ all”不匹配

我不知道自己缺少什么或做错了什么,因为我是Ansible动态广告资源的新手。

当我运行{ "all": { "hosts": [ "192.158.1.1" ], "vars": { "ansible_become_method": "sudo", "ansible_become": "yes" } } } 时,得到以下响应

ansible -i script.py -m ping 

我的Ansible版本是2.7.7

广告资源插件是脚本

ansible-inventory -i script.py --list

[已更新] 根据史蒂夫的建议运行-v可以给我带来更多的好处

{
    "_meta": {
        "hostvars": {}
    }, 
    "all": {
        "children": [
            "ungrouped"
        ]
    }, 
    "ungrouped": {}
}

3 个答案:

答案 0 :(得分:0)

您的脚本需要可执行:
$ chmod a+x script.py

请参阅有关使用脚本here的文档。

您的脚本还必须accept certain arguments

答案 1 :(得分:0)

您需要像这样运行命令

ansible-inventory -i 'path-to-the-file/script.py' --list

具有引号很重要。对我来说,在OsX上就是问题所在。

答案 2 :(得分:0)

您是否已在python广告资源脚本的第一行中添加了这样的标头?

#!/path/to/python