ansible动态inventory获取主机列表

来源:互联网 发布:thug life软件下载 编辑:程序博客网 时间:2024/05/28 15:08

ansible,默认是调用/etc/ansible/hosts配置的主机组,同时我们也可以通过 -i 参数指定我们自己的hosts文件配置

hosts配置文件如下:


{    "zbxpython":    {        "host":['SV0390','SSBSV00116','SV0379']    }    "zbxadd":['10.12.19.80','10.12.19.82','10.12.19.83']}
上面的hosts文件对应的json字符串就是这样的,zbxpython为组名,下面[ ] 内为机器列表

简单例子:

脚本文件:inv.py

#!/usr/bin/python# encoding:utf-8import jsonaa={    "zbxpython":    {        "host":['SV0390','SSBSV00116','SV0379']    },    "zbxadd":['10.12.19.80','10.12.19.82','10.12.19.83']}print json.dumps(aa)
#!/usr/bin/python  表示指定/usr/bin/python来执行此程序,而不需用python inv.py 这种方式执行,有了这句直接可以用./inv.py就可以运行该文件,但必须赋予该文件可执行权限

其实主要就是拼接好指定的字符串,然后在用json.dumps(aa)输出就行,

ansible执行命令:

[autorun@monitor001 ansible]$ ansible -i inv.py abxadd -m shell -a "hostname"
其中zbxadd指定我们的组名

结果:



附:我自己遇到的一个问题,在windos下写好的脚本传到linux上面,执行提示找不到文件或目录,其实这个问题是文件编码的问题

vi inv.py   输入:set ff   可以查看该文件的编码


可以看到fileformat=dos 我们需要通过 :set ff =unix  或set fileformat = unix  改变文件的编码就可以解决该问题



1 0
原创粉丝点击