add option to not use references in yaml output
diff --git a/reclass/__init__.py b/reclass/__init__.py
index 7cd6c30..c86b880 100644
--- a/reclass/__init__.py
+++ b/reclass/__init__.py
@@ -16,7 +16,7 @@
     return MemcacheProxy(storage_class(nodes_uri, classes_uri, **kwargs))
 
 
-def output(data, fmt, pretty_print=False):
+def output(data, fmt, pretty_print=False, no_refs=False):
     output_class = OutputLoader(fmt).load()
     outputter = output_class()
-    return outputter.dump(data, pretty_print=pretty_print)
+    return outputter.dump(data, pretty_print=pretty_print, no_refs=no_refs)
diff --git a/reclass/adapters/ansible.py b/reclass/adapters/ansible.py
index cbf5f17..cf0795e 100755
--- a/reclass/adapters/ansible.py
+++ b/reclass/adapters/ansible.py
@@ -27,6 +27,7 @@
         ansible_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
 
         defaults = {'inventory_base_uri': ansible_dir,
+                    'no_refs' : False,
                     'pretty_print' : True,
                     'output' : 'json',
                     'applications_postfix': '_hosts'
@@ -81,7 +82,7 @@
 
             data = groups
 
-        print output(data, options.output, options.pretty_print)
+        print output(data, options.output, options.pretty_print, options.no_refs)
 
     except ReclassException, e:
         e.exit_with_message(sys.stderr)
diff --git a/reclass/adapters/salt.py b/reclass/adapters/salt.py
index 1b45823..8647eb7 100755
--- a/reclass/adapters/salt.py
+++ b/reclass/adapters/salt.py
@@ -81,6 +81,7 @@
     try:
         inventory_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
         defaults = {'pretty_print' : True,
+                    'no_refs' : False,
                     'output' : 'yaml',
                     'inventory_base_uri': inventory_dir
                    }
@@ -111,7 +112,7 @@
                        classes_uri=options.classes_uri,
                        class_mappings=class_mappings)
 
-        print output(data, options.output, options.pretty_print)
+        print output(data, options.output, options.pretty_print, options.no_refs)
 
     except ReclassException, e:
         e.exit_with_message(sys.stderr)
diff --git a/reclass/cli.py b/reclass/cli.py
index 5666e16..1f7213d 100644
--- a/reclass/cli.py
+++ b/reclass/cli.py
@@ -19,7 +19,8 @@
 
 def main():
     try:
-        defaults = {'pretty_print' : OPT_PRETTY_PRINT,
+        defaults = {'no_refs' : OPT_NO_REFS,
+                    'pretty_print' : OPT_PRETTY_PRINT,
                     'output' : OPT_OUTPUT
                    }
         defaults.update(find_and_read_configfile())
@@ -37,7 +38,7 @@
         else:
             data = reclass.inventory()
 
-        print output(data, options.output, options.pretty_print)
+        print output(data, options.output, options.pretty_print, options.no_refs)
 
     except ReclassException, e:
         e.exit_with_message(sys.stderr)
diff --git a/reclass/config.py b/reclass/config.py
index 17d0dc6..3d218d8 100644
--- a/reclass/config.py
+++ b/reclass/config.py
@@ -42,6 +42,9 @@
                    action="store_true",
                    default=defaults.get('pretty_print', OPT_PRETTY_PRINT),
                    help='try to make the output prettier [%default]')
+    ret.add_option('-r', '--no-refs', dest='no_refs', action="store_true",
+                   default=defaults.get('no_refs', OPT_NO_REFS),
+                   help='output all key values do not use yaml references [%default]')
     return ret
 
 
diff --git a/reclass/defaults.py b/reclass/defaults.py
index fb04c83..c3fa4a7 100644
--- a/reclass/defaults.py
+++ b/reclass/defaults.py
@@ -15,6 +15,7 @@
 OPT_NODES_URI = 'nodes'
 OPT_CLASSES_URI = 'classes'
 OPT_PRETTY_PRINT = True
+OPT_NO_REFS = False
 OPT_OUTPUT = 'yaml'
 
 CONFIG_FILE_SEARCH_PATH = [os.getcwd(),
diff --git a/reclass/output/json_outputter.py b/reclass/output/json_outputter.py
index dab86ed..8c79039 100644
--- a/reclass/output/json_outputter.py
+++ b/reclass/output/json_outputter.py
@@ -11,7 +11,7 @@
 
 class Outputter(OutputterBase):
 
-    def dump(self, data, pretty_print=False):
+    def dump(self, data, pretty_print=False, no_refs=False):
         separators = (',', ': ') if pretty_print else (',', ':')
         indent = 2 if pretty_print else None
         return json.dumps(data, indent=indent, separators=separators)
diff --git a/reclass/output/yaml_outputter.py b/reclass/output/yaml_outputter.py
index 2c70cc3..9a0d098 100644
--- a/reclass/output/yaml_outputter.py
+++ b/reclass/output/yaml_outputter.py
@@ -11,5 +11,16 @@
 
 class Outputter(OutputterBase):
 
-    def dump(self, data, pretty_print=False):
-        return yaml.dump(data, default_flow_style=not pretty_print)
+    def dump(self, data, pretty_print=False, no_refs=False):
+        if (no_refs):
+            return yaml.dump(data, default_flow_style=not pretty_print, Dumper=ExplicitDumper)
+        else:
+            return yaml.dump(data, default_flow_style=not pretty_print)
+
+class ExplicitDumper(yaml.SafeDumper):
+    """
+    A dumper that will never emit aliases.
+    """
+
+    def ignore_aliases(self, data):
+        return True