Skip to main content

A wrapper for ansible-galaxy that allows you to define role dependencies inside a requirements.yml

Project description

Molecule Ansible Galaxy Wrapper

An Ansible Galaxy wrapper to serve as a molecule dependency plugin with intra-dependencies support.

Motivation

Imagine the scenario, you have a Role named child that depends on a role called parent and parent depends on grandparent.

To install child you need to have parent and grandparent in your roles_path:

child -> parent -> grandparent

Ansible Galaxy is smart enough to figure that out, all you have to do is define grandparent as a dependency of parent role inside meta/main.yml and then parent as a dependency inside child role meta/main.yml file.

The problem is that molecule enforces tracking role dependencies inside a requirements.yml file, in that case, you have two options:

  1. Include both parent and child in your requirements.yml and simply ignore meta/main.yml
  2. Include parent inside requirements.yml and duplicate the same content inside meta/main.yml

First approach might look reasonable in a scenarion like this, but you might have a more complex dependency relationship and in that case you will soon have big problems.

The latter looks ugly but at least you can delegate the responsability of figuring out the dependency tree to Ansible Galaxy.

Enter the Dirty Hack

At some point we will forget to append dependencies to both requirements.yml and meta/main.yml. To avoid this issue I've created this tiny wrapper that does basically two things:

  1. Copy the content of requirements.yml into meta/main.yml requirements list
  2. Run ansible-galaxy install

Usage

Install molecule-galaxy wrapper:

pip install molecule-galaxy-wrapper

Configure molecule.yml to use the warpper:

dependency:
  name: shell
  command: galaxywrapper
driver:
  name: docker
...

Test it by running:

molecule dependency

Now you can maintain role dependencies inside your requirements.yml file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for molecule-galaxy-wrapper, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size molecule_galaxy_wrapper-0.0.4-py3-none-any.whl (9.1 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size molecule-galaxy-wrapper-0.0.4.tar.gz (3.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page