rattail-manual/docs/backup/install.rst
2021-10-31 21:18:04 -05:00

163 lines
5.1 KiB
ReStructuredText

.. highlight:: sh
==============
Installation
==============
As usual there is more than one way to go about this. You basically
have these 2 options out of the gate:
* manual install
* scripted install via Fabric
Choice is yours. If you are interested in Fabric, see
:doc:`/deploy/index` and the ``rattail_fabric2.backup`` module for
more info. That (rattail-fabric2) package is available on PyPI, or
can peek at the `module source`_.
.. _module source: https://kallithea.rattailproject.org/rattail-project/rattail-fabric2/files/master/rattail_fabric2/backup.py
Here we will only describe the manual installation.
The following links offer more background should you want it. But
we'll provide the basic commands you need, further below.
* :doc:`/base/reqs`
* :doc:`/base/venv`
* :doc:`/base/install/index`
Note also, the steps below are "established convention" so to speak,
but only in the Rattail world. If you follow along exactly then
things should work, but you of course can tweak as needed.
Virtual Environment
===================
If you don't already have one, make a home for virtual environments.
Note that we assume this folder should be owned by the ``rattail``
user account. If you don't have that, specify a different owner::
sudo mkdir -p /srv/envs
sudo chown rattail: /srv/envs
Then make your ``backup`` virtual environment::
sudo -u rattail python3 -m venv /srv/envs/backup
Backup App
==========
Install the Rattail package to the virtual environment. Note that we
specify ``rattail[backup]`` which causes it to also install Borg::
cd /srv/envs/backup
sudo -u rattail bin/pip install rattail[backup]
You can just use ``pip install rattail`` instead if you do not want Borg.
We then invoke Rattail to create our ``app`` folder, which is where
config will live::
cd /srv/envs/backup
sudo -u rattail bin/rattail make-appdir
And that's it for the software, unless you also want ``rsync``::
sudo apt install rsync
Backup Scripts
==============
It is suggested that you also create the following scripts, for
convenience.
Note that these scripts will *not* work properly until you add config
files; see :doc:`config`. But it's fine to get the scripts in place
first since they probably won't need to change later on.
Note also that these scripts are designed to be ran only by the
``root`` user. They will warn and not take action, when ran by anyone
else.
Script: ``rattail-backup``
--------------------------
The purpose of this script is simply to wrap the underlying ``rattail
backup`` command, specifying the appropriate config file etc. Any
arguments you pass to it will be passed on to the command.
Instead of listing the contents of this file here, we will direct you
to the "official" copy which can be deployed via Fabric:
`<https://kallithea.rattailproject.org/rattail-project/rattail-fabric2/rawfile/master/rattail_fabric2/deploy/backup/rattail-backup.mako>`_
You will need to (globally) replace the text ``${envname}`` with
``backup`` but otherwise that can be used as-is.
Place this file at ``/usr/local/bin/rattail-backup`` and make it
executable::
sudo chmod 0755 /usr/local/bin/rattail-backup
Run it like so; note that ``--help`` is not interpreted by the script
but rather is passed on to the underlying command::
sudo -H rattail-backup --help
If you were to run the "same" command but without the wrapper script,
it would look like::
cd /srv/envs/backup
sudo -H bin/rattail -c app/rattail.conf backup --help
Script: ``backup-everything``
-----------------------------
The purpose of this script is to give the admin user a single "entry
point" for running backups on "all" machines regardless of their
configuration details.
Really the ``rattail-backup`` script could be used for this too, but
``backup-everything`` just has a more authoritative sound to it.
Again instead of listing the file contents we will direct you to the
"official" copy which can be deployed via Fabric:
`<https://kallithea.rattailproject.org/rattail-project/rattail-fabric2/rawfile/master/rattail_fabric2/deploy/backup/backup-everything.mako>`_
Again you will need to (globally) replace the text ``${envname}`` with
``backup`` but you also should comment-out the line which tries to
invoke ``app/upgrade.sh`` (unless you have that and want to use it).
Place this file at ``/usr/local/bin/backup-everything`` and make it
executable::
sudo chmod 0755 /usr/local/bin/backup-everything
This script also wraps the underlying ``rattail backup`` command.
Note that it does *not* wrap the ``rattail-backup`` script (from
previous section).
Really unless you modify this script, it will *just* run the ``rattail
backup`` command, again with the appropriate config file, but without
any other arguments, so any extra ones you specify will *not* be
passed on to the underlying command.
Run it like so; note that it only takes one optional argument,
``--verbose``::
sudo -H backup-everything [--verbose]
If you were to run the "same" command but without the wrapper script,
it would look like::
cd /srv/envs/backup
sudo -H bin/rattail -c app/rattail.conf backup