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.

Release: https://github.com/eXist-db/existdb-ansible-role/releases/tag/v1.0

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 (wrapper.conf, conf.xml, web.xml, 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.

New Features

  • 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_adminpass and exist_userpass_map variable 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 defaults/main.yml or README.md

News items may be commercial in nature and are published as received.