Application Packages - csap-platform/csap-core GitHub Wiki

Related :     csap-packages repository    


Overview


CSAP packages enable encapsulated capabilities to be integrated. The primary interface is provided via csap-api.sh

  • bash shell script with 5 core api_* method are optionally implemented that correspond to the deployment scenario
  • helper functions are sourced/available from the csap-package-linux package (csap-environment.sh). eg. print_with_head "some message", etc Note: apis can be "thin" wrappers to any linux technology (perl, go, groovey, etc.)

Background

Cloud software deployments universally adhere to rigorous Change Management . Simply stated - ssh sessions should never be used to configure or install software. Adhoc installation of software, or related configuration files , is strongly discouraged. Cloud self-managed Iaas tiers do NOT provide linux sys admins, nor do business teams fund sufficient admins for most(all?) projects. Industry practice is to place any artifact under source control, and use of a package manager to install. CS-AP provides package management and deployment capability that leverages industry standard deployment from binaries (.zip) via a maven repository, with configuration files store in git. Maven provides versioned wars files for java applications, and zips files for non-java. This might be complimented by other systems, such as http://puppetlabs.com/puppet/puppet-open-source. Review the document: Operating Costs . Downloading software off the internet and running on your desktop is cheap. CSAP automation significantly lowers costs - but Operating that stack 24/7/365 is typically $100K to $Millions. Has sufficient funding been provided for domain operators: eg. DBAs (Oracle/Mongo/Cassandra), Hadoop, etc.

Expertise required

  • Package builds: maven is used to build, version, and store zip files (java knowlege not requried).
  • linux based scripting language. CS-AP leverages bash scripting, CsAgent API includes bash and rest interfaces
  • Domain knowledge for package; this can vary widely based on complexity of component. Senior staff might be able to review install guides for open source packages; other will require formal training (eg. Oracle DBA certification or equivalent).

Getting Started

Desktop Setup: supporting GIT (svn, ...), maven, script (bash). Install the shelled addon for excellent scipting support.

What CSAP packages are available in shared repository?

Packages are very simple to create - with csap opensource packages including everything to get started. Refer to https://github.com/csap-platform/csap-packages

What is a Csap package ?

A CSAP Application Definition - defines all the technology and associated configuration necessary to 1 click deploy either a freshly imaged host (all packages, in the correct dependency order), or an updated version of a single software package.

A typical package consists of:

  • Open source distribution (eg. someOpenSource.zip ), typically stored on a accessible staging location
    • rather then retrieving from an internet location of varying SLA, it is recommended to stage 3rd party binaries on a intranet host(s)
    • http://csaptools.yourcompany.com - contains binaries of all CSAP maintained opensource packages (java, activemq, spring, tomcat,...)
  • Configuration files
    • stored in source control (Git, svn, cvs,...)
    • deployed/built as a versioned zip (using maven assembly for build process/automation)
    • Leverage variables & templates to promote package re-usable: variables values are set using Application Definition editor for the service
  • Optional: Data files (eg. mySchema.sql, dataSetup.vql, seedData.csv)
    • Data files, such as schema setup, data provisioning can be peformed as part of the package deployment
    • Alternately - a dedicated package can be used to manage data deployments separately (with sep

One or more of the above, combined with simple consoleCommands.sh provides console integration.

CSAP Package Types

  • Drivers: files needed to be on file system, with no specific run time associated with the installation and upgrade -examples: Java, Oracle Client, Tomcat
  • Monitors: no associated deployment, but performance capture desired.
    • examples: JMeter, VmWare Tools Daemon,
  • Full: binary distribution, plus on or more configuration files, plus deployment templates
    • Most Java projects
    • Most Open source projects: redis, activemq,
  • Agent Plugin : typically includes full package plus custom code integrated into csap-core
    • CSAP Httpd Package: agent generates worker.properties, and auto restarts on model changes
    • Csap Docker: full package, plus extensive UI integration to manage deployment
  • Docker Image: CSAP provides extensive support for docker deployments
    • configuration settings: including docker command, file systems, mounts, etc
    • 1 click wrapping of Tomcat / SpringBoot services.

Why build a service package?

  • It is a low/very low investment resulting in very high levels of automation.
    • Many packages typically only require 20-40 lines of shell scripting for starting/stopping/deploying, along with any configuration files.
  • It provides Project Operators a consistent management UI (starting, stopping, deploying, configuring, viewing logs, viewing process resources, etc.).
  • Automatic integration with CS-AP Performance Analysis tools, including both OS and JMX (If available).
  • It is highly re-usable - and can be deployed to support different teams and applications.

CS-AP wrapper packages can be deployed to 1 - or 101 - vms with a single click. The VM's can be "reloaded" with a single click to check pointed packages - including life cycle migrations (dev-qa-lt-prod). CS-AP configuration optionally includes life cycle specific settings, so prod/lt may be different then dev/qa.

How are services configured and customized (per lifecycle, per application, etc.)?

Refer to: Service Editor

Use of CSAP Service Editor enables teams to quickly configure a given deployment. Everything from OS process priority, system passwords, etc can be quickly set and configured on a per lifecycle basis. CSAP automatically includes key environment variables (working directory, lifecycle, etc.) for use by package developer.

How are services monitored and performance data collected?

Refer to: Service Endpoint Monitoring

Service Endpoint Monitoring highlights how teams can quickly customize the default alert levels set by the Application.

⚠️ **GitHub.com Fallback** ⚠️