System configuration for the OpenDev Collaboratory
Go to file
Ian Wienand 028d655375 Add borg-backup roles
This adds roles to implement backup with borg [1].

Our current tool "bup" has no Python 3 support and is not packaged for
Ubuntu Focal.  This means it is effectively end-of-life.  borg fits
our model of servers backing themselves up to a central location, is
well documented and seems well supported.  It also has the clarkb seal
of approval :)

As mentioned, borg works in the same manner as bup by doing an
efficient back up over ssh to a remote server.  The core of these
roles are the same as the bup based ones; in terms of creating a
separate user for each host and deploying keys and ssh config.

This chooses to install borg in a virtualenv on /opt.  This was chosen
for a number of reasons; firstly reading the history of borg there
have been incompatible updates (although they provide a tool to update
repository formats); it seems important that we both pin the version
we are using and keep clients and server in sync.  Since we have a
hetrogenous distribution collection we don't want to rely on the
packaged tools which may differ.  I don't feel like this is a great
application for a container; we actually don't want it that isolated
from the base system because it's goal is to read and copy it offsite
with as little chance of things going wrong as possible.

Borg has a lot of support for encrypting the data at rest in various
ways.  However, that introduces the possibility we could lose both the
key and the backup data.  Really the only thing stopping this is key
management, and if we want to go down this path we can do it as a
follow-on.

The remote end server is configured via ssh command rules to run in
append-only mode.  This means a misbehaving client can't delete its
old backups.  In theory we can prune backups on the server side --
something we could not do with bup.  The documentation has been
updated but is vague on this part; I think we should get some hosts in
operation, see how the de-duplication is working out and then decide
how we want to mange things long term.

Testing is added; a focal and bionic host both run a full backup of
themselves to the backup server.  Pretty cool, the logs are in
/var/log/borg-backup-<host>.log.

No hosts are currently in the borg groups, so this can be applied
without affecting production.  I'd suggest the next steps are to bring
up a borg-based backup server and put a few hosts into this.  After
running for a while, we can add all hosts, and then deprecate the
current bup-based backup server in vexxhost and replace that with a
borg-based one; giving us dual offsite backups.

[1] https://borgbackup.readthedocs.io/en/stable/

Change-Id: I2a125f2fac11d8e3a3279eb7fa7adb33a3acaa4e
2020-07-21 17:36:50 +10:00
doc Add borg-backup roles 2020-07-21 17:36:50 +10:00
docker Update to gitea v1.12.2 2020-07-13 08:32:55 -07:00
hiera Remove elasticsearch01 2020-06-17 14:51:58 -07:00
inventory Merge "Forward openstack-infra ML to openstack-discuss" 2020-07-15 15:22:14 +00:00
kubernetes Update opendev git references in puppet modules 2019-04-20 18:26:07 +00:00
launch Merge "Change launch scripts to python3 shebangs" 2020-06-15 21:14:26 +00:00
manifests Cleanup old puppet management of release-volumes.py 2020-06-09 15:03:44 -07:00
modules/openstack_project UCA: mirror Victoria packages for Focal 2020-07-02 16:11:26 +02:00
playbooks Add borg-backup roles 2020-07-21 17:36:50 +10:00
roles openafs-client: Use PPA for Xenial ARM64 2020-06-22 14:01:53 +10:00
roles-test Remove Puppet 5 testing 2020-06-09 10:15:05 +10:00
testinfra Add borg-backup roles 2020-07-21 17:36:50 +10:00
tools Switch prep-apply.sh to use python3 2020-06-15 14:43:25 -05:00
zuul.d Add borg-backup roles 2020-07-21 17:36:50 +10:00
.ansible-lint Go back to using find with ansible-lint 2020-03-11 16:30:33 -05:00
.gitignore Ignore ansible .retry files 2016-07-15 12:04:48 -07:00
.gitreview OpenDev Migration Patch 2019-04-19 19:26:05 +00:00
bindep.txt Add libffi dev packages needed for ansible install 2016-10-04 15:20:00 -07:00
COPYING.GPL Add yamlgroup inventory plugin 2018-11-02 08:19:53 +11:00
Gemfile Update some paths for opendev 2019-04-20 09:31:14 -07:00
install_modules.sh Merge "Better checking for tags when cloning puppet modules" 2020-01-16 23:01:33 +00:00
install_puppet.sh Install the puppetlabs puppet package 2018-08-23 14:55:08 +10:00
make_swap.sh Use swapfile if no extra device is present 2019-07-17 10:37:30 -07:00
modules.env Stop cloning more puppet modules 2020-06-05 12:09:30 -05:00
mount_volume.sh Add support to launch-node for cinder attach 2016-04-19 11:07:23 -07:00
Rakefile Further changes to bring puppetboard online 2014-03-22 12:54:38 -07:00
README.rst Update some paths for opendev 2019-04-20 09:31:14 -07:00
run_k8s_ansible.sh Invoke run_k8s_ansible from its directory 2019-05-07 16:03:59 -07:00
run_puppet.sh Clean up bashate failures 2014-09-30 12:40:59 -07:00
setup.cfg Mention new mailing lists 2020-04-06 18:19:28 +00:00
setup.py Update to openstackdocstheme 2018-06-25 11:19:43 +10:00
test-requirements.txt Update to ansible-lint 4.1.0 2019-06-06 22:13:12 +00:00
tox.ini Split inventory into multiple dirs and move hostvars 2020-06-04 07:44:36 -05:00

Puppet Modules

These are a set of puppet manifests and modules that are currently being used to manage the OpenStack Project infrastructure.

The main entry point is in manifests/site.pp.

In general, most of the modules here are designed to be able to be run either in agent or apply mode.

These puppet modules require puppet 2.7 or greater. Additionally, the site.pp manifest assumes the existence of hiera.

See http://docs.openstack.org/infra/system-config for more information.

Documentation

The documentation presented at http://docs.openstack.org/infra/system-config comes from https://opendev.org/opendev/system-config repo's docs/source. To build the documentation use

tox -evenv python setup.py build_sphinx