ansible动态抓取远程数据进行执行
2019-03-08 本文已影响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的时候无意间搞到了这个玩意记录下。