matrix-docker-ansible-deploy/docs/just.md
Suguru Hirahara e36115a5b9
Add docs/just.md (#3811)
* Add docs/just.md as dedicated documentation of "just" commands

This is partially based on fb60ba67f6 (announcement of adoption of "just" program). It also refers descriptions on installing.md.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Create a table for examples

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Fix entries on the table

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Move the anchor link to "agru"

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Edit docs/faq.md: add an entry for the just

It is based on the existing explanation of the just on docs/maintenance-upgrading-services.md.

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Add links to docs/just.md

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Update docs/just.md: add a common note

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>

* Clarify "What is just" section on FAQ

* Update just.md

* Mention install-service

---------

Signed-off-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Suguru Hirahara <acioustick@noreply.codeberg.org>
Co-authored-by: Slavi Pantaleev <slavi@devture.com>
2024-11-23 11:52:48 +02:00

4.6 KiB

Running just commands

We have previously used make for easily running some playbook commands (e.g. make roles which triggers ansible-galaxy). Our Makefile is still around, and you can still run these commands.

In addition, we have added support for running commands via just - a more modern command-runner alternative to make. It can be used to invoke ansible-playbook commands with less typing.

The just utility executes shortcut commands (called as "recipes"), which invoke ansible-playbook, ansible-galaxy or agru (depending on what is available in your system). The targets of the recipes are defined in justfile. Most of the just recipes have no corresponding Makefile targets.

For some recipes such as just update, our justfile recommends installing agru (a faster alternative to ansible-galaxy) to speed up the process.

Here are some examples of shortcuts:

Shortcut Result
just roles Install the necessary Ansible roles pinned in requirements.yml
just update Run git pull (to update the playbook) and install the Ansible roles
just install-all Run ansible-playbook -i inventory/hosts setup.yml --tags=install-all,ensure-matrix-users-created,start
just setup-all Run ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-users-created,start
just install-all --ask-vault-pass Run commands with additional arguments (--ask-vault-pass will be appended to the above installation command)
just run-tags install-mautrix-slack,start Run specific playbook tags (here install-mautrix-slack and start)
just install-service mautrix-slack Run just run-tags install-mautrix-slack,start with even less typing
just start-all (Re-)starts all services
just stop-group postgres Stop only the Postgres service
just register-user john secret-password yes Registers a john user with the secret-password password and admin access (admin = yes)

While our documentation on prerequisites lists just as one of the requirements for installation, using just is optional. If you find it difficult to install it, do not find it useful, or want to prefer raw ansible-playbook commands for some reason, feel free to run all commands manually. For example, you can run ansible-galaxy directly to install the Ansible roles: rm -rf roles/galaxy; ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force.

Difference between playbook tags and shortcuts

It is worth noting that just "recipes" are different from playbook tags. The recipes are shortcuts of commands defined in justfile and can be executed by the just program only, while the playbook tags are available for the raw ansible-playbook commands as well. Please be careful not to confuse them.

For example, these two commands are different:

  • just install-all
  • ansible-playbook -i inventory/hosts setup.yml --tags=install-all

The just recipe runs ensure-matrix-users-created and start tags after install-all, while the latter runs only install-all tag. The correct shortcut of the latter is just run-tags install-all.

Such kind of difference sometimes matters. For example, when you install a Matrix server into which you will import old data (see here), you are not supposed to run just install-all or just setup-all, because these commands start services immediately after installing components which may prevent your from importing old data.