The Deploy Tool

26
THE DEPLOY TOOL

description

The Deploy Tool. Definition (Wikipedia). What is deployment ? “Software deployment is all of the activities that make a software system available for use .” 1. Install Software 2. Customize local configuration file(s) passwords, remote endpoints, …. executable(s) + libraries. - PowerPoint PPT Presentation

Transcript of The Deploy Tool

Page 1: The Deploy Tool

THE DEPLOY TOOL

Page 2: The Deploy Tool

Definition (Wikipedia) What is deployment ?

“Software deployment is all of the activities that make a software system available for use.”

1. Install Software

2. Customize local configuration file(s)passwords, remote endpoints, …

executable(s) + libraries

Page 3: The Deploy Tool

Situation 2010 Java

Restart installs softwareLog file stored locally Passwords had to be hardcoded or stored separately

in funny locations

C/C++Restarted installs softwareCopy to diskAuxiliary files accessed via network

No Standard Location !

No Standard Location !

Page 4: The Deploy Tool

Analysis Deployment information is de facto not

standardizedDefault installation directoryDirectory structureProcess name…

No flexible way to install a product No influence on file/directory structureNo post-install changes (e.g. tailoring of config files)No configurable backup policy

Deployment Standardization Document

Page 5: The Deploy Tool

Suggestion Define deployment configuration in file

CommonBuild’s product.xml is a good place○ Developers already know this○ Some deployment information is already there

No need for an additional system

Creation of an installation procedureUses product.xml to deploy applicationProjects should have certain deployment flexibility

Page 6: The Deploy Tool

A Closer Look What to we need ?

File and directory structureInstallation locationBackup policyProcess nameMore ?

NomenclatureProduct is the name of the software as from repo

○ E.g. LSA serverApplication is the concrete instance

○ LHC LSA Server

Page 7: The Deploy Tool

Deployment.xml (product.xml)...

<application name=“jmsagent”>

<deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >   <file name="jmsconfig.xml" mask=“755" />   <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/nfs/fgr/”/> <file name="log/log4j.properties“ source=“svn://...”/>  </directory>   <directory name="log" mask="750" /> <backupPolicy keepBackups="2"/> <replaceString> <file name="bin/start.sh" var="VAR_1" value="my value" /> </replaceString> </deployment></application>...

Page 8: The Deploy Tool

The Deploy Tool

Page 9: The Deploy Tool

The Deploy Tool What is it for ?

Simplifying deployment process & reduce your workloadAllows developers to take influence on the installation

○ Takes information from deployment configEnforces deployment standardsReduces upgrade time by automation

deploy

MAVEN

CmbBuild

Page 10: The Deploy Tool

The Deploy Tool and Maven Maven assembly creates a tarball

Assembly.xml required

Deploy Copies tarball to local diskCreates backupExtracts tarball to target install dirCopies aux filesPreserves directories/files from previous installationSends deployment notification (mail + STOMP)

Page 11: The Deploy Tool

TAR.GZ

Default installation Java (Maven)

deployquery product info

/opt/…

NEXUS/Artifactory

Deployment Config

Page 12: The Deploy Tool

Default installation C++

deploy

/opt/…

Executable + Aux

RepositoryDeployment

Config

Page 13: The Deploy Tool

Features Deploy ToolNotification

Preserve Files

Automatic Backups

Create Directories

Add additional Files

Set Access Rights

Create Install Log

Startscript Creation

Simulation Mode

Checkout from SVN Safety checks

Page 14: The Deploy Tool

Summary Unified way to install software Allows to simply customize installation Main tool in CO for Java & (many) C++ services Simplifies integration test Reduces workload for developers Standardises deployment Easy to extend Supports Maven (Artifactory & Nexus) Supports CommonBuild

Page 15: The Deploy Tool
Page 16: The Deploy Tool

copera@cs-ccr-dev4:/)deploy -p diamon-notifier -a diamon-notifier -t /tmp/del[ INFO ] cmnbuild Found only one Application : diamon-notifier[ INFO ] cmnbuild Creating dependency file list..[ INFO ] install -------------------------------------------------------[ INFO ] install[ INFO ] install Installation of application 'diamon-notifier' for product 'diamon-notifier'[ INFO ] install[ INFO ] install Application : diamon-notifier[ INFO ] install Product : diamon-notifier[ INFO ] install Version : 1.9.4-002 (PRO)[ INFO ] install Release Date : Thursday, March 5, 2009 09:26:44[ INFO ] install Source : /user/pcrops/dist/accsoft/diamon/diamon-notifier/PRO[ INFO ] install Started on : Fri, 26 Apr 2013 10:48:30[ INFO ] install Target directory is : /tmp/del[ INFO ] install Triggered by : ('felixehm', 'copera')[ INFO ] install Host : cs-ccr-dev4.cern.ch[ INFO ] install Force installaton is : False[ INFO ] install Automatic rollback : False[ INFO ] install Keeping backups : 1[ INFO ] install SimulationMode : False[ INFO ] install[ INFO ] install Starting PreInstallation for diamon-notifier in /tmp/del[ INFO ] install Creating backup for /tmp/del (max 1 are kept)[ INFO ] install Creating /tmp/del[ INFO ] install Preinstallation finished[ INFO ] install Postinstallation starts[ INFO ] install Postinstallation finished[ INFO ] install Sending notifications to []

Page 17: The Deploy Tool

product.xml<products>  <product name="diamon-agent-jms" version="1.0.2" directory=“/nfsrepo/ccsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>      <application name="jmsagent"> ...     </application>

  </product></product>

Page 18: The Deploy Tool

product.xml<products>  <product name="diamon-agent-jms" version="1.0.2" directory=“/nsfrepo/ccsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>      <application name="jmsagent"> ...     </application>

  </product></product>

Location of source file

Location of source can be .tar.gz or directory

Page 19: The Deploy Tool

Introducing Deployment Info<products>  <product name="diamon-agent-jms" version="1.0.2” directory="accsoft/diamon/diamon-agent/jms">

<application name=“jmsagent”> <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask=“755" />          <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/user/nfs/fgr/” /> <file name="log/log4j.properties“ source=“svn://...”/>       </directory>       <directory name="log" mask="750" />     </deployment> </application>       </product></product>

File are copied from source directory

Page 20: The Deploy Tool

Introducing Deployment Info<products>  <product name="diamon-agent-jms" version="1.0.2” directory="accsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>

<application name=“jmsagent”> <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask=“755" />          <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/user/nfs/fgr/” /> <file name="log/log4j.properties“ source=“svn://...”/>       </directory>       <directory name="log" mask="750" />     </deployment> </application>       </product></product>

File are copied from arbitrary directory

Page 21: The Deploy Tool

Introducing Deployment Info<products>  <product name="diamon-agent-jms" version="1.0.2” directory="accsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>

<application name=“jmsagent”> <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask=“755" />          <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/user/nfs/fgr/” /> <file name="log/log4j.properties“ source=“svn://...”/>       </directory>       <directory name="log" mask="750" />     </deployment> </application>       </product></product>

File from SVN

Page 22: The Deploy Tool

Backup Policy<products>  <product name="diamon-agent-jms" version="1.0.2” directory="accsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>

<application name=“jmsagent”> <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask=“755" />          <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/user/nfs/fgr/” /> <file name="log/log4j.properties“ source=“svn://...”/>       </directory>       <directory name="log" mask="750" /> <backupPolicy keepBackups="2"/>     </deployment>

      </product></product>

.

..agent-jms/agent-jms.1/agent-jms.2/

Page 23: The Deploy Tool

Replace Strings in Files <products>  <product name="diamon-agent-jms" version="1.0.2” directory="accsoft/diamon/diamon-agent/jms"> <desc>Diamon central JMS agent</desc>

<application name=“jmsagent”> <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask=“755" />          <file name="log/log4j.properties" /> <file name="log/log4j.properties“ source=“/user/nfs/fgr/” /> <file name="log/log4j.properties“ source=“svn://...”/>       </directory>       <directory name="log" mask="750" /> <backupPolicy keepBackups="2"/> <replaceString>        <file name="bin/start.sh" var="VAR_1" value="my value" />    </replaceString>     </deployment>    </product></product>

Page 24: The Deploy Tool

Tailoring Installation<products>  <product name="diamon-agent-jms“ ... > ... <deployment installLocation="/opt/diamon/agent-jms/" > <directory name="conf" mask="550" >          <file name="jmsconfig.xml" mask="400" />          <file name="log/log4j.properties" mask="400" />       </directory>       <directory name="log" mask="750" /> <backupPolicy keepBackups="2"/> <replaceString>        <file name="bin/start.sh" var="VAR_1" value="my value" />    </replaceString>     </deployment>

     <application name="jmsagent"> ...     </application>

  </product></product>

Page 25: The Deploy Tool

Application Inheritance <products>  <product name="diamon-agent-jms"> ... <application name=“general”> <deployment installLocation="/opt/diamon/agent-jms/" > ...     </deployment> <application>

     <application name="jmsagent" > <!–global deployment info applies here -->      </application> <application name="jmsagent-dev" >      <deployment installLocation="/opt/diamon/agent-jms-dev/" > <!– additional to global deployment info -->        <directory name="conf">          <file name="log/log4j-dev.properties" />        </directory>       </deployment>     </application>  </product></product>

Page 26: The Deploy Tool

Generation of a Startscript<products>  <product name="diamon-agent-jms"> ... <deployment installLocation="/opt/diamon/agent-jms/" > ...     </deployment>

     <application name="jmsagent" processName="jmsagent-prod" >       <main-class name="cern.diamon.agent.jms.JmsCentralAgent"/>       <property name="cmw.mom.brokerlist” value="diamjms1:2506"/>       <property name="log4j.configuration"

value="$INSTALL_DIR/etc/log4j.properties"/>       <property name="agent.jms.configFile"

value="$INSTALL_DIR/etc/jmsconfig.xml" />     </application>

  </product></product>