ansible调用callbacks插件 保存执行结果
2017-07-27 16:43
253 查看
cd /usr/share/ansible/plugins/callback
ansible1.7.2
ansible2 脚本完全不同,这个要注意
或者换种方式 放入mongodb
http://ju.outofmemory.cn/entry/95213
http://www.cnblogs.com/valor-xh/p/6369432.html http://www.blogjava.net/liufuxi/archive/2016/12/20/432147.html
你指定 "port":"27408",没用
File "/usr/lib64/python2.6/site-packages/pymongo-3.5.0-py2.6-linux-x86_64.egg/pymongo/topology.py", line 189, in select_servers
self._error_message(selector))
ServerSelectionTimeoutError: 127.0.0.1:27017: [Errno 111] Connection refused
2.
/usr/share/ansible/plugins/callback/log_plays.py:33: DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
db.callback.insert(values)
时间太久了,好多东西都变了
3.截个图
ansible1.7.2
ansible2 脚本完全不同,这个要注意
import os import time #import sqlite3 #import redis import json dbname = '/tmp/setup.db' TIME_FORMAT='%Y-%m-%d %H:%M:%S' try: con = sqlite3.connect(dbname) cur = con.cursor() except: pass def log(host, data): pass # if type(data) == dict: # invocation = data.pop('invocation', None) # if invocation.get('module_name', None) != 'setup': # return # # facts = data.get('ansible_facts', None) # # now = time.strftime(TIME_FORMAT, time.localtime()) # # try: # # `host` is a unique index # cur.execute("REPLACE INTO inventory (now, host, arch, dist, distvers, sys,kernel) VALUES(?,?,?,?,?,?,?);", # ( # now, # facts.get('ansible_hostname', None), # facts.get('ansible_architecture', None), # facts.get('ansible_distribution', None), # facts.get('ansible_distribution_version', None), # facts.get('ansible_system', None), # facts.get('ansible_kernel', None) # )) # con.commit() # except: # pass # class CallbackModule(object): def runner_on_ok(self, host, res): #host=host=res._host.get_name() #r = redis.Redis(host='127.0.0.1', port=6379, db=0) #r.set(host,str(res)) f = open('/tmp/11','a') f.write(str(host)) f.write(str(res)) f.close() log(host, res) def runner_on_failed(self, host, res, ignore_errors=False): log(host, res)
或者换种方式 放入mongodb
http://ju.outofmemory.cn/entry/95213
mongodb 创建用户
http://www.cnblogs.com/valor-xh/p/6369432.html http://www.blogjava.net/liufuxi/archive/2016/12/20/432147.html
感觉就是一个库,一个用户。然后如果你是root,那么什么都可以看,不是,就只能看这个库。合理。
mongodb-linux-x86_64-3.2.10.tgz setuptools-33.1.1.zip然后ansible就出故障了
File "/usr/lib64/python2.6/site-packages/Crypto/Util/number.py", line 56, in <module> if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC: AttributeError: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC' 找到他,注释掉
mongo客户端 robomongo-0.9.0-windows-x86_64-0786489
import os import time import json import datetime from pymongo import MongoClient mongoinfo = {"host":"127.0.0.1","port":"27408","user":"root","password":"root","dbname":"ansible_log"} dbname = '/tmp/setup.db' TIME_FORMAT='%Y-%m-%d %H:%M:%S' try: con = sqlite3.connect(dbname) cur = con.cursor() except: pass def InsertDB(values): global mongoinfo dbhost = mongoinfo['host'] dbport = mongoinfo['port'] dbuser = mongoinfo['user'] dbpwd = mongoinfo['password'] dbname = mongoinfo['dbname'] uri = 'mongodb://%s:%s@%s/%s'%(dbuser,dbpwd,dbhost,dbname) client = MongoClient(uri) db = client.ansible_log db.callback.insert(values) def log(host, data): pass class CallbackModule(object): def runner_on_ok(self, host, res): now = datetime.datetime.now() result = res result['time'] = now.strftime(TIME_FORMAT) result['status'] = 'ok' InsertDB(result) def runner_on_failed(self, host, res, ignore_errors=False): f = open('/tmp/12','a') f.write(str(host)) f.write(str(res)) f.close() log(host, res)有两个问题
你指定 "port":"27408",没用
File "/usr/lib64/python2.6/site-packages/pymongo-3.5.0-py2.6-linux-x86_64.egg/pymongo/topology.py", line 189, in select_servers
self._error_message(selector))
ServerSelectionTimeoutError: 127.0.0.1:27017: [Errno 111] Connection refused
2.
/usr/share/ansible/plugins/callback/log_plays.py:33: DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
db.callback.insert(values)
时间太久了,好多东西都变了
3.截个图
相关文章推荐
- ansible调用callbacks插件实现结果nosql输出回调 推荐
- nagios插件,通过nrpe远程调用和本地执行结果不一致
- c,c++中调用shell脚本并保存shell的执行结果
- 如何使用BAT文件批量运行SQL语句,并保存执行结果
- C++调用系统终端执行命令,将输出保存到文件中
- Java调用命令行并获取执行结果
- discuz论坛发起活动插件的数据调用以及数据保存数据表。
- java调用.bat,.cmd或执行cmd命令并将输出结果显示的代码
- Java调用cmd命令行并返回执行结果
- bash将执行结果保存为变量
- SSH+EXPECT远程执行命令及本地保存结果
- Java 调用系统命令,并打印出执行结果
- 将存储过程执行的结果保存到临时表
- Java调用命令行并获取执行结果
- Java调用cmd命令行并返回执行结果
- java调用shell命令并获取执行结果的示例
- Python3.5 调用Ansible 执行命令
- 将存储过程执行的结果保存到临时表
- 使用JSP/JAVA 调用java.exe执行某个路径下面的class文件,并显示出结果
- C#调用cmd执行命令获取返回结果