mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-09-29 11:10:10 +00:00
3.8 KiB
3.8 KiB
Guidance for AI agents
This file gives AI coding agents the minimum context for working on this repository. Human contributors may find it a useful summary too.
What this is
An Ansible playbook that installs and manages a Matrix homeserver and dozens of related services, each running as a Docker container wrapped in a systemd service.
Layout
setup.yml: the main playbook, listing all roles.roles/custom/: roles maintained in this repository.roles/galaxy/: external roles, downloaded according torequirements.ymlvia agru (preferred) oransible-galaxy. Runjust rolesto install them (orjust updateto also pull the playbook itself). Editing these roles locally is fine while preparing or testing a fix, but the changes get wiped on the next roles update, so they must be synced back to the role's upstream repository, followed by a version pin update inrequirements.yml.group_vars/matrix_servers: the main playbook wiring between roles. Check affected mappings on role bumps. Values a role can construct by itself belong in the role'sdefaults/main.yml, not here.docs/: current configuration and lasting procedures, one page per component. Do not use component pages as another changelog for role releases; correct stale examples instead.molecule-shared/: files shared by the roles' Molecule scenarios (Python and Ansible dependencies, pinned helper container images).i18n/: translation infrastructure. Do not edit locale files by hand; they are managed by automation.CHANGELOG.md: user-facing announcements, newest first. Announce new or removed components, shared behavior changes, and migrations beyond role validation. The affected role'stasks/validate_config.ymlshould report routine variable renames or removals. Skip the changelog entry if that validation gives an actionable error. Correct any stale docs or examples instead. When adding an entry, explain in the pull request why it is needed and what affected users must do. For a Backward Compatibility entry, explain why validation alone cannot cover the change and how the migration gate handles it.
Conventions
Follow the style guide for playbook developers. In particular:
- Variable prefixes match the role directory name.
- Playbook-extensible list variables use the
_auto+_customsplit;_customis reserved for users. - Renamed or removed variables get a validation entry, so stale user configuration produces an error instead of being silently ignored. Each role deprecates its own variables in its
validate_config.yml; thematrix_playbook_migrationrole covers eliminated roles and very-early validation, and also gates breaking changes viamatrix_playbook_migration_expected_version(see the style guide). - Every file carries SPDX license headers (REUSE specification).
- Roles may carry a Molecule scenario, proving the component starts and does not choke on the configuration the role rendered. Run one with
just molecule <role>(no argument lists the roles that have one); CI runs only the scenarios of roles a push touched. See Molecule testing for roles before writing one - roles here need context a standalone role does not. - New components must be registered in
setup.yml,group_vars/matrix_servers,docs/README.md,README.md,docs/container-images.md, and get aCHANGELOG.mdentry.
Other notes
- Documentation examples use
example.com,@alice:example.com, and the other placeholder values listed in the style guide. - Write role tasks concurrency-safe: use
ansible.builtin.tempfilefor temporary files (removed in analwaysblock), never fixed shared paths. - One logical change per commit.