Automation Framework for WebSphere Application Server

We’ve developed a framework to help our customers automate the deployment of WebSphere applications and WebSphere configuration management. It includes the following features:

  • Fully automated deployment of WAR and EAR files to WebSphere Application Server.
  • No scripting is involved; you define your WAS configuration in a declarative fashion. No knowledge of WAS Jython APIs is required.
  • Integration with Apache Ant, Maven, Jenkins and other CM and build/deployment tools.
  • Convention over configuration. You only need to specify the minimal number of configuration settings and our framework will infer the rest. For example, if you have Web servers configured in a cell, the framework will automatically target the application to the Web servers.
  • Ability to specify various configuration settings as simple properties. This includes classloader order, JVM settings and others.
  • Support for all versions of WebSphere Application Server.
  • Support for complex deployment topologies (multiple nodes, clusters, Web server instances).
  • The framework uses thin client, so you don’t need to have WAS installed on the machine hosting the framework.
  • Support for checking the health of target severs before deployment. The framework can verify that the target application servers and node agents are running and that the application servers have enough heap memory.
  • Support for optionally restarting all affected application servers after deployment.
  • Support for deploying multiple applications as part of a single deployment command.
  • Intuitive format for defining environment-specific configuration properties in one or multiple properties files.

The framework comes with an intuitive and easy-to-use Python-based DSL for defining WAS configuration settings. It can be used for creating or updating any WebSphere resource or any configuration setting.

For example, a JMS queue can be created using this simple call:

was.create_queue("TestQ", reliability="RELIABLE_NONPERSISTENT", 
                 overrideOfQOSByProducerAllowed="FALSE" )

This example shows how to update a connection pool configuration:

was.update("/DataSource:TestDS/ConnectionPool:/", 
           maxConnections=100, minConnections=20)

The example below shows how to define a rule to update the rollover policy across all servers in a cell:

was.update("/StreamRedirect:/", rolloverType="TIME", maxNumberOfBackupFiles="180", 
           rolloverSize="1", baseHour="4", rolloverPeriod="24", formatWrites="true")

If you’re interested in trying out our WAS automation framework, contact us at devops at myarch.com.