Finding a Needle in a Galaxy of Roles

October 20, 2015 by Chris Houseknecht

2015-galaxy-blog-top.png

 

We are really excited to announce the release of Galaxy 1.1. It’s only been a few short weeks since Galaxy 1.0 debuted, and here we are again!

This time we added some powerful enhancements to make searching Ansible roles a much better experience. With over 3,500 roles in Galaxy and more being added every day, it can be a real challenge to sift through platforms, categories and descriptions to find exactly what you need. In Galaxy 1.1 we solved this problem.

Galaxy Tags

As the author of a role, you know better than we do how to describe the role and what terms users will search to discover the role. So to make describing roles better for authors and users, we replaced our limited set a categories with Galaxy Tags, allowing the author to add a list of free-form search terms to a role.

Let’s take a quick look at creating a role with Galaxy and using the new Galaxy Tags feature. We start by creating a role using the ansible-galaxy command line utility that comes installed with Ansible:

ansible-galaxy init ansible-role-myrole

 This creates the following directory structure and some supporting files for the new role:

ansible-role-myrole/
   defaults/
   handlers/
   meta/
   tasks/
   templates/
   vars/

Inside the meta folder is main.yml - a yaml file where you can provide a description and choose categories and platforms that fit the role. When the role is imported into Galaxy, the description, categories and platforms found in meta/main.yml become the means for users to search and discover the role.

Within meta/main.yml is a list of categories the author can choose from by uncommenting the ones that fit the role:

#categories:
#- cloud
#- cloud:ec2
#- cloud:gce
#- cloud:rax
#- clustering
#- database
#- database:nosql
#- database:sql
#- development
#- monitoring
#- networking
#- packaging
#- system
#- web

Now with Galaxy 1.1 the author can ignore categories completely and instead add a list called galaxy_tags.  For example:

galaxy_tags:
  - postgresql
  - sql
  - database
  - clone

NOTE: At the time of this writing the template meta/main.yml file generated by the latest Ansible stable release (1.9.4.1) still includes a categories list. That’s OK. Galaxy supports both a categories list and a galaxy_tags list. Regardless of which one is used, Galaxy will import the list as search tags.

With free form tags authors have more control over the way Galaxy indexes roles and thus how users discover roles. Roles can be filtered using a combination of tags:

Search using tags

Or, roles can be found by choosing from a list of popular tags:

View popular tags

Improved Search

In addition to rethinking categories, we also decided it was time to rethink the Browse Roles page. In its existing state Browse Roles failed to give users control over the search process. It made it difficult to combine multiple search terms. Searching by platform was slow. The text search field only filtered role titles. It just didn’t work.

Complex Filtering

The new search page allows filtering by any combination of keywords, tags, authors and platforms.

Filtering options

Combine multiple filters to narrow the list of possible roles:

Complex Filtering

Autocomplete

When filtering by author, platform or tag Galaxy makes filtering a little easier by providing suggestions as you type:

Autocomplete results

Better Search Results

Search results are now organized in a way that provides a nice snapshot of each role and enough information to decide if a role is worth further exploration:

search_results_002

Each role is represented as a card containing the role’s title, description, a link to the author, supported platforms, tags, the date created and the average rating score: 

Search results

Simple Role Ratings

We’re continuing to think about ratings. Up until now adding a rating to a role required providing several different scores for things like documentation, code style, wow factor, etc. It was complicated, and maybe even confusing.

We took the first step in making it better by consolidating all the different scores down to one. So to rate a role, just select a number from 1 to 5, and add a comment, if you like:

Rate a role

Closed Issues

We track Galaxy open issues and enhancements at https://github.com/ansible/galaxy-issues. Here’s a quick look at everything included in release 1.1:


What’s Next?

Our goal is to make Galaxy the premier place for finding the best Ansible content. We think this release takes us a step or two closer, but we’re not done yet.

The exact features and bug fixes to be included in the next release are still being decided. Adding a role download count is on the list. We’re thinking about how to lint roles and how to test roles as well. Keep an eye on the release 1.2 milestones at Galaxy Issues to see what gets decided.

In the meantime, check out all the new search features in Galaxy 1.1. Finding roles to jumpstart your automation project just became a whole lot easier.

Share:

Topics:
Ansible Galaxy


 

Chris Houseknecht

Chris is the Principal Engineer at Ansible by Red Hat. Starting as employee number five, Chris keeps watch over Ansible Docker modules, maintains Ansible Galaxy and is the lead Engineer for Ansible Container. When he’s not working he spends his time cooking, walking his dogs or outside on his mountain bike or motorcycle. He can be found on twitter at @chouseknecht.


rss-icon  RSS Feed

Ansible Tower by Red Hat
Ansible In-Depth Whitepaper
ansiblefest brooklyn 2016
Learn About Ansible Tower