eXist-db Ansible Role 1.0 released
August 26, 2021
Submitted by eXist Solutions GmbH.
Version 1.0 (Aug 15 2021)
This version has been applied to various eXist-db instances that are actively in production, including more complex setups that use production/staging/dev environments or data replication for high availability.
Ansible is an IT automation tool and the
existdb-ansible-role allows to install eXist-db by
• pulling from the git repo and building from source
• pulling a pre-packaged archive file from a remote server
• pushing a local pre-packaged archive file to the host
Installation methods can be switched by re-running Ansible.
This role installs eXist-db and performs all necessary tasks to run on a server (create user, install system service, miscellaneous setup).
Various config files get modified before starting eXist-db (
client.properties), this is configurable and may be used to tune behavioral and performance parameters.
By default, the exist/autodeploy directory is left untouched, so any xar files there get installed at first startup. This can be overridden to pre-install a defined set of xar packages for each host.
When upgrading or replacing a running exist DB (either by installing a newer or different archive, or switching install methods between source/archive installation), a backup gets created by default, and the data directory of the previous installation gets copied back into the new installation. This is configurable.
After a fresh exist installation the eXist-db admin password and user passwords get set. They are persistent and not re-set in later Ansible runs.
The existdb-ansible-role is intended for admins handling several eXist-db instances on various servers. In combination with other ansible roles it's possible to fully automate the setup and maintenance of servers.
- add support for eXist-db 5.x
- add multi-instance support (multiple eXist-db on the same host)
- improve memory and GC parameter configuration
- improve Jetty port and IP address configuration
- very flexible pre-installation of xar packages
Fixes and Improvements
- [bugfix] disable exist_webxml_from_template by default (thanks @sermo-de-arboribus)
- provide installation documentation
- cleanup exist_adminpass and exist_userpass_map formats
- add syslog support
- add logrotate support for automatic deletion of old log files
- add kernel memory tuning (swappiness)
- add install_method: 'none' (do not touch an installed version)
- make install/replace decision logic more robust
- adapt for deprecated XQuery functions in eXist-db 5.x (thanks @joewiz)
- review and improve documentation
- add Ansible tags
- replace deprecated Ansible constructs (thanks @OyvindLG)
- add Ansible meta data (thanks @jdwit)
- rewrite upload-xmlrpc.pl in python3
- can apply patches after git checkout on source build
- prepare for 'run xquery during startup' (add collection '/db/system/autostart')
- allow xars to be installed from path on destination host (add 'remote_src')
- help ansible check-mode by allowlisting non-modifying shell calls (add 'check_mode: false')
- make maven options configurable (add 'exist_mvn_options')
- disable restxq autostart (add 'exist_confxml_trigger_restxq_enable')
- ability to "live"-patch xars by adding attributes to 'xar_install', see 'exist_xar_' and 'exist_replication_'
Incompatibilities with Earlier Versions
- format of
exist_userpass_mapvariable has changed, see "Setting the Admin Password and Pre-installing User Accounts" in README.md
- recommended role invocation has changed to
include_role, see "Example Playbook" in README.md
- some config variables have been removed or renamed, please refer to