Hello, I am trying to write my own callback function which logs information which I want to database, especially informations from local facts. We have localfacts in json mode and I can easly get access to them from Ansbile it self, however everything what I've tried in terms access them from callback function failed.
Details: - My callback function script skeleton is based on this callback script: http://jpmens.net/2012/09/11/watching-ansible-at-work-callbacks/ - I've search ansible group and found something similar - however didn't help solve my problem (https://groups.google.com/forum/#!topic/ansible-project/3GvdIIWCdSI) - Looking in source (ansible / plugins / callbacks /) is not so helpfull for me as well. So question, how I can get access to fact stored in local facts in callback functions: 1. These is a file on remote host: /etc/ansible/facts.d/apache.fact 2. Return from this file (json format): { "name": "apache", "status": "Installed", "version": "1.0.8" } 3. Return this fact in ansible-playbook "msg": "work - variable: {u'apache': {u'status': u'Installed', u'version': u'1.0.8', u'name': u'apache'}}" 4. Access to it from my callback function (Based on this callback which I mentioned above). def log(host, data): 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), ..... # !!!! Works well )) con.commit() cur.execute("REPLACE INTO modules (host, name, status, version) VALUES(?,?,?,?);", ( * # !!!!!! - Not working !!!!!* facts.get('ansible_hostname', None), facts.get('ansible_local.apache.name', None), facts.get('ansible_local.apache.status', None), facts.get('ansible_local.apache.version', None), )) con.commit() *Summary:* Any reference to nasible_local.apache.name (etc) returns NULL in nasible callback function. Please advice what I have to do, as I understand ansible_local is DICT in python, do I have to run some special functions to get access for facts in format: Main-fact-name.some-subname.some.... ??? Best regards, Marcin Praczko -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/07d3d1bb-8855-4a9d-8952-187e45e016b7%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
