1 / 26

The Deploy Tool

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.

burt
Download Presentation

The Deploy Tool

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Deploy Tool

  2. 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

  3. Situation 2010 • Java • Restart installs software • Log file stored locally • Passwords had to be hardcoded or stored separately in funny locations • C/C++ • Restarted installs software • Copy to disk • Auxiliary files accessed via network No Standard Location ! No Standard Location !

  4. Analysis Deployment Standardization Document • Deploymentinformation is de facto not standardized • Default installation directory • Directory structure • Process name • … • No flexible way to install a product • No influence on file/directory structure • No post-install changes (e.g. tailoring of config files) • No configurable backup policy

  5. Suggestion • Define deployment configuration in file • CommonBuild’sproduct.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 procedure • Uses product.xml to deploy application • Projects should have certain deployment flexibility

  6. A Closer Look • What to we need ? • File and directory structure • Installation location • Backup policy • Process name • More ? • Nomenclature • Productis the name of the software as from repo • E.g. LSA server • Applicationis the concrete instance • LHC LSA Server

  7. 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" /> <backupPolicykeepBackups="2"/> <replaceString> <file name="bin/start.sh" var="VAR_1" value="my value" /> </replaceString> </deployment> </application> ...

  8. The Deploy Tool

  9. The Deploy Tool • What is it for ? • Simplifying deployment process & reduce your workload • Allows developers to take influence on the installation • Takes information from deployment config • Enforces deployment standards • Reduces upgrade time by automation deploy MAVEN CmbBuild

  10. The Deploy Tool and Maven • Maven assembly creates a tarball • Assembly.xml required • Deploy • Copies tarball to local disk • Creates backup • Extracts tarball to target install dir • Copies aux files • Preserves directories/files from previous installation • Sends deployment notification (mail + STOMP)

  11. Default installation Java (Maven) deploy query product info TAR.GZ Deployment Config NEXUS/Artifactory /opt/…

  12. Default installation C++ deploy Executable + Aux Deployment Config Repository /opt/…

  13. Features Deploy Tool Notification Create Directories Startscript Creation Simulation Mode Preserve Files Add additional Files Automatic Backups Set Access Rights Create Install Log Checkout from SVN Safety checks

  14. 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

  15. 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 []

  16. 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>

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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" /> <backupPolicykeepBackups="2"/>      </deployment>   </product> </product> ...agent-jms/agent-jms.1/agent-jms.2/

  22. 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" /> <backupPolicykeepBackups="2"/> <replaceString>        <file name="bin/start.sh" var="VAR_1" value="my value" />    </replaceString>      </deployment>   </product> </product>

  23. 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" /> <backupPolicykeepBackups="2"/> <replaceString>        <file name="bin/start.sh" var="VAR_1" value="my value" />    </replaceString> </deployment>      <application name="jmsagent"> ...      </application>   </product> </product>

  24. 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>

  25. 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>

More Related