This is a role to prepare a machine for deployment of one of the PerfSONAR bundles. This role is designed to be applied to all hosts in the perfSONAR mesh, and used in conjunction with other perfsonar "bundles". This role installs two bundles :
perfsonar-tools
These are the two underlying packages for the basic creation of a mesh. In our use case, the nodes with this role applied will be self-contained: they will store their own data and have access to their web interfaces.
The perfsonar documentation suggests the execution of scripts provided by their packages for configuring the desired endpoint. This has a few issues associated:
- The execution of a script is likely not to be idempotent, which makes it difficult to ensure a desired state.
- Failures in scripts are often hard to isolate, since the script simply exits. Breaking up scripts into tasks makes it easier to isolate where the error or issue is and debug it or address it.
- Writing tasks in a "plain-language" format like YAML makes it easier for new devs or maintainers to understand what the role does, instead of reading through inscrutable shell scripts.
In principle, how the state is achieved is irrelevant, as long as the correct state is achieved. We can factor out the
This requires only the basic Ansible requirements.
Role variables are kept in defaults/main.yml
and vars/main.yml
. Default variables can be used. Overwrite these if you wish
in the vars/main.yml
variables file.
This role does not express any dependencies.
If you define a perfsonar-mesh group in your inventory with all of the host groups in the perfSONAR mesh as your children groups, then you can apply this role to them as follows:
- hosts: perfsonar-mesh
roles:
- { role: perfsonar-base, become: true }
Apache-2.0
Bruce Becker CSIR Meraka Institute