This is a proposal for replacing the existing omero-server Ansible role with a set of omero component roles to allow the installation of decoupled OMERO components, initially server and web.
The existing omero-server Ansible role handles most of the steps for setting up OMERO.server, with the exception of dependencies which are installed by other roles. This includes installing and configuring both OMERO.server and OMERO.web, and although OMERO.web can be disabled it is not possible to install OMERO.web only.
Further more this role bundles omego
which could potentially be used independently of this role.
In addition Ansible 2.2 has a bug which means omego
is installed into the wrong virtualenv, breaking the role.
Split omero-server
into multiple Ansible roles:
- Create
/opt/omero
as the parent directory for all OMERO components - Possible: Include
omero
andomero-web
restart handlers so other roles can restart the server or web, though providing the handler are simple (a singleservice
task) this doesn't off much benefit. - This role may not be necessary since
omero-server
andomero-web
will have separate users.
- Install omego into a virtualenv:
/opt/omero/omego
- Alternative: install
omego
globally and name this roleomego
- Refactor the existing role
- Parent directory:
/opt/omero/server
- Download
OMERO.server
, symlink to/opt/omero/server/OMERO.server
- Web not supported
- Create an
omero
system user as at present - Alternative: create the system user
omeroserver
, thoughomero
seem fairly well established at present.
- Parent directory:
/opt/omero/web
- Possible: Use a virtualenv with system-site-packages for OMERO.web:
/opt/omero/web/venv
, as an alternative to installing Django and gunicorn globally - Download
OMERO.py
, symlink to/opt/omero/web/OMERO.web
- Create an
omeroweb
system user, modify the systemd service file
- Ideally
omego
should be able to symlink a downloaded package. - Possible:
omego upgrade
could upgradeOMERO.web
, i.e. copy the configuration. An alternative is to manage all configuration in an Ansible friendly manner outside OMERO.
- Existing playbooks will have to be updated if they don't use a tagged version of
omero-server
- OMERO components can be managed separately, supporting the future aim of decoupling OMERO.web.
- OMERO.web and OMERO.server configurations can be managed independently. For example a configuration that only affects web can be made without restarting OMERO.server.