Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/clrgit/ansible_make_role

Pre-compiler that turns single-file role.yml definitions into Ansible roles
https://github.com/clrgit/ansible_make_role

ansible ansible-roles

Last synced: about 2 months ago
JSON representation

Pre-compiler that turns single-file role.yml definitions into Ansible roles

Awesome Lists containing this project

README

        

# ansible-make-role

Pre-compiler that turns a single-file role definition into Ansible role files.
The single-file `role.yml` file combines the Ansible `main.yml` files from the
`defaults`, `vars`, `tasks`, and `meta` subdirectories with a YAML top-level
section for each file (`defaults:`, `vars:`, `tasks:` etc.)

## Usage

```
ansible-make-role -c|--clean -f|--force -g|--git -r|--roles=DIR -v|--verbose --version DIR...
```

`ansible-make-role` expects a `role.yml` file in each of the given directories
and generates an Ansible role in it. Existing `main.yml` files will be
overwritten or removed but other files won't be touched. `ansible-make-role`
search subdirectories of `./roles` if no dirctories was given on the command
line

## Description

The `make.yml` contains a section for each generated file so that eg. the
`tasks` section becomes the `tasks/main.yml` file. The supported sections are
`defaults`, `vars`, `tasks`, and `handlers`. Anything outside of those sections
(notably `dependencies`) goes to the `meta/main.yml` file

Example:

```yaml
---
dependencies: # Goes to meta/main.yml
- role: rails-server

defaults: # Goes to defaults/main.yml
appl_name: "myapp"
appl_domain: "mydomain.com"

vars: # Goes to vars/main.yml
appl_host: "{{ appl_name}}.{{ appl_domain }}"

tasks: # Goes to tasks/main.yml
- name: "Ensure Apache"
yum: name=httpd state=present
notify: restart_httpd

- name: "Ensure Apache is enabled"
service: name=httpd enabled=yes

handlers: # Goes to handlers/main.yml"
- name: restart_httpd
servide name=httpd state=restarted

...
```

## Options

`-c, --clean`
Clean the project by removing autogenerated files

`-f, --force`
Re-generate all files even if not needed. Useful if you forgot a
`--git` option

`-g, --git`
Also handle per-role .gitignore files. Note that existing .gitignore
files are overwritten

`-r, --roles=DIR`
Use DIR instead of default `./roles`

`-v, --verbose`
Report progress

`--version`
Print version

## Installation

Install it for the current ruby using:

$ gem install ansible_make_role

Please note that the gem name uses underscores but the command uses dashes ('ansible-make-role')