# Access group vars from callback module in ansible-2.0

**URL:** <https://forum.ansible.com/t/access-group-vars-from-callback-module-in-ansible-2-0/20392>\
**Category:** Ansible Project\
**Created:** [January 31, 2016, 12:26pm UTC](https://forum.ansible.com/t/access-group-vars-from-callback-module-in-ansible-2-0/20392 "2016-01-31T12:26:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![tinyzais](https://avatars.discourse-cdn.com/v4/letter/t/7c8e57/32.png) [@tinyzais](https://forum.ansible.com/u/tinyzais)\
**Post date:** [January 31, 2016, 12:26pm UTC](https://forum.ansible.com/t/access-group-vars-from-callback-module-in-ansible-2-0/20392/1 "2016-01-31T12:26:00Z")

</div>

Hello,

I’m trying to write callback plugin for ansible.  
Below code was working on in ansible-1.9, but it isn’t in ansible-2.0

`

def v2\_playbook\_on\_play\_start(self, play):  
self.play = play  
self.playbook = self.play.playbook  
self.inventory = self.playbook.inventory  
self.playbook\_name, \_ = os.path.splitext(os.path.basename(self.playbook.filename))

for g in self.inventory.get\_groups():  
vars = self.inventory.get\_group\_vars(g)  
print(“… vars for group %s” % g.name)  
for v in vars:  
print(“%s = %s” % (v, vars.get(v)))  
…

`

Error:

`

[WARNING]: Error when using \<bound method CallbackModule.v2\_playbook\_on\_play\_start of \<…CallbackModule object at 0x7fbf9c8c8c50\>\>: ‘Play’ object  
has no attribute ‘playbook’

`

How should i access group/host variables from callback module in ansible-2.0?

Thanks in advance.

---

<div class="post-metadata">

**Author:** ![Sam\_S](https://avatars.discourse-cdn.com/v4/letter/s/edb3f5/32.png) [@Sam\_S](https://forum.ansible.com/u/Sam_S)\
**Post date:** [August 26, 2016, 7:49pm UTC](https://forum.ansible.com/t/access-group-vars-from-callback-module-in-ansible-2-0/20392/2 "2016-08-26T19:49:45Z")

</div>

Did you ever figure this out? I’m running into the same issue.

---

<div class="post-metadata">

**Author:** ![tinyzais](https://avatars.discourse-cdn.com/v4/letter/t/7c8e57/32.png) [@tinyzais](https://forum.ansible.com/u/tinyzais)\
**Post date:** [August 26, 2016, 8:00pm UTC](https://forum.ansible.com/t/access-group-vars-from-callback-module-in-ansible-2-0/20392/3 "2016-08-26T20:00:02Z")

</div>

I’m using below hacky approach (found somewere on the internet 😉

`

def **init** (self):  
self.myvar = None  
…

def v2\_playbook\_on\_play\_start(self, play):  
var\_mgr = play.get\_variable\_manager()  
p\_vars = var\_mgr.get\_vars(loader=play.get\_loader())  
self.inventory\_name = p\_vars.get(‘inventory\_file’)

# initialize

inv = var\_mgr.\_inventory

# group vars

self.\_display.vvvv(‘… group vars’)  
for g in inv.get\_groups():  
self.\_display.vvvv(‘… group=’ + str(g))  
self.\_display.vvvv(‘… value=’ + str(inv.get\_group\_variables(g)))  
g\_vars = inv.get\_group\_variables(g)

# get vars if not defined already (hopping groups are sorted)

if self.myvar is None: self.myvar = g\_vars.get(“myvar”, None)

# host vars

self.\_display.vvvv(‘… host vars’)  
for h in inv.get\_hosts():  
self.\_display.vvvv(‘… host =’ + str(h))  
self.\_display.vvvv(‘… value=’ + str(inv.get\_host\_vars(h)))  
h\_vars = inv.get\_host\_vars(h)  
if self.myvar is None: self.myvar = h\_vars.get(“myvar”, None)

# extra\_vars: highest priority

e\_vars = var\_mgr.extra\_vars  
self.myvar = e\_vars.get(“myvar”, None)  
…

`  
This should work with 2.0 - 2.1 (hope ansible will not change it soon, or provide ‘official’ way).
