Skip to Content

Shared configuration

config/ contains shared inputs and a generic pmiverse.conf template. Implementation-specific inventory belongs in the separate _pmiregistry repository. Only reviewed, non-secret configuration belongs in either repository.

Contents

  • pmiverse.conf is a generic Bash template with empty database, instance, and remote-host registries. It is never loaded implicitly by operational tools.
  • pmisetup.conf maps Odoo versions to repository catalogs, suite locations, branches, and repository-update log locations.
  • create_database.conf supplies the default comma-separated module list for database creation. Its [create_database] section has a modules setting, initially base,web. An explicit --modules replaces this list; base and web are always included. This file uses INI syntax and is read as data, not executed as shell code.

Other files that are intended to be rendered or installed elsewhere belong under ../templates/, not here. Versioned repository catalog data belongs under ../data/repos/.

Active configuration

Backup, restore (including legacy commands), laptop synchronization/deployment, and Bash completion default to /srv/pmiverse/_pmiregistry/config/pmiverse.conf. Set PMIVERSE_CONF to select another trusted file. The backup producer's --config FILE takes precedence over that environment variable. There is no fallback to this repository's template. Backup and synchronization require a readable active file; restore retains its existing built-in path defaults when the file is absent, and completion returns no registry candidates.

For a new installation, copy the template to a configuration location you own, then populate its registries before running operations:

mkdir -p /path/to/registry/config
cp config/pmiverse.conf /path/to/registry/config/pmiverse.conf
export PMIVERSE_CONF=/path/to/registry/config/pmiverse.conf

Use a persistent service environment for custom paths used by scheduled jobs. With the standard layout, provision the _pmiregistry checkout alongside _pmiconfig on every backup, restore, or synchronization host. Updating this checkout alone does not provision that registry on other machines.

The database registry uses six comma-separated columns: alias,database,version,source_dir_name,target_dir_name,backups_dirname. The final column is optional. A synthetic setup might contain:

PMIS_BACKUP_REMOTE_HOSTS="backup-a"
PMIVERSE_DB_REGISTRY='demo,demo.example,18,backup-a/demo.example,demo,'
PMIVERSE_INSTANCE_REGISTRY='primary,backup-a,18,/srv/pmiverse/_pmisuite18/data/filestore,/srv/pmiverse/_pmisuite18/data/backups,,,,demo'

Empty registries intentionally select no operational targets. Keep credentials out of the file. The current installation's configuration is maintained directly in _pmiregistry/config/pmiverse.conf; it is not generated from this template.

Per-database backup retention

Set PMIS_BACKUP_RETENTION in the active pmiverse.conf to newline-separated database,count rows. Keys are actual PostgreSQL database names, not restore aliases. For example:

PMIS_BACKUP_RETENTION='demo.example,30
staging.example,3'

Unlisted databases keep ten archives. Counts must be decimal integers from 1 through 999999999, without leading zeros; zero does not disable pruning. Blank lines and lines beginning with # are ignored. Duplicate names and malformed rows fail before database access or backup writes. Entries for other hosts are allowed. The setting also applies to explicit database selections. The six-column database and nine-column instance registry formats stay unchanged. This setting affects the Odoo 18 producer; the legacy Odoo 12 script keeps ten. Use the producer's --dry-run to inspect resolved counts. Lowering a count deletes excess matching archives after the next successful backup of that database.

Safety and ownership

pmiverse.conf is sourced by shell tooling, so its contents have executable shell semantics. Review changes as operational changes even when they look like data edits.

Do not add credentials, tokens, private keys, or host-only secrets. Host-local or deployed secret handling is outside this repository's documented responsibility.

This directory contains source-controlled inputs only; generated and runtime state does not belong here. Validate consumers through their documented inspection or dry-run modes where available. The repository does not provide a single configuration-only validation command.

See the documentation portal for the tools that consume each file.

The backup runbook defines the nine-column PMIVERSE_INSTANCE_REGISTRY format: instance ID, OS short hostname, Odoo version, filestore base, backup root, PostgreSQL host/port/user, and |-separated database aliases. Empty connection fields use libpq defaults. PMIS_BACKUP_REMOTE_HOSTS selects SSH sources, whose SSH aliases may differ from the registry's OS hostnames; PMIS_BACKUP_REMOTE_PATH remains backups/latest/ on each server. Remote producers retain their data/backups/ roots. Full-history rsync places copies in local data/backups/<host>/ folders, which the database registry's restore source paths select. Keep instance membership, host inventory, and local restore source paths aligned when adding or moving an instance.