GLU is a deployment automation platform. It has been built and deployed at LinkedIn in early 2010 and then released as open source in November 2010. The goal is to be able to automate the deployment of any kind of applications accross many nodes. Although written in groovy/java, the type of applications that can be deployed through GLU is not limited to java applications. GLU is a platform and the way it was architected and designed allows you to pick and choose which part you want to use... Check the docs folder (and soon the wiki) for more documentation on GLU.
If you are interested in checking out glu (you don't want to build it yourself), then follow the steps in 3-TASTE-OF-GLU-TUTORIAL.md.
All binaries can be found in the downloads section on github.
If you are interested in building/developing glu itself, then check the Compilation section below, then check the 1-QUICK-DEV-SETUP.md document followed by the 2-QUICK-DEV-TUTORIAL.md for a quick walkthrough the console in development mode.
In order to run the code you need:
- java 1.6
- python 2.6 (for the console cli only)
In order to compile the code you need
- java 1.6
- gradle 0.9
- grails 1.3.5 (only for the console)
- Unix (tested on Mac OS X and Solaris)
Before doing anything go to
console/org.linkedin.glu.console-webapp
and issue:
grails upgrade
At the top simply run
gradle test
which should compile and run all the tests.
Note: if you do not run the 'grails upgrade' command, you may see this messages:
Plugin [shiro-1.1-SNAPSHOT] not installed. ...
Plugin [yui-2.7.0.1] not installed. ...
Plugin [hibernate-1.3.5] not installed. ...
Plugin [tomcat-1.3.5] not installed. ...
You can issue the command (at the top)
gradle idea
which will use the gradle IDEA plugin to create the right set of modules in order to open the project in IntelliJ IDEA.
-
agent/org.linkedin.glu.agent-api
: Agent api (like Agent class) -
agent/org.linkedin.glu.agent-impl
: Implementation of the agent -
agent/org.linkedin.glu.agent-rest-resources
: REST resources (endpoint) (used in the agent) -
agent/org.linkedin.glu.agent-rest-client
: REST client (which talks to the resources) (used in both agent-cli and console-webapp) -
agent/org.linkedin.glu.agent-cli
: The command line which can talk to the agent directlygradle package // to create the package gradle package-install // to install locally (for dev)
-
agent/org.linkedin.glu.agent-cli-impl
: Contains the implementation of the agent cli -
agent/org.linkedin.glu.agent-tracker
Listens to ZooKeeper events to track the agent writes (used in console-webapp). -
agent/org.linkedin.glu.agent-server-impl
: Contains the implementation of the agent server cli. -
agent/org.linkedin.glu.agent-server-upgrade
: Create the upgrade package (to be used when uprading an already installed agent).gradle package // create the upgrade package
-
agent/org.linkedin.glu.agent-server
: The actual servergradle package // create the package gradle package-install // to install locally (for dev) gradle setup // setup dev fabric and keys in zookeeper (used in conjunction with gradle install) gradle setup-x-y // setup x agents in y fabrics: automatically setup zookeeper with the right set of data and create x agents package with a wrapper shell script to start them all gradle clean-setup // to delete the setup
-
console/org.linkedin.glu.console-webapp
: The console webapp (grails application).gradle lib // compile all the dependencies and put them in the lib folder grails run-app // after running gradle lib, you can simply run grails directly as it will use the // libraries in lib to boot the app
-
console/org.linkedin.glu.console-cli
: The cli for the console (written in python) to use the REST api of the consolegradle package // create the package gradle package-install // to install locally (for dev)
-
console/org.linkedin.glu.console-server
: Theconsole/org.linkedin.glu.console-webapp
project generates the war (or is used in dev through grails). This project creates a ready to run console embedding jetty.gradle package // create the package gradle package-install // to install locally (for dev)
-
packaging/org.linkedin.glu.packaging-all
: Creates a package which contains all prebuilt packages and is also used for the tutorialgradle package // create the package gradle package-install // to install locally (for dev)
-
packaging/org.linkedin.glu.packaging-setup
: Creates a package with convenient shell scripts to setup the keys and agent in ZooKeepergradle package // create the package gradle package-install // to install locally (for dev)
-
dev-keys
: Contains the keys used in dev (check key_generation.txt for instructions on how to generate a different set of keys)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!! WARNING WARNING WARNING WARNING WARNING WARNING !!!! !!!! !!!! !!!! FOR PRODUCTION USE, PLEASE GENERATE YOUR OWN KEYS !!!! !!!! !!!! !!!! WARNING WARNING WARNING WARNING WARNING WARNING !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
The project uses the org.linkedin.userConfig
plugin and as such can be configured
Example:
~/.userConfig.properties
top.build.dir="/Volumes/Disk2/deployment/${userConfig.project.name}"
top.install.dir="/export/content/${userConfig.project.name}"
top.release.dir="/export/content/repositories/release"
top.publish.dir="/export/content/repositories/publish"
Check the wiki
For any issues or comments please use the forum
The issue tracker is currently hosted on github