Small tool for automatic download roles and libs a-la-Gemfile
As many roles have changed their configurations among time, anyone would use a specific version of a role (for instance, a commit, or a branch, or a tag). Moreover, a complex playbook could need different versions from the same role. This app will download roles (bundles, from now on) from their repositories before launching a playbook. That means that a role should be in its own repository.
- Ansible. Any version.
- Git >= 1.8.5
- Python 2 >= 2.6
sudo pip install ansible-bundle
- Download latest release
- Run
sudo python setup.py
ansible-bundle FILEYAML [ansible-playbook-options] [ansible-bundle-options]
ansible-bundle, along the ansible-playbook parameters, has also these:
-
--bundle-clean-roles
Will clean roles and library directories before download (*) -
--bundle-dry
Shows what will be run (as it won't download anything, also won't search for dependencies) -
--bundle-deps-only
Don't run the playbook, just satisfy dependencies. -
--bundle-disable-color
Useful for non-interactive consoles -
--bundle-workers
concurrent connections when downloading/updating roles. Default: 1 -
--bundle-safe-update
Don't clean existing roles. (*)
(*) If both bundle-clean-roles
and bundle-safe-update
are set, bundle-clean-roles
will take effect.
ansible-bundle expects to find a [bundle]
section into ansible.cfg, which may
contain some of the command lines parameters:
-
workers
-
verbosity
-
safe
And the following extra options:
url
: URL where the roles are located. For example, if roleapache
is ingit.luolix.top/foo/roles/apache
, theurl
should be set github.com/foo/roles
. Default is 'https://github.com'
[bundle]
url='git@github.com:devopsysadmin/ansible-roles'
workers=5
verbosity=1
Given the following playbook (site.yml):
- include: site-common.yml
tags:
- common
- hosts: all
roles:
- postgresql@1.0
- { role: apache, version: '2.4' }
Running ansible-bundle site.yml
will search roles into the site-common.yml
file and
add to download queue, which already includes postgresql 1.0 and apache master.
Please note that each role is intended to be in its own repository, not in a folder.
- Syntax role/version changes to role@version. This simplifies the configuration in ansible.cfg and allows branches names such as feature/something in role version. If a versioned role with the previous syntax is found, will complain with a deprecation warning. The previous syntax will be obsoleted in v 0.7.
David Pedersen (david.3pwood AT gmail DOT com)
GNU Public License v2 (GPLv2)