Convert existing roles into galaxy roles

Registered by Kevin Carter

Overview
########

All of our roles should be galaxy compatible and generally deployable on their own. To do this the roles need to have a few bits added to them and consolidated where it makes.

Problem Description
-------------------

Presently none of our roles are able to be updated to Ansible Galaxy. This should be a capability of our deployment system.

Proposed Change
---------------

Some of this work has been done here: https://github.com/cloudnull/os-lxc-hosts

In all of our roles we should have, at a minimum, the ``meta/main.yml`` file which provides for ansible-galaxy information and any relevant dependencies.

Example meta file:
  .. code-block:: yaml

      galaxy_info:
        author: rcbops
        description: Installation galera server
        company: Rackspace
        license: Apache2
        min_ansible_version: 1.6.6
        platforms:
          - name: Ubuntu
            versions:
              - trusty
        categories:
          - cloud
          - galera
          - mariadb
          - development
          - openstack
          - rpc
      dependencies: [ "galera_client" ]

As the roles are being built out for galaxy compatibility they should also have tags created for tasks where appropriate. More information on galaxy roles, https://galaxy.ansible.com/intro

Notable changes:
  * Further improvements should also be made to the role in regards to the default options that are presnetly being set in ``inventory/group_vars/*``
  * Some plays will need to be refactored for default variables.
  * Some roles should simply be moved into ``pre_tasks`` in other playbooks.

Playbook Impact
---------------

A few playbooks may need to be adjusted for some of the new roles however most of the top level playbooks should be largely unchanged.

Alternatives
------------

Leave all of the roles the way they are, which makes us galaxy incompatible.

Security Impact
---------------

None

Performance Impact
------------------

While its tough to say what the performance impact would be I would estimate that we could improve deployment performance by simply removing unnecessary roles and building proper role dependencies.

End User Impact
---------------

None

Deployer Impact
---------------

Faster deployment, and more compatibility in Ansible's existing tooling.

Developer Impact
----------------

This should put us on a better path with regard to how we develop future roles.

Blueprint information

Status:
Complete
Approver:
David Wilde
Priority:
Medium
Drafter:
Kevin Carter
Direction:
Approved
Assignee:
Kevin Carter
Definition:
Approved
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Kevin Carter
Completed by
Kevin Carter

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bug/1403676,n,z

Addressed by: https://review.openstack.org/152753
    [WIP] Generize all roles and plays

Gerrit topic: https://review.openstack.org/#q,topic:bp/galaxy-roles,n,z

Addressed by: https://review.openstack.org/155505
    Updating requirements.txt to OpenStack practices

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.