diff --git a/lib/ansible/galaxy/role.py b/lib/ansible/galaxy/role.py
index 163df5cb213..9367486625b 100644
--- a/lib/ansible/galaxy/role.py
+++ b/lib/ansible/galaxy/role.py
@@ -47,7 +47,7 @@ except ImportError:
 class GalaxyRole(object):
 
     SUPPORTED_SCMS = set(['git', 'hg'])
-    META_MAIN = os.path.join('meta', 'main.yml')
+    META_MAIN = (os.path.join('meta', 'main.yml'), os.path.join('meta', 'main.yaml'))
     META_INSTALL = os.path.join('meta', '.galaxy_install_info')
     ROLE_DIRS = ('defaults', 'files', 'handlers', 'meta', 'tasks', 'templates', 'vars', 'tests')
 
@@ -97,16 +97,17 @@ class GalaxyRole(object):
         Returns role metadata
         """
         if self._metadata is None:
-            meta_path = os.path.join(self.path, self.META_MAIN)
-            if os.path.isfile(meta_path):
-                try:
-                    f = open(meta_path, 'r')
-                    self._metadata = yaml.safe_load(f)
-                except:
-                    display.vvvvv("Unable to load metadata for %s" % self.name)
-                    return False
-                finally:
-                    f.close()
+            for meta_main in self.META_MAIN:
+                meta_path = os.path.join(self.path, meta_main)
+                if os.path.isfile(meta_path):
+                    try:
+                        f = open(meta_path, 'r')
+                        self._metadata = yaml.safe_load(f)
+                    except:
+                        display.vvvvv("Unable to load metadata for %s" % self.name)
+                        return False
+                    finally:
+                        f.close()
 
         return self._metadata
 
@@ -269,18 +270,19 @@ class GalaxyRole(object):
                 members = role_tar_file.getmembers()
                 # next find the metadata file
                 for member in members:
-                    if self.META_MAIN in member.name:
-                        # Look for parent of meta/main.yml
-                        # Due to possibility of sub roles each containing meta/main.yml
-                        # look for shortest length parent
-                        meta_parent_dir = os.path.dirname(os.path.dirname(member.name))
-                        if not meta_file:
-                            archive_parent_dir = meta_parent_dir
-                            meta_file = member
-                        else:
-                            if len(meta_parent_dir) < len(archive_parent_dir):
+                    for meta_main in self.META_MAIN:
+                        if meta_main in member.name:
+                            # Look for parent of meta/main.yml
+                            # Due to possibility of sub roles each containing meta/main.yml
+                            # look for shortest length parent
+                            meta_parent_dir = os.path.dirname(os.path.dirname(member.name))
+                            if not meta_file:
                                 archive_parent_dir = meta_parent_dir
                                 meta_file = member
+                            else:
+                                if len(meta_parent_dir) < len(archive_parent_dir):
+                                    archive_parent_dir = meta_parent_dir
+                                    meta_file = member
                 if not meta_file:
                     raise AnsibleError("this role does not appear to have a meta/main.yml file.")
                 else: