* rewrite `just update` command to provide a one-line command to update everything * update prefix * uncomment update-self * Revert requirements.yml updates not belonging to this PR * Justfile and documentation updates to make things clearer --------- Co-authored-by: Slavi Pantaleev <slavi@devture.com>pull/3412/head
| @@ -342,7 +342,7 @@ As described in [How is the effective configuration determined?](#how-is-the-eff | |||||
| Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.DOMAIN/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features). | Refer to both of these for inspiration. Still, as mentioned in [Configuring the playbook](configuring-playbook.md), you're only ever supposed to edit your own `inventory/host_vars/matrix.DOMAIN/vars.yml` file and nothing else inside the playbook (unless you're meaning to contribute new features). | ||||
| **Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`). | |||||
| **Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`) or `just update` (which automatically does `git pull` and `just roles`). | |||||
| ### I'd like to adjust some configuration which doesn't have a corresponding variable. How do I do it? | ### I'd like to adjust some configuration which doesn't have a corresponding variable. How do I do it? | ||||
| @@ -356,7 +356,7 @@ Besides that, each role (component) aims to provide a `matrix_SOME_COMPONENT_con | |||||
| Check each role's `roles/*/*/defaults/main.yml` for the corresponding variable and an example for how use it. | Check each role's `roles/*/*/defaults/main.yml` for the corresponding variable and an example for how use it. | ||||
| **Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`). | |||||
| **Note**: some of the roles (`roles/galaxy/*`) live in separate repositories and are only installed after your run `just roles` (or `make roles`) or `just update` (which automatically does `git pull` and `just roles`). | |||||
| ## Installation | ## Installation | ||||
| @@ -2,7 +2,9 @@ | |||||
| If you've [configured your DNS](configuring-dns.md) and have [configured the playbook](configuring-playbook.md), you can start the installation procedure. | If you've [configured your DNS](configuring-dns.md) and have [configured the playbook](configuring-playbook.md), you can start the installation procedure. | ||||
| **Before installing** and each time you update the playbook in the future, you will need to update the Ansible roles in this playbook by running `just roles`. `just roles` is a shortcut (a `roles` target defined in [`justfile`](../justfile) and executed by the [`just`](https://github.com/casey/just) utility) which ultimately runs [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) to download Ansible roles. If you don't have `just`, you can also manually run the `roles` commands seen in the `justfile`. | |||||
| **Before installing** and each time you update the playbook in the future, you will need to update the Ansible roles in this playbook by running `just roles`. `just roles` is a shortcut (a `roles` target defined in [`justfile`](../justfile) and executed by the [`just`](https://github.com/casey/just) utility) which ultimately runs [agru](https://gitlab.com/etke.cc/tools/agru) or [ansible-galaxy](https://docs.ansible.com/ansible/latest/cli/ansible-galaxy.html) (depending on what is available in your system) to download Ansible roles. If you don't have `just`, you can also manually run the `roles` commands seen in the `justfile`. | |||||
| There's another shortcut (`just update`) which updates the playbook (`git pull`) and updates roles (`just update`) at the same time. | |||||
| ## Playbook tags introduction | ## Playbook tags introduction | ||||
| @@ -6,12 +6,13 @@ If you want to be notified when new versions of Synapse are released, you should | |||||
| To upgrade services: | To upgrade services: | ||||
| - update your playbook directory (`git pull`), so you'd obtain everything new we've done | |||||
| - update your playbook directory and all upstream Ansible roles (defined in the `requirements.yml` file) using: | |||||
| - take a look at [the changelog](../CHANGELOG.md) to see if there have been any backward-incompatible changes that you need to take care of | |||||
| - either: `just update` | |||||
| - or: a combination of `git pull` and `just role` (or `make roles`) | |||||
| - download the upstream Ansible roles used by the playbook by running `just roles` | |||||
| - take a look at [the changelog](../CHANGELOG.md) to see if there have been any backward-incompatible changes that you need to take care of | |||||
| - re-run the [playbook setup](installing.md) and restart all services: `just setup-all` | |||||
| - re-run the [playbook setup](installing.md) and restart all services: `just install-all` or `just setup-all` | |||||
| **Note**: major version upgrades to the internal PostgreSQL database are not done automatically. To upgrade it, refer to the [upgrading PostgreSQL guide](maintenance-postgres.md#upgrading-postgresql). | **Note**: major version upgrades to the internal PostgreSQL database are not done automatically. To upgrade it, refer to the [upgrading PostgreSQL guide](maintenance-postgres.md#upgrading-postgresql). | ||||
| @@ -26,7 +26,7 @@ If your distro runs within an [LXC container](https://linuxcontainers.org/), you | |||||
| - [`git`](https://git-scm.com/) is the recommended way to download the playbook to your computer. `git` may also be required on the server if you will be [self-building](self-building.md) components. | - [`git`](https://git-scm.com/) is the recommended way to download the playbook to your computer. `git` may also be required on the server if you will be [self-building](self-building.md) components. | ||||
| - [`just`](https://github.com/casey/just) for running `just roles`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually | |||||
| - [`just`](https://github.com/casey/just) for running `just roles`, `just update`, etc. (see [`justfile`](../justfile)), although you can also run these commands manually | |||||
| - An HTTPS-capable web server at the base domain name (`<your-domain>`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md). | - An HTTPS-capable web server at the base domain name (`<your-domain>`) which is capable of serving static files. Unless you decide to [Serve the base domain from the Matrix server](configuring-playbook-base-domain-serving.md) or alternatively, to use DNS SRV records for [Server Delegation](howto-server-delegation.md). | ||||
| @@ -5,6 +5,7 @@ default: | |||||
| # Pulls external Ansible roles | # Pulls external Ansible roles | ||||
| roles: | roles: | ||||
| #!/usr/bin/env sh | #!/usr/bin/env sh | ||||
| echo "[NOTE] This command just updates the roles, but if you want to update everything at once (playbook, roles, etc.) - use 'just update'" | |||||
| if [ -x "$(command -v agru)" ]; then | if [ -x "$(command -v agru)" ]; then | ||||
| agru | agru | ||||
| else | else | ||||
| @@ -12,9 +13,25 @@ roles: | |||||
| ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force | ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force | ||||
| fi | fi | ||||
| # Updates requirements.yml if there are any new tags available. Requires agru | |||||
| update: | |||||
| @agru -u | |||||
| # Updates the playbook and installs the necessary Ansible roles pinned in requirements.yml. If a -u flag is passed, also updates the requirements.yml file with new role versions (if available) | |||||
| update *flags: update-playbook-only | |||||
| #!/usr/bin/env sh | |||||
| if [ -x "$(command -v agru)" ]; then | |||||
| echo {{ if flags == "" { "Installing roles pinned in requirements.yml..." } else if flags == "-u" { "Updating roles and pinning new versions in requirements.yml..." } else { "Unknown flags passed" } }} | |||||
| agru {{ flags }} | |||||
| else | |||||
| echo "[NOTE] You are using the standard ansible-galaxy tool to install roles, which is slow and lacks other features. We recommend installing the 'agru' tool to speed up the process: https://gitlab.com/etke.cc/tools/agru#where-to-get" | |||||
| echo "Installing roles..." | |||||
| rm -rf roles/galaxy | |||||
| ansible-galaxy install -r requirements.yml -p roles/galaxy/ --force | |||||
| fi | |||||
| # Updates the playbook without installing/updating Ansible roles | |||||
| update-playbook-only: | |||||
| @echo "Updating playbook..." | |||||
| @git stash -q | |||||
| @git pull -q | |||||
| @-git stash pop -q | |||||
| # Runs ansible-lint against all roles in the playbook | # Runs ansible-lint against all roles in the playbook | ||||
| lint: | lint: | ||||