Apereo CAS - WAR Overlay Initializr

Posted by Misagh Moayyed on February 28, 2021 · 8 mins read ·

Apereo CAS Initializr is a relatively new addition to the Apereo CAS ecosystem that allows you as the deployer to generate WAR Overlay projects on the fly with just what you need to start quickly. This post builds on top of the original blog entry and reviews recent enhancements to the Apereo CAS Initializr concerning support for additional project types and publishing Docker images.

This post specifically requires and focuses on:

Project Types

Resuming from the initial effort, the Apereo CAS Initializr is now able to support the generation of additional project types. The project selection is indicated using a type parameter. Let’s review a few examples together.

CAS Overlay

Just as before, you may generate a CAS WAR overlay project using the following command:

curl -k http://casinit.herokuapp.com/starter.tgz \
  -d dependencies="core,duo" -d type=cas-overlay \
  -d baseDir=overlay | tar -xzvf -

…which will generate a cas-overlay project based on the requested modules (i.e. dependencies) inside the overlay directory. Of course, note that the type parameter is optional here and is the default type for Apereo CAS Initializr.

CAS Spring Boot Admin Overlay

You may generate a CAS Spring Boot Admin WAR overlay project using the following command:

curl -k http://casinit.herokuapp.com/starter.tgz \
  -d type=cas-bootadmin-server-overlay \
  -d baseDir=overlay | tar -xzvf -

CAS Spring Cloud Configuration Server Overlay

You may generate a CAS Spring Cloud Configuration Server WAR overlay project using the following command:

curl -k http://casinit.herokuapp.com/starter.tgz \
  -d type=cas-config-server-overlay \
  -d baseDir=overlay | tar -xzvf -

CAS Spring Cloud Discovery Server Overlay

You may generate a CAS Spring Cloud Discovery Server WAR overlay project using the following command:

curl -k http://casinit.herokuapp.com/starter.tgz \
  -d type=cas-discovery-server-overlay   \
  -d baseDir=overlay | tar -xzvf -

CAS Management Server Overlay

You may generate a CAS Management Server WAR overlay project using the following command:

curl -k http://casinit.herokuapp.com/starter.tgz \
  -d type=cas-mgmt-overlay   \
  -d baseDir=overlay | tar -xzvf -

Advantages

In summary, here are a few reasons to take advantage of the CAS Initializr capabilities.

Low Maintenance Effort

The maintenance effort to manage and update multiple overlay projects as starting templates for deployments is now reduced to one unified codebase. Updating various version numbers to produce new versions of each overlay can be done centrally in one codebase without having to manually manage, update and keep track of different projects.

Note
It is expected that at some point, previous/existing overlay projects would be deprecated and ultimately removed, allowing the CAS Initializr to be the one true way to generate a starting template project for CAS deployments.

Uniform Builds

The structure and build process for each overlay project is now uniformly consistent and similar, which helps with reducing the learning curve and entry barriers for new adopters and users. Build tasks, customizations, and other relevant settings in this area are all managed centrally, and should mainly differ in the final produced artifact and not much in the way artifacts are built.

Automated Project Validation

Apereo CAS Initializr can validate each overlay project via consistent continuous integration builds, which of course allows for a more comfortable upgrade process as artifacts and version numbers change.

Docker Images

Once validation efforts succeed and are approved continuous integration system, Apereo CAS Initializr can automatically publish Docker images for each overlay project:

Dynamic Project Generation

The CAS Initializr can dynamically generate a starting project based on the requested modules and dependencies needed for a deployment. This behavior can be tailored to the user’s experience based on that input and the conditions that follow to generate additional references, files, starting templates, and more in the same project to make the deployment process more comfortable.

User Interface

CAS Initializr at this point is mainly a backend service and a few APIs. However, one could imagine that a graphical and modern user interface could be built on top of available APIs to help with the project generation task, especially for project newcomers.

So…

Start simple and make changes one step at a time. Once you have a functional environment, you can gradually and slowly add customizations to move files around.

I hope this review was of some help to you and I am sure that both this post as well as the functionality it attempts to explain can be improved in any number of ways. Please feel free to engage and contribute as best as you can.

Misagh Moayyed