Tools needed
- Git
- JDK 1.6.0
- Apache Maven
- NodeJS
- Brunch (to install it, run the following command after NodeJS is installed):
$ npm install -g brunch
Checking out Ambari source
The following uses Ambari git for the development process. Please keep in mind git is read only and patches will have to be uploaded and committed via svn.
git clone git://git.apache.org/ambari.git cd ambari
We'll refer to the top-level "ambari" directory as AMBARI_DIR
in this document.
Building Ambari
After checking out Ambari, you can build Ambari with the steps below:
$ mvn clean install
Note: The above is for building the jars. See below for starting/deploying the Ambari Server and the Ambari Agent.
Building Artifacts and Running the Server/Agent
To build tarball artifacts run:
$ mvn clean package assembly:assembly
This will build the Server and Agent tarballs.
NOTE: Run everything as root
below.
Running the Ambari Server:
Execute the following, where INSTALL_DIR
is a directory where you want to run the Server:
$ cp ambari-server/target/ambari-server-*-dist.tar.gz INSTALL_DIR $ cd INSTALL_DIR $ tar -zxvf ambari-server-*-dist.tar.gz
Edit the Ambari properties configuration file:
$ vim /etc/ambari/ambari.properties
Add the following entry:
security.server.keys_dir=INSTALL_DIR/ambari-server-1.0.3-SNAPSHOT/keystore
NOTE: replace INSTALL_DIR
with the actual directory path.
$ INSTALL_DIR $ cd ambari-server-* $ export AMBARI_PASSPHRASE="tmp" $ cp /etc/ambari/ambari.properties etc/ambari-server/conf/ $ java -cp etc/ambari-server/conf/:lib/ambari-server/* org.apache.ambari.server.controller.AmbariServer
NOTE: the conf
directory should come first in the java classpath because guice-persist.jar
includes a log4j.properties
which will cause the Ambari log4j.properties
to not load.
The Server will launch and run as a foreground process. Scripting will come later as we move along to run the server with proper confs/envs.
To check if the server is running and healthy, you can go to:
http://localhost:8080/api/check
The status will show as running. Or from a command line, you can run:
curl localhost:8080/api/check
NOTE: The health check is static response for now.
Running the Ambari Agent.
The Ambari Agent requires python 2.6 to run on a host. RHEL5/CentOS5 has python 2.4 installed by default. To install python 2.6 (NOTE: you can install both 2.4/2.6 on the host), install the epel repo and then run:
$ yum install python26.
Python needs setuptools to be able to setup the project for development. Download http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086 and run:
$ sh setuptools-0.6c11-py2.6.egg
To setup the Ambari Agent:
$ mkdir -p /var/ambari /var/run/ambari /var/log/ambari /tmp/ambari-agent/
The following dev process is easier than using setup.py and is a quicker turnaround. As soon as we have a good deployment story (rpm) we will add those in.
$ cd ambari-agent/src/main/python/ambari_agent
- Ambari agent requires
facter
to get the node host information. Downloadfacter
tarball from http://downloads.puppetlabs.com/facter/facter-1.6.10.tar.gzand uninstall in a directory.
- Edit facter_home in AmbariConfig.py to the directory where facter is installed. The agent executes the script facter_home/bin/facter to get all the node information and also uses df to get the mount point information.
- Ambari agent requires
puppet
. Downloadpuppet
tarball from http://www.puppetlabs.com/downloads/puppet/puppet-2.7.9.tar.gzand uninstall in a directory.
- Edit puppet_home in AmbariConfig.py to the directory where puppet is installed. The agent executes puppet_home/bin/puppet to run puppet scripts.
To run the agent:
$ export AMBARI_PASSPHRASE="tmp"
Copy puppet modules to /var/lib/ambari-agent/puppet/
$ cp -R ../../puppet/modules/ /var/lib/ambari-agent/puppet $ python2.6 main.py
The Ambari Agent will just try connecting to the server. To see the logs, take a look at:
/var/log/ambari-agent/ambari-agent.log
Building and Running Ambari Web
Ambari Web uses Brunch (http://brunch.io/) as the application assembler for development purposes. Brunch is used to build and deploy automatically in the background as the developer modifies source files (JS, LESS/CSS, Handlebars template files). Brunch can also start up a Node.js-based web server with a single command so that you can easily run the application from the application root directory without any special configuration.
To build, deploy and run Ambari Web:
- Install NodeJS and NPM from http://nodejs.org/download/
- Install Brunch
$ npm install -g brunch
- Download dependent packages into ambari-web/node_modules directory
$ cd AMBARI_DIR/ambari-web $ npm install
To run Ambari Web so that it works with mock data independently from Ambari Server:
- Start test server:
$ brunch watch --server (or simply "brunch w --s")
- Edit
ambari-web/app/initialize.js
and set to test mode (testMode = true
). You can optionally set to go to the install wizard or directly into the app dashboard.App.testMode = true; App.skipBootstrap = true; App.alwaysGoToInstaller = true;
- Access http://localhost:3333
from your web browser. When you change Ambari Web source files, changes are immediately reflected.
To run Ambari Web with Ambari Server integration:
$ cd AMBARI_DIR $ mvn clean package assembly:assembly
Note: currently the mvn command does not put ambari-web in the Maven-generated package. This will be fixed in the future.
$ cd AMBARI_DIR/ambari-server/ambari/target/ambari-server-*-dist/ambari-server-* $ java -cp etc/ambari-server/conf/:lib/ambari-server/* org.apache.ambari.server.controller.AmbariServer $ cd AMBARI_DIR/ambari-web $ brunch watch
Access http://localhost:8080 from your web browser. When you change Ambari Web source files, changes are immediately reflected.
Setting up Ambari in Eclipse
$ mvn clean eclipse:eclipse
After doing the above you should be able to import the project via Eclipse "Import > Maven > Existing Maven Project". Choose the root directory where you cloned the git repository. You should be able to see the following projects on eclipse:
ambari | |- ambari-project |- ambari-server |- ambari-agent |- ambari-web
Select the top-level "ambari pom.xml" and click Finish.