The IDR contains two main groups of servers:
The production (public-facing) IDR (3 servers):
- Database
- OMERO.servers
- Nginx gateway
All of the provisioning and deployment in the IDR is done using Ansible 2.10.
All ansible commands should be run from a shell in the ansible
directory.
cd ../ansible
You must first install the required galaxy roles:
ansible-galaxy install -r requirements.yml
The ansible.cfg
configuration file will install the roles into the vendor
directory.
The IDR is currently hosted on OpenStack, see below for an example Ansible playbook for provisioning compute, storage and networking.
The Ansible openstack modules require the shade
python module.
Network: idr
Instances:
idr-database
: PostgreSQL database serveridr-omeroreadwrite
: Read-write OMERO.server including OMERO.webidr-omeroreadonly*
: Read-only OMERO.servers including OMERO.webidr-proxy
: Nginx gateway with custom caching configuration
Volumes:
idr-database-db
: PostgreSQL data directoryidr-omeroreadwrite-data
: OMERO data directoryidr-proxy-nginxcache
: Nginx cache directory
idr-management
: An instance running Munin for monitoring the production IDR platform- Security rules to restrict external access.
- Ansible hostgroup metadata is set on each instance to ensure the playbooks automatically run against the correct hosts.
- One floating IP attached to
idr-proxy
. All other instances will only be accessible by using this node as a proxy.
You will need to customize the variables at the top of openstack-create-infrastructure.yml
to fit with your OpenStack cloud.
In particular, you must define a list of SSH public key(s), for example:
- idr_keypair_keys: ["ssh-rsa SSH_PUBLIC_KEY"]
You must have a Rocky Linux 9 cloud image (or equivalent) available.
Ensure you can login to OpenStack from the command line using an OpenStack RC file or equivalent, and run:
ansible-playbook -i localhost, --diff openstack-create-infrastructure.yml
This playbook will create a set of VMs on the OpenStack cloud. You must
associate the proxy host to a floating IP either using the OpenStack UI or via
the openstack
command-line interface:
$ openstack floating ip list
$ openstack server add floating ip <proxy_server_name> <ip>
Ensure this playbook successfully runs to completion before deploying the IDR.
Warning: At present the nova
command may be used to attach additional network interfaces to instances.
nova
does not support clouds.yaml
.
This will be fixed when the openstack
command-line client supports this feature.
You should be able to install the IDR on other clouds or physical hardware by provisioning the resources yourself.
All servers must be running Rocky Linux 9.
An example static inventory is included in inventories/ansible-hosts
.
For a minimal install you must have one host in each of:
idr-database-hosts
idr-omero-hosts
idr-proxy-hosts
The other groups can be empty.
Once you have set up your servers you can deploy the IDR.