Migrate from MongoDB to PostgreSQL

Since release 2019.2, PostgreSQL is used as the backend database system of the Inmanta server instead of MongoDB. This page describes how to migrate an Inmanta server running on MongoDB to PostgreSQL.

Note: This procedure doesn’t perform a full database migration. Existing versions of a configurationmodel will not be migrated to the PostgreSQL database. As such, it is required to create a new version of the configuration model after the migration by recompiling the model. The following things will be migrated:

  • Projects
  • Environments (including environment settings)
  • Forms + Records
  • Parameters

Migration procedure

Step 1: Install and configure PostgreSQL

This can be done by following step 2 and step 3 of the Inmanta installation guide.

Step 2: Stop and update the Inmanta server

sudo systemctl stop inmanta-server
sudo yum update -y python3-inmanta python3-inmanta-server python3-inmanta-agent

Step 3: Migrate the database

The database migration tool can be executed with the inmanta-migrate-db command.

inmanta-migrate-db --mongo-database inmanta --pg-database inmanta --pg-username inmanta

The full listing of all options of the inmanta-migrate-db command can be obtained via the --help option:

inmanta-migrate-db --help

Usage: inmanta-migrate-db [OPTIONS]

  Migrate the database of the Inmanta server from MongoDB to PostgreSQL.

  Note: This script only migrates the collections: Project, Environment, Parameter, Form andFormRecord.

Options:
  --mongo-host TEXT      Host running the MongoDB database.
  --mongo-port INTEGER   The port on which the MongoDB server is listening.
  --mongo-database TEXT  The name of the MongoDB database.
  --pg-host TEXT         Host running the PostgreSQL database.
  --pg-port INTEGER      The port on which the PostgreSQL database is
                         listening.
  --pg-database TEXT     The name of the PostgreSQL database.
  --pg-username TEXT     The username to use to login on the PostgreSQL
                         database
  --pg-password TEXT     The password that belongs to user specified with
                         --pg-username  [required]
  --help

Step 4: Set the database connection details

This can be done by following step 4 of the Inmanta installation guide.

Step 5: Start the Inmanta server

Start the Inmanta server with the following command:

sudo systemctl start inmanta-server

Step 6: Create a new version of the configurationmodel

Create a new version of each configuration model by clicking on the “Recompile” button in the dashboard or via de CLI with the inmanta export command.