Create a new ansible role
Contents
Create a new ansible role¶
Please use the ansible role cookiecutter to template a new role.
Note
If you are developing new ansible roles for computational materials science applications and would like to make them easier to find, we’d be happy to host them under the marvel-nccr github organisation - just drop us a line.
Testing a role¶
Locally¶
The simplest way to test a role is to:
Clone its repository into your roles
folder, e.g.
git clone https://github.com/marvel-nccr/ansible-role-simulationbase.git roles/marvel-nccr.simulationbase
Add your role to the playbook.yml
file with a tag:
- role: marvel-nccr.simulationbase
tags: [simulationbase]
vars:
simulationbase_vm_user: "{{ vm_user }}"
simulationbase_vm_user_public_key: "{{ lookup('file', './keys/aiida_tutorial_aiidaaccount.pub') }}"
simulationbase_hostname: "{{ vm_hostname }}"
simulationbase_codes_folder: "{{ vm_codes_folder }}"
Run the role on your existing VM (e.g. Quantum Mobile):
ansible-playbook.yml --tags simulationbase
Continuous Integration¶
Both existing marvel-nccr roles on ansible galaxy and those templated via the cookiecutter come with a few tools to help you test the roles individually. In the git repository of the role:
use the pre-commit hooks to
lint
your yaml files:pip install -r requirements.txt pre-commit install
From now on, lints on every commit.
install Docker and use
molecule
for a full test of your role:pip install -r requirements.txt molecule tests
This will first run the linters and then run your role on a docker container (which is thrown away after the test). It actually runs your role twice to make sure it’s idempotent.