美文网首页
ansible动态抓取远程数据进行执行

ansible动态抓取远程数据进行执行

作者: 鸟它鸟 | 来源:发表于2019-03-08 11:03 被阅读0次
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import json
import sys

def Group_list():
#这里可以添加远程数据获取的代码块,转换成下面的格式输出即可
    result = {
        "all": {
            "hosts": [
                "192.168.111.137",
                "127.0.0.2"
            ]
        }
    }
    print(json.dumps(result,indent=4))

def Host_list(ip):
    #这块测试了下,貌似是ansible识别通过哪些主机执行的一个地方,可以输出为空字典,输出为空的时候应该就是本地执行。
    print(json.dumps({
        # "ansible_ssh_host": "192.168.111.137",
        # "ansible_ssh_user": "root"
    },indent=4))

if __name__ == '__main__':
    if len(sys.argv) == 2 and (sys.argv[1] == '--list'):
        Group_list()
    elif len(sys.argv) == 3 and (sys.argv[1] == '--host'):
        Host_list(sys.argv[2])

测试执行

(python36) [root@wk-api utils]# ./iplist.py --list
{
    "Devops": {
        "hosts": [
            "192.168.111.137",
            "127.0.0.2"
        ]
    }
}
(python36) [root@xxx utils]# ./iplist.py --host
(python36) [root@xxx utils]#

通过ansible进行执行

(python36) [root@xxx utils]# ansible all -i iplist.py -m ping
192.168.111.137 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
127.0.0.2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
(python36) [root@xxx utils]#

通过ansible执行playbook

(python36) [root@xxx utils]# ansible-playbook -i iplist.py ./test.yml

PLAY [all] ****************************************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************************
ok: [127.0.0.2]
ok: [192.168.111.137]

TASK [test] ***************************************************************************************************************************************************************************
changed: [192.168.111.137]
changed: [127.0.0.2]

PLAY RECAP ****************************************************************************************************************************************************************************
127.0.0.2                  : ok=2    changed=1    unreachable=0    failed=0
192.168.111.137            : ok=2    changed=1    unreachable=0    failed=0

(python36) [root@xxx utils]#

这里只是记录个例子,具体的使用方式可以自开脑洞,我是折腾封装api的时候无意间搞到了这个玩意记录下。

相关文章

网友评论

      本文标题:ansible动态抓取远程数据进行执行

      本文链接:https://www.haomeiwen.com/subject/dvnlpqtx.html