The ace-box-ext-template
provides a template structure and examples of how to create a custom ACE-Box use case.
It's important that your external use case complies to a specific folder structure. Most importantly, a folder roles
need to be available at the repository root that includes at least a my-use-case
(literal, not renamed) folder.
This roles
folder and all of it's contents are synced with the ACE-Box's Ansible workdir. Ansible is used to provision use cases including external ones. Upon a successful content sync, Ansible tries to use this my-use-case
folder as an Ansible role.
An Ansible role is expected to have the following structure:
roles/
my-use-case/
defaults/
main.yml
tasks/
main.yml
...
For more information, please see the official Ansible documentation.
The my-use-case
role can itself source other Ansible roles. Such roles can either be provided as part of the external repository or included from the ACE-Box default roles. A list of ACE-Box roles can be found here. Please also see the examples_roles
folder for examples.
All default variables can be overriden for an external use case. This can happen in two ways:
- A
defaults/main.yml
is created and added to the respective role directory (e.g.roles/jenkins/defaults/main.yml
). All external role directories and files are synced with the ACE-Box. The externalmain.yml
file would therefore override any ACE-Box defaultmain.yml
. Attention: This requires that all values in the originalmain.yml
are also set in the externalmain.yml
. - A
ace-ext.config.yml
file is added to the repo root. All variables within this file will override the variables set by the ACE-Box. E.g.dashboard_password: "supersecret"
will override the defaultdashboard_password
set by the ACE-Box.
For most tools, configurations can be applied after they are installed. No so much for Jenkins. Jenkins requires all configuration being present the moment it's installed.
In case your use case requires Jenkins configurations (folders, pipelines, jobs, ...), a special variable include_jenkins_value_file
can be set that allows including additional configuration. The value of this variable must be a path to a valid Jenkins Helm chart values file. An example of this procedure can be found in the demo-default
use case.
In case use case specific information shall be shown on the dashboard, there's an option to add custom configuration. This way, use case specific credentials, links to tools, previews and links to guides can be added. An example for custom configuration can be found in the examples.
When an ACE-Box with external use case is provisioned by the DTU team, make sure to grant read access to the Github ace-box-dtu team. This allows them to source the use case during their provisioning process.