Skip to content

Resolution 013

Note

This resolution has been amended! The main change was to remove automatic git synchronisation; please see the file history for a full run-down.

  • Budget 007: Operator sync
  • Date: 2024-01-??
  • Deadline: 2024-01-XX
  • Size: Large

Summary

As highlighted in several tickets (e.g. #434, #467), several operators working together on the same server routinely run into deployment instability. This is due to the fact that we do not store the deployment version of the apps.

With this proposal, we would like to address the synchronisation of app deployment versions. This is being called "Operator sync". What follows is the design proposal which has already received feedback from operators on this pad.

Details (Budget 007)

We add support a config file ($ABRA_DIR/config.yml) which has these defaults:

We also add a abra config command which has the following shape:

🌻 ./abra config -h
NAME:
   abra config - Manage system-wide Abra configuration

USAGE:
   abra config command [command options]

COMMANDS:
   generate, g  Generate default configuration

OPTIONS:
   --help, -h  show help

If there is no $ABRA_DIR/config.yml or sync: false, nothing changes. When sync: true, only the abra app deploy / upgrade / rollback commands have new behaviour.

There is also a new command abra app sync <domain> which triggers a synchronisation.

When abra app deploy/upgrade/rollback/sync is run, here's what we do:

  • Read the OPERATOR_SYNC_VERSION env var as the version to deploy / upgrade from / rollback from

    • upgrade: if deployed version does not match OPERATOR_SYNC_VERSION, warn before overview
    • rollback: same as above!
  • Run the deployment

    • if successful, record a new OPERATOR_SYNC_VERSION
    • if unsuccessful, do not record a OPERATOR_SYNC_VERSION and ask operator to resolve

If --chaos is passed, we use the short commit hash instead of the version label.

Here's an example of the OPERATOR_SYNC_VERSION env var:

# in ~/.abra/servers/example.com/matrix.example.com.env
TYPE=matrix-synapse
OPERATOR_SYNC_VERSION=4.0.0+v1.93.0 # managed by Abra

Operator documentation will also be provided.

Budget amount: 200 EUR (10 hrs * 20 EUR/hr)

Who will implement this: (someone?)

When will the money be spent: Before mid-February 2024

What is the money for: Implementing the first steps of operator sync.