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"