Name
materia-manifest - metadata file for materia repos and components
Synopsis
<materia_repo>/MANIFEST.toml
,<component_directory>/MANIFEST.toml
Description
A TOML config file that sits at the root of materia-repository(5) or materia component that contains metadata describing the entity.
Manifest files are required for a repository or component to be considered valid. Blank manifest files are allowed.
Repository manifests
Options
secrets
: What secrets manager to use. Accepted values are age
(recommended), memory
, or file
.
For age
you may also specify a private key file to use with age.idents
.
hosts
: A TOML table containing hosts entries of the following format:
[hosts.localhost] components = ["caddy","openldap"] roles = ["base"]
roles
: A TOML table of containing roles entries of the following format:
[roles.base] components = ["nagios-agent"]
RoleCommand
: An external command ran on a host to determine what role(s) it has.
Snippets #TODO
: TODO
Example
secrets = "age"
age.idents = "/etc/materia/key.txt"
[roles.base]
components = ["nagios-agent"]
[hosts.warden]
components = ["dota_patch_bot"]
roles = ["base"]
[hosts.ivy]
components = ["authelia"]
Component manifests
Options
defaults
: Key-value pairs describing default variable/secret values for a component.
Example: defaults.containerTag = "latest"
services
: An array of service definitions, use to describe what systemd services should be started when a component is installed.
[[services]]
service = "SERVICE_NAME.service" # The name of the systemd service
RestartedBy = ["resource"] # List of resources that, if updated by a materia run, should trigger the service to be restarted
ReloadedBy = ["resource"] # List of resources that, if updated by a materia run, should trigger the service to be reloaded
Disabled = false # if true, don't enable or start this service
Static = false # Indicates whether the systemd service is generated by a Quadlet. Usually used for .timer files
scripts
: A list of resources that, despite not ending in .sh
, should be treated as script resources.
snippets
: Under construction. Used to indicate custom snippets. See materia-templates(5) for more details.
VolumeResources
: TODO. Used to indicate resources that should be installed inside a volume
Example
arcade-agent/MANIFEST.toml
[defaults]
port = "5656"
containerTag = "latest"
[[services]]
service = "arcade-agent.service"