ansible hosts 动态inventory

将inventory选项定义为一个可执行的脚本
vim /etc/ansible/ansible.cfg
[defaults]


# some basic default values...


#inventory      = /etc/ansible/hosts
inventory      = /etc/ansible/inventory.py
 
这个脚本要支持两个参数:
--list或者-l,这个参数运行后会显示所有的主机以及主机组的信息(JSON格式)
--host或者-H,这个参数后面需要指定一个host,运行结果会返回这台主机的所有信息,也是JSON格式


vim /etc/ansible/inventory.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import sys
import json
def lists():
    r={}
    h=['172.17.42.10' + str(i) for i in range(1,4)]
    hosts={'hosts': h}
    r['docker'] = hosts
    return json.dumps(r,indent=4)
def hosts(name):
    r={'ansible_ssh_pass':'123456'}
    cpis=dict(r.items())
    return json.dumps(cpis)
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-l','--list',help='hosts list',action='store_true')
    parser.add_argument('-H','--host',help='hosts vars')
    args = vars(parser.parse_args())
    if args['list']:
        print lists()
    elif args['host']:
        print hosts(args['host'])
    else:
        parser.print_help()


添加可执行权限:
[root@node110 ansible]# chmod u+x dynamic_inventory.py 




执行方法:
[root@node110 ansible]# ansible -i test.py 172.17.42.101:172.17.42.103 -m ping
分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS