# Delegation in Action Plugins

**URL:** <https://forum.ansible.com/t/delegation-in-action-plugins/19131>\
**Category:** Ansible Project\
**Created:** [August 27, 2015, 7:33pm UTC](https://forum.ansible.com/t/delegation-in-action-plugins/19131 "2015-08-27T19:33:16Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Arti](https://avatars.discourse-cdn.com/v4/letter/a/e5b9ba/32.png) [@Arti](https://forum.ansible.com/u/Arti)\
**Post date:** [August 27, 2015, 7:33pm UTC](https://forum.ansible.com/t/delegation-in-action-plugins/19131/1 "2015-08-27T19:33:16Z")

</div>

There is surprisingly (and sometime frustratingly) little documentation on Ansible action\_plugins. I am trying to write an action plugin for a module that uses delegation. Is there a way to accomplish this? Would greatly appreciate any input

This is an example of a module I have:-

- name: “create database user”  
db\_user:  
host: “{{ groups[‘servers’].0 }}”  
user: “{{ root\_user }}”  
password: “{{ root\_password }}”  
delegate\_to: “{{ groups[‘servers’].0 }}”

And my action plugin is:-

class ActionModule(object):

def **init** (self, runner):  
self.runner = runner

def run(self, conn, tmp, module\_name, module\_args, inject, complex\_args=None, \*\*kwargs):  
parsed\_args = parse\_kv(module\_args)  
options = {  
key: parsed\_args.get(key) for key in [“host”, “user”, “password”]  
}  
args = " ".join(  
“{}=‘{}’”.format(key, value) for key, value in options.items()  
)  
return self.runner.\_execute\_module( conn, tmp, ‘db\_user’, args, inject=inject,)

Thanks
