awx/tools/docker-compose/docs/data_migration.md
Christian M. Adams 9672e72834
Consolidate the Local Docker installer and the dev env
- removes local_docker installer and points community users to our development environment (make docker-compose)
  - provides a migration path from Local Docker Compose installations --> the dev environment
  - the dev env can now be configured to use an external database
  - consolidated the Local Docker and dev env docker-compose.yml files into one template file, used by the dockerfile role
  - added a 'sources' role to template out config files
  - the postgres data dir is no longer a bind-mount, it is a docker volume
  - the redis socket is not longer a bind-mount, it is a docker volume
  - the local_settings.py.docker-compose file no longer needs to be copied over in the dev env
  - Create tmp rsyslog.conf in rsyslog volume to avoid cross-linking. Previously, the tmp code-generated rsyslog.conf was being written to /tmp (by default).  As a result, we were attempting to shutil.move() across volumes.
  - move k8s image build and push roles under tools/ansible
  - See tools/docker-compose/README.md for usage of these changes
2021-02-22 13:44:19 -05:00

2.2 KiB

Migrating Data from Local Docker

If you are migrating data from a Local Docker installation (17.0.1 and prior), you can migrate your data to the development environment via the migrate.yml playbook, or by using the manual steps described below.

Note: This will also convert your postgresql bind-mount into a docker volume.

Migrate data with migrate.yml

If you had a custom pgdocker or awxcompose location, you will need to set the postgres_data_dir and old_docker_compose_dir variables.

  1. Run the migrate playbook to migrate your data to the new postgresql container and convert the data directory to a volume mount.
$ ansible-playbook migrate.yml -e "migrate_local_docker=true" -e "postgres_data_dir=~/.awx/pgdocker" -e "old_docker_compose_dir=~/.awx/awxcompose"
  1. Change directory to the top of your awx checkout and start your containers
$ make docker-compose
  1. After ensuring your data has been successfully migrated, you may delete your old data directory (typically stored at ~/.awx/pgdocker).

Migrating data manually

  1. With Local Docker still running, perform a pg_dumpall:

Note: If Local Docker is no longer running docker-compose -f ~/.awx/awxcompose/docker-compose.yml up postgres

$ docker-compose -f ~/.awx/awxcompose/docker-compose.yml exec postgres pg_dumpall -U awx > awx_dump.sql
  1. Remove all local docker containers (specifically awx_postgres)
$ docker -f rm awx_postgres
  1. Template the new docker-compose.yml
$ ansible-playbook -i tools/ansible/inventory tools/ansible/sources.yml
  1. Start a container with a volume (using the new tools/docker-compose/_sources/docker-compose.yml)
$ docker-compose -f ../docker-compose/_sources/docker-compose.yml up postgres
  1. Restore to new awx_postgres
$ docker-compose -f ../docker-compose/_sources/docker-compose.yml exec -T postgres psql -U awx -d awx -p 5432 < awx_dump.sql
  1. Run the docker-compose.yml to start the containers
$ docker-compose -f ../docker-compose/_sources/docker-compose.yml up task
  1. Check to ensure your data migration was successful, then you can delete your the awx_dump.sql backup and your old data directory.