from a monolith Ansible  repo

to a single role repo structure

> Current repository structure

...
├── roles
│   ├── PHPCi-001
│   ├── activemq-001
│   ├── ad-server-001
│   ├── advertising-api-001
│   ├── ansible-001
│   ├── ansible-metadata-001
│   ├── apt-cacher-ng-001
│   ├── aws-api-server-002
│   ├── aws-cli-001
│   ├── aws-mon-linux-001
│   ├── bid-predictor-001
│   ├── bid-predictor-002
│   ├── bower
│   ├── bower-001
│   ├── caffe-on-spark-001
│   ├── cassandra-001
│   ├── cassandra-002
│   ├── cassandra-cleanup-001
│   ├── cassandra-clearsnapshot-001
│   ├── cassandra-compaction-001
│   ├── cassandra-firewall-001
│   ├── cassandra-repair-001
│   ├── cassandra-rolling-restart-001
│   ├── cloudfront-origin-001
│   ├── codedeploy-001
│   ├── collectd-001
│   ├── common-001
...

cons

  • Even though an effort was made a few years ago to CI/CD this monolith, no one was actually paying attention to it:
    • Too complex
    • Too heavy
  • No straight forward way to test locally (even though there is one)
  • More and more Ansible contributions 
  • Still not good way to version roles

> Let's adopt the Ansible Galaxy way

├── ansible-role-aws-cli

Pros

  • 1 Ansible role = 1 Repository
    • Easy to CI / CD
    • Easy to contribute to
    • Easy to version
    • Easy to upgrade
  • Enhance local development with Gumsible
  • Gain modularity and reusability 
  • Open source openning
  • Using roles as toolbox for Docker (Deployment / Config DNS)
├── ansible-role-common
├── ansible-role-elasticsearch
├── ansible-role-gradle
├── ansible-role-groovy
├── ansible-role-java

...

ansible-ops

ansible-data-engineering

ansible-web-engineering

ansible-data-science

> Status Update - june 28th 2018

Ansible Roles converted

?

?

/

150

13

(50 CV roles excluded)

  • Most commonly used ones
  • Tested against 14.04/16.04
  • Can start being used as a replacement of the monolith ones

> Next steps

  • Define a release process when a role is tagged (send release notes / changelog ?)
     
  • Tag stable versions and start decommissioning old roles in order to replace them with new ones
     
  • Convert 10 more roles

> Status Update - August 28th 2018

Ansible Roles converted

?

?

/

150

34

(50 CV roles excluded)

  • Most commonly used ones
  • Tested against 14.04/16.04
  • Can start being used as a replacement of the monolith ones

> Next steps

  • Keep Tagging stable versions and decommission old roles in order to replace them with new ones
     
  • Convert 10 more roles (or more)
     
  • Test against multiple Ansible versions (back port needed)
  • Define a release process when a role is tagged (send release notes / changelog ?)
     
  • Tag stable versions and start decommissioning old roles in order to replace them with new ones
     
  • Convert 10 more roles

Previous Goal

Next Goal

Ansible Role Breakdown and Testing enhancement

By Florian Dambrine

Ansible Role Breakdown and Testing enhancement

  • 1,359