Hi, I'm kinda new to Ansible, love the program so far.
I want two facts, hostname and serial number,in a Sqlite database. I'm trying to achieve it with the callback plugin, which is written in Python. I came across this website and applied his Python code on my machine. http://jpmens.net/2012/09/11/watching-ansible-at-work-callbacks/ The problem is that the script made by jpmens is for Ansible 1. I'm working with Ansible 2.0.2.0 The code I have for inv.py [code] import os import time import sqlite3 dbname = '/etc/ansible/test.db' TIME_FORMAT='%Y-%m-%d %H:%M:%S' try: con = sqlite3.connect(test1) cur = con.cursor() except: pass 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 test2 (now, host, serial) VALUES(?,?,?);", ( now, facts.get('ansible_hostname', None), facts.get('ansible_product_serial', None) )) con.commit() except: pass class CallbackModule(object): def runner_on_ok(self, host, serial): log(host, serial) [/code] I'm getting the following error message: " [WARNING]: Failure when attempting to use callback plugin (</etc/ansible/callback_plugin/inv.CallbackModule object at 0x16c5a90>): 'TaskResult' object has no attribute 'get'" I don't understand Python quite well. Can anybody pin-point me to my mistake? Or is there a more simple method to put the values in a sqlite database? Thanks -- 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/4b235718-57ac-4bdd-b4d0-d9ff52969075%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
