jingjihui 发表于 2018-1-2 18:45:05

ansible 的callback插件自定义

#coding=utf-8  
#author:evil
  

  
import os
  
import time
  
import json
  
import requests
  

  
Data_Fail_List=['UNREACHABLE','SKIPPED']
  

  

  
def log(host, category,task_id, data):
  
   if type(data) == dict:
  
         if 'verbose_override' in data:
  
             # avoid logging extraneous data from facts
  
             data = 'omitted'
  
         else:
  
             data = data.copy()
  
             invocation = data.pop('invocation', None)
  
             task_status='success'
  
             task_res=data['stdout']
  
             task_id=task_id
  
             task_host=host
  
             payload={'task_status':'success','task_res':task_res,'task_id':task_id,'task_host':task_host}
  
             requests.post("http://10.13.168.153:8000/task_callback/", data=payload)
  
   else:
  
         task_status='fail'
  
         task_res=data
  
         task_id=task_id
  
"log_plays.py" 118L, 3419C written
  
# cat log_plays.py
  
#coding=utf-8
  
#author:evil
  

  
import os
  
import time
  
import json
  
import requests
  

  
Data_Fail_List=['UNREACHABLE','SKIPPED']
  

  

  
def log(host, category,task_id, data):
  
   if type(data) == dict:
  
         if 'verbose_override' in data:
  
             # avoid logging extraneous data from facts
  
             data = 'omitted'
  
         else:
  
             data = data.copy()
  
             invocation = data.pop('invocation', None)
  
             task_status='success'
  
             task_res=data['stdout']
  
             task_id=task_id
  
             task_host=host
  
             payload={'task_status':'success','task_res':task_res,'task_id':task_id,'task_host':task_host}
  
             requests.post("http://10.13.168.153:8000/task_callback/", data=payload)
  
   else:
  
         task_status='fail'
  
         task_res=data
  
         task_id=task_id
  
         task_host=host
  
         payload={'task_status':'fail','task_res':data,'task_id':task_id,'task_host':task_host}
  
         requests.post("http://10.13.168.153:8000/task_callback/", data=payload)
  

  
         #path = os.path.join("/export/bjliumeide/log/ansible/hosts", host)
  
         #now = time.strftime(TIME_FORMAT, time.localtime())
  
         #fd = open(path, "a")
  
         #fd.write(MSG_FORMAT % dict(now=now, category=category,task_id=task_id, data=data))
  
         #fd.close()
  


  
>  
   """
  
   logs playbook results, per host, in /var/log/ansible/hosts
  
   """
  

  
   def on_any(self, *args, **kwargs):
  
         pass
  

  
   def runner_on_failed(self, host, res, ignore_errors=False):
  
         task_obj=getattr(self,'task',None)
  
         task_name=task_obj.name
  
         if task_obj:
  
             log(host, 'FAILED',task_name,res)
  

  
   def runner_on_ok(self, host, res):
  
         task_obj=getattr(self,'task',None)
  
         task_name=task_obj.name
  
         if task_obj:
  
             log(host, 'OK',task_name, res)
  
         else:
  
             pass
  
   def runner_on_skipped(self, host, item=None):
  
         task_obj=getattr(self,'task',None)
  
         task_name=task_obj.name
  
         if task_obj:
  
            log(host, 'SKIPPED',task_name,'...')
  
         else:
  
            pass
  
   def runner_on_unreachable(self, host, res):
  
         task_obj=getattr(self,'task',None)
  
         if task_obj:
  
             log(host,'UNREACHABLE',task_obj.name,res)
  
         else:
  
             pass
  
   def runner_on_no_hosts(self):
  
         pass
  

  
   def runner_on_async_poll(self, host, res, jid, clock):
  
         pass
  

  
   def runner_on_async_ok(self, host, res, jid):
  
         pass
  

  
   def runner_on_async_failed(self, host, res, jid):
  
         log(host, 'ASYNC_FAILED', res)
  

  
   def playbook_on_start(self):
  
         pass
  

  
   def playbook_on_notify(self, host, handler):
  
         pass
  

  
   def playbook_on_no_hosts_matched(self):
  
         pass
  

  
   def playbook_on_no_hosts_remaining(self):
  
         pass
  

  
   def playbook_on_task_start(self, name, is_conditional):
  
         pass
  

  
   def playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
  
         pass
  

  
   def playbook_on_setup(self):
  
         pass
  

  
   def playbook_on_import_for_host(self, host, imported_file):
  
         log(host, 'IMPORTED', imported_file)
  

  
   def playbook_on_not_import_for_host(self, host, missing_file):
  
         log(host, 'NOTIMPORTED', missing_file)
  

  
   def playbook_on_play_start(self, name):
  
         pass
  

  
   def playbook_on_stats(self, stats):
  
         pass
页: [1]
查看完整版本: ansible 的callback插件自定义