diff --git a/setup/library/act_rr.py b/setup/library/act_rr.py
new file mode 100644
index 0000000..75b37e2
--- /dev/null
+++ b/setup/library/act_rr.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+
+import json
+import os
+import requests
+import sys
+import traceback
+
+from ansible.module_utils.basic import AnsibleModule
+from auraclienttools import LCDNAPI, LCDNFault
+
+def main():
+    module = AnsibleModule(
+        argument_spec = dict(
+            name      = dict(required=True, type='str'),
+            site      = dict(required=True, type='str'),
+            dns       = dict(required=True, type='list'),
+            interfaces= dict(required=True, type='list'),
+
+            state     = dict(required=True, type='str', choices=["present", "absent"]),
+            force     = dict(default=False, type="bool"),
+            username  = dict(required=True, type='str'),
+            password  = dict(required=True, type='str'),
+            hostname  = dict(required=True, type='str'),
+            plc_name  = dict(required=True, type='str'),
+
+            remote_hostname = dict(default=None, type="str"),
+        )
+    )
+
+    credentials = {"username": module.params["username"],
+                   "password": module.params["password"],
+                   "hostname": module.params["hostname"],
+                   "plc_name": module.params["plc_name"]}
+
+    state = module.params["state"]
+    node_hostname = module.params["name"]
+    force = module.params["force"]
+
+    api = LCDNAPI(credentials, experimental=True)
+
+    nodes = api.ListAll("Node", {"hostname": node_hostname})
+
+    if (nodes or force) and (state=="absent"):
+        api.deleteRR(node_hostname)
+        module.exit_json(changed=True, msg="cachenode deleted")
+    elif ((not nodes) or force) and (state=="present"):
+        if nodes:
+            # must have been called with force=True, so delete the node so we can re-create it
+            api.deleteRR(node_hostname)
+
+        rr = {"hostname": node_hostname,
+               "site": module.params["site"],
+               "dns": module.params["dns"],
+               "Interfaces": module.params["interfaces"]}
+        ret = api.createRR(**rr)
+        setupscript=ret["setupscript"]
+
+        if module.params["remote_hostname"]:
+            setupscript = setupscript.replace(module.params["hostname"], module.params["remote_hostname"])
+
+        module.exit_json(changed=True, msg="rr created", setupscript=setupscript)
+    else:
+        module.exit_json(changed=False)
+
+if __name__ == '__main__':
+    main()
