Anaconda Enterprise 4 Repository backup and restore procedure#
This guide is for backing up and restoring an Anaconda Enterprise 4 Repository instance that uses local file system storage. If your instance uses Amazon S3 or any other storage provider, please consult their specific documentation on backup and restore procedures.
Before you start#
These instructions are for a Repository that is:
Installed in the directory
/home/anaconda-server/repo
as suggested by the installation guide.Owned by the
anaconda-server
user.Using the storage directory
/opt/anaconda-server/package-storage
.Storing the configuration file in
/etc/anaconda-server
.
If any of these items are different for your instance, modify these instructions accordingly.
Unless noted, run all shell commands while logged in as the
anaconda-server
user. Usingsudo
privileges, log in as theanaconda-server
user with this command:sudo su - anaconda-server
Execute all commands in the working directory
/home/anaconda-server
:$ pwd /home/anaconda-server
Backup#
Before starting the backup process, shut the service down using supervisorctl
:
$ supervisorctl stop all
anaconda-server: stopped
$ supervisorctl status
anaconda-server STOPPED Jul 6 05:05 PM
Make a $VERSION
environment variable and set it to the version of the
currently installed Anaconda Enterprise 4 Repository:
$ VERSION=`conda list anaconda-server --json | python -c 'import sys, json; print json.load(sys.stdin)[0]["version"]'`
$ echo $VERSION
2.33.27
This version string will be used in all backup file names.
It’s also useful to add a timestamp to the files, so generate one now:
$ TIMESTAMP=`date +%Y-%m-%d`
$ echo $TIMESTAMP
2018-07-30
Code/Binaries#
Generate a tarfile archive with the installed code, binaries and any dependencies:
$ tar -cpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar --exclude var/run -C /home/anaconda-server repo/
$ sha1sum anaconda-server-repo-$VERSION-$TIMESTAMP.tar > anaconda-server-repo-$VERSION-$TIMESTAMP.tar.sha1
Notice that this also generated a SHA1 checksum. This checksum will be used to verify when you restore the archive.
Configuration#
This step is necessary only if you stored Anaconda Enterprise 4 Repository’s configuration
in a custom location outside of the instance installation folder
(usually /home/anaconda-server/etc/
).
These commands show how to generate the tarfile if the configuration is stored
in /etc/anaconda-server
.
Generate the tarfile with its SHA1 checksum:
$ tar -cpsf anaconda-server-etc-$VERSION-$TIMESTAMP.tar /etc/anaconda-server
$ sha1sum anaconda-server-etc-$VERSION-$TIMESTAMP.tar > anaconda-server-etc-$VERSION-$TIMESTAMP.tar.sha1
Storage#
As before, create a tarfile archive and its checksum with the contents of the package storage location:
$ tar -cpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/ package-storage
$ sha1sum anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar > anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar.sha1
Database#
Generate a dump of Anaconda Enterprise 4 Repository’s MongoDB database. Anaconda recommends you follow MongoDB’s guidelines for backup and restore. This guide uses MongoDB tools:
$ mongodump --host=127.0.0.1 --port=27017 --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
$ sha1sum anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive > anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive.sha1
.bashrc#
If you chose to let the Anaconda Enterprise 4 Repository installer update the .bashrc
file of the user anaconda-server
, back it up:
$ cp /home/anaconda-server/.bashrc anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh
$ sha1sum anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh > anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh.sha1
Restore#
Before you start#
Verify that the restore environment meets the requirements listed in the Installation Guide for Anaconda Enterprise 4 Repository. You will need:
MongoDB (any supported version) installed
A user account (usually
anaconda-server
)A storage directory (usually
/opt/anaconda-server/package-storage
) owned by the Anaconda Enterprise 4 Repository user account. This is only needed if you’re using a local filesystem as a storage backend.
Run all shell commands while logged in as the
anaconda-server
user, as you did when backing up Anaconda Enterprise 4 Repository. Usingsudo
privileges, log in as theanaconda-server
user with this command:sudo su - anaconda-server
Execute all commands in the working directory
/home/anaconda-server
.
Verify checksums#
Verify the integrity of the backup files:
$ sha1sum --check *.sha1
anaconda-server-bashrc-2.33.27-2018-07-30.sh: OK
anaconda-server-mongodb-2.33.27-2018-07-30.archive: OK
anaconda-server-package-storage-2.33.27-2018-07-30.tar: OK
anaconda-server-repo-2.33.27-2018-07-30.tar: OK
.bashrc#
If you backed up the .bashrc
file of the user anaconda-server
, restore it:
cp anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh /home/anaconda-server/.bashrc
After restoring this file, log out and log in as anaconda-server
again for
the changes to take effect.
Database#
If you followed the Anaconda Enterprise 4 Repository
Installation Guide, MongoDB is up and running and you can
use mongorestore
to restore the database archive:
mongorestore --host=127.0.0.1 --port=27017 --db=binstar --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
Storage#
Assuming that the storage directory is /opt/anaconda-server/package-storage
,
restore it with:
tar -xpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/
Code/Binaries#
Restore the code and binaries:
tar -xpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar -C /home/anaconda-server
Restore the supervisord
configuration:
repo/bin/anaconda-server-install-supervisord-config.sh
The server should now be up and running. Check the status with supervisorctl
:
$ repo/bin/supervisorctl status
anaconda-server RUNNING pid 8446, uptime 0:03:18