/adt

Automated Deployment Tools for eXo products

Primary LanguageShell

This project is a set of tools used to automate the deployment of eXo products for testing purpose.

How to use ?
============

Prerequisites
------------------------

Mandatory :

  * A Java 6 JVM available in the PATH

Optional :

  * A mysql server with a local configuration (~/.my.cnf) that allows the current system user to create databases and grant rights. You can activate the usage of MySQL with the environment variable : DEPLOYMENT_DATABASE_TYPE=MYSQL
  * An apache server (with PHP and its APC module) to display the list of instances and to create a reverse proxy for all instances.
  * An UFW firewall to protect your (ubuntu server). The script will automatically open or close required ports (HTTP, JMX, ...).
  * An awstats instance to keep statistics of usage.

Prepare your environment
------------------------
Fork this project :

    git clone git://github.com/exoplatform/adt.git

Define the environment variable ADT_DATA, which will be the path to a working directory used by ADT.

    export ADT_DATA=$HOME/adt_data

You can also define your settings in $HOME/.adtrc or in /etc/default/adt

You're ready to go
------------------

Deploy a server : download and configure it

    # adt.sh deploy plfcom 4.0.0-SNAPSHOT

Start a server : start a deployed instance

    # adt.sh start plfcom 4.0.0-SNAPSHOT

Stop a server : stop a deployed instance

    # adt.sh stop plfcom 4.0.0-SNAPSHOT

Restart a server : restart a deployed instance

    # adt.sh restart plfcom 4.0.0-SNAPSHOT

Undeploy a server : stop a deployed instance if already running and delete it.

    # adt.sh undeploy plfcom 4.0.0-SNAPSHOT

List all deployed instances

    # adt.sh list

Usage
-----

      usage: ./adt.sh <action>

    This script manages automated deployment of eXo products for testing purpose.

    Action
    ------
      deploy           Deploys (Download+Configure) the server
      download-dataset Downloads the dataset required by the server
      start            Starts the server
      stop             Stops the server
      restart          Restarts the server
      undeploy         Undeploys (deletes) the server

      start-all        Starts all deployed servers
      stop-all         Stops all deployed servers
      restart-all      Restarts all deployed servers
      undeploy-all     Undeploys (deletes) all deployed servers
      list             Lists all deployed servers

      init             Initializes the environment
      update-repos     Update Git repositories used by the web front-end
      web-server       Starts a local PHP web server to test the front-end (requires PHP >= 5.4). It automatically activates the development mode.

    Environment Variables
    ---------------------

      They may be configured in the current shell environment or /etc/default/adt or $HOME/.adtrc

      Global Settings
      ===============

      ADT_DATA                          : The path where data have to be stored (default: under the script path - /Users/arnaud/Code/eXo/adt)

      ACCEPTANCE_SCHEME                 : The scheme to use to deploy the acceptance server (default: 'http' if ADT_DEV_MODE=true, 'https' otherwise; values : http | https)
      ACCEPTANCE_HOST                   : The hostname (vhost) where is deployed the acceptance server (default: 'localhost' if ADT_DEV_MODE=true, 'acceptance.exoplatform.org' otherwise)
      ACCEPTANCE_PORT                   : The server port on which the acceptance front-end is listening (default: '8080' if ADT_DEV_MODE=true, '80' otherwise)
      ACCEPTANCE_SERVERS                : A comma separated list of all acceptance front-end URLs to aggregate (default: 'http://localhost:8080' if ADT_DEV_MODE=true, 'https://acceptance.exoplatform.org' otherwise)
      CROWD_ACCEPTANCE_APP_NAME         : The crowd application used to authenticate the front-end (default: none)
      CROWD_ACCEPTANCE_APP_PASSWORD     : The crowd application''s password used to authenticate the front-end (default: none)
      LDAP_ACCEPTANCE_BIND_DN           : The LDAP Bind DN used to authenticate the front-end (default: none)
      LDAP_ACCEPTANCE_BIND_PASSWORD     : The LDAP Bind DN''s password used to authenticate the front-end (default: none)
      APACHE_SSL_CERTIFICATE_FILE       : Apache SSLCertificateFile for HTTPS setup
      APACHE_SSL_CERTIFICATE_KEY_FILE   : Apache SSLCertificateKeyFile for HTTPS setup
      APACHE_SSL_CERTIFICATE_CHAIN_FILE : Apache SSLCertificateChainFile for HTTPS setup

      REPOSITORY_SERVER_BASE_URL        : The Maven repository URL used to download artifacts (default: https://repository.exoplatform.org)
      REPOSITORY_USERNAME               : The username to logon on $REPOSITORY_SERVER_BASE_URL if necessary (default: none)
      REPOSITORY_PASSWORD               : The password to logon on $REPOSITORY_SERVER_BASE_URL if necessary (default: none)

      ADT_DEBUG                         : Display debug details (default: false; values : true | false)
      ADT_DEV_MODE                      : Development mode. Apache server, awstats and ufw are deactivated. (default: false; values : true | false)
      ADT_OFFLINE                       : Use only local resources, don't do any remote operations. (default: false; values : true | false)

      DEPLOYMENT_EXTENSIONS             : Comma separated list of PLF extensions to install. "all" to install all extensions available. Empty string for none. (default: all)
      DEPLOYMENT_ADDONS                 : Comma separated list of PLF add-ons to install using the add-ons manager. Empty string for none. (default: none)

      Instance Settings
      =================

      PRODUCT_NAME                      : The product you want to manage. Possible values are :
        gatein         GateIn Community edition                - Apache Tomcat bundle
        exogtn         GateIn eXo edition                      - Apache Tomcat bundle
        plf            eXo Platform Standard Edition           - Apache Tomcat bundle
        plfcom         eXo Platform Community Edition          - Apache Tomcat bundle
        plfent         eXo Platform Express/Enterprise Edition - Apache Tomcat bundle
        plfenteap      eXo Platform Express/Enterprise Edition - JBoss EAP bundle
        plftrial       eXo Platform Trial Edition              - Apache Tomcat bundle
        plfdemo        eXo Platform Demo Edition               - Apache Tomcat bundle
        addonchat      eXo Platform + eXo Addon Chat           - Apache Tomcat bundle
        compint        eXo Company Intranet                    - Apache Tomcat bundle
        community      eXo Community Website                   - Apache Tomcat bundle
        docs           eXo Platform Documentations Website     - Apache Tomcat bundle
      PRODUCT_VERSION                   : The version of the product. Can be either a release, a snapshot (the latest one) or a timestamped snapshot

      DEPLOYMENT_SKIP_ACCOUNT_SETUP     : Do you want to skip the account creation form and use default accounts (default: false; values : true | false)

      DEPLOYMENT_APACHE_SECURITY        : Do you want to have a public or a private deployment (default: private; values : private | public)
      DEPLOYMENT_APACHE_VHOST_ALIAS     : Do you want to add an Apache ServerAlias directive to access the deployed instance through a more userfriendly url (ex: try.exoplatform.com for a public demo)
      DEPLOYMENT_APACHE_HTTPS_ENABLED   : Do you want to add an HTTPs VirtualHost (default: false; values : true | false)
      DEPLOYMENT_PORT_PREFIX            : Default prefix for all ports (2 digits will be added after it for each required port)

      DEPLOYMENT_JVM_SIZE_MAX           : Maximum heap memory size (default: 2g)
      DEPLOYMENT_JVM_SIZE_MIN           : Minimum heap memory size (default: 512m)
      DEPLOYMENT_JVM_PERMSIZE_MAX       : Maximum permgem memory size (default: 256m)

      DEPLOYMENT_OPTS                   : Additional JVM parameters to pass to the startup. Take care to escape charters like \" (default: none)

      DEPLOYMENT_DATABASE_TYPE          : Which database do you want to use for your deployment ? (default: HSQLDB; values : HSQLDB | MYSQL)

      DEPLOYMENT_MODE                   : How data are processed during a restart or deployment (default: KEEP_DATA for restart, NO_DATA for deploy; values : NO_DATA - All existing data are removed | KEEP_DATA - Existing data are kept | RESTORE_DATASET - The latest dataset - if exists -  is restored)

      DEPLOYMENT_LDAP_URL               : LDAP URL to use if the server is using one (default: none)
      DEPLOYMENT_LDAP_ADMIN_DN          : LDAP DN to use to logon into the LDAP server
      DEPLOYMENT_LDAP_ADMIN_PWD         : LDAP password to use to logon into the LDAP server

      DEPLOYMENT_OAUTH_FACEBOOK_CLIENT_ID     : Identifier for Facebook OAuth integration (used by community)
      DEPLOYMENT_OAUTH_FACEBOOK_CLIENT_SECRET : Secret for Facebook OAuth integration (used by community)
      DEPLOYMENT_OAUTH_GOOGLE_CLIENT_ID       : Identifier for Google OAuth integration (used by community)
      DEPLOYMENT_OAUTH_GOOGLE_CLIENT_SECRET   : Secret for Facebook OAuth integration (used by community)
      DEPLOYMENT_OAUTH_LINKEDIN_CLIENT_ID     : Identifier for LinkedIn OAuth integration (used by community)
      DEPLOYMENT_OAUTH_LINKEDIN_CLIENT_SECRET : Secret for Facebook OAuth integration (used by community)