Skip to content

Jackdaw

This page gives an overview of the service, describing its current status, where and how it's developed and deployed, and who is responsible for maintaining it.

Service Description

Jackdaw provides a database that holds consolidated user administration records for staff and students in the University. Jackdaw get daily feeds from CamSIS, CHRIS, the Card Office and daily feeds out to a variety of services/systems.

Service Status

Jackdaw is currently live.

Contact

Technical queries and support should be directed to servicedesk@uis.cam.ac.uk and will be picked up by a member of the team working on the service. To ensure that you receive a response, always direct requests to servicedesk@uis.cam.ac.uk rather than reaching out to team members directly.

Issues discovered in the service or new feature requests should be opened as GitLab issues here (DevOps and Service Manager only).

Environments

Current infrastructure

Jackdaw is being re-development. During this time, the application has been moved to more stable hardware, and the database has been split away from the application.

Name URL Supporting VMs
Production https://jackdaw.cam.ac.uk jackdaw-live1.srv.uis.cam.ac.uk
jackdaw-live2.srv.uis.cam.ac.uk
Test https://jackdaw-test.srv.uis.cam.ac.uk/ jackdaw-test1.srv.uis.cam.ac.uk
jackdaw-test2.srv.uis.cam.ac.uk
Database Live jdbc:oracle:thin:@//ocm.admin.cam.ac.uk:1545/jackdaw.srv.uis.private.cam.ac.uk
Test jdbc:oracle:thin:@//ocm.admin.cam.ac.uk:1545/jackdawt.srv.uis.private.cam.ac.uk

Source code

The source code for future Jackdaw development is under the https://gitlab.developers.cam.ac.uk/uis/devops/iam/jackdaw-sunset group.

Technologies used

The following gives an overview of the technologies Jackdaw is built on.

Category Language Framework(s)
Server Perl PerlToolKit PLSQL Apache mod_perl
Client Jquery
Database Oracle

Operational and other documentation

The following gives and overview of how Jackdaw is deployed and maintained.

How and where Jackdaw is deployed

Jackdaw is deployed to a pair of servers and uses Keepalived to manage a VIP:

graph LR
    A[Client] ---> B[Keepalived<br/>131.111.8.21]
    subgraph Application
        B -- "http(s)" --> C["jackdaw-live1<br/>131.111.8.18"]
        B -- ssh --> C["jackdaw-live1<br/>131.111.8.18"]
        B -- "http(s)" --> D[jackdaw-live2<br />131.111.8.19]
        B -- ssh --> D[jackdaw-live2<br />131.111.8.19]
    end
    subgraph Database
        C --> E[(Oracle)]
        D --> E[(Oracle)]
    end

Deploying a new release

New releases are deployed via Ansible. Each server should be set to maintenance mode then the run-ansible-playbook.sh should be run limited to the node in maintenance mode. e.g.

# On jackdaw-live1
touch /maintenance_mode

# On client machine
eval $(op signin)
source ./jackdaw-live-setup
./run-ansible-playbook.sh -i jackdaw-live jackdaw-useradmin-playbook.yml --diff --limit jackdaw-live1

# On jackdaw-live1
rm /maintenance_mode

# On jackdaw-live2
touch /maintenance_mode

# On client machine
./run-ansible-playbook.sh -i jackdaw-live jackdaw-useradmin-playbook.yml --diff --limit jackdaw-live2

# On jackdaw-live2
rm /maintenance_mode

Other documnetation

Service Management and tech lead

The service owner for Jackdaw is Vijay Samtani

The service manager for Jackdaw is Dr Ujjwal Das

The following DevOps engineers have access to the Jackdaw service: