You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/04/04 22:22:53 UTC

[1/6] git commit: Fixes to make cluster work with latest Portal code.

Repository: incubator-usergrid
Updated Branches:
  refs/heads/two-dot-o ae9bdf6d5 -> a371f92cf


Fixes to make cluster work with latest Portal code.


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/7413fd8b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/7413fd8b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/7413fd8b

Branch: refs/heads/two-dot-o
Commit: 7413fd8b5a3e696c7f216a70f5076c988db699e8
Parents: ae9bdf6
Author: Dave Johnson <dm...@apigee.com>
Authored: Fri Apr 4 15:29:52 2014 -0400
Committer: Dave Johnson <dm...@apigee.com>
Committed: Fri Apr 4 15:29:52 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md                      | 94 +++++++++++++++++---
 stack/awscluster/assembly.xml                   | 39 ++++++--
 stack/awscluster/pom.xml                        |  5 +-
 .../main/dist/init_instance/init_rest_server.sh |  2 +-
 .../src/main/groovy/configure_portal_new.groovy | 12 +--
 .../src/main/groovy/configure_usergrid.groovy   |  6 +-
 6 files changed, 128 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index 476601a..fced4bb 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -1,7 +1,7 @@
 AWS Cluster
 ===
 
-*UNDER CONSTRUCTION*
+*UNDER CONSTRUCTION* 
 
 This project provides a AWS Cloud Formation template that launches a complete Usergrid installation
 on Amazon EC2. Currently it launches a set of instances running Cassanrda Elastic Search.
@@ -11,9 +11,9 @@ Two parts:
 1) A Maven assembly that builds an installer tarball and uploads it to S3. 
 The tarball includes scripts to install Oracle JDK, Cassandra an EC2 instance.
 
-2) A CloudFormation script that creates an autoscaling cluster, security group and some
+2) A CloudFormation script `ugcluster-cf.json` that creates an auto-scaling cluster, security groups and some
 number of EC2 instances, The template includes a CloudInit script that runs scipts from 
-the installer tarball to configure and start Cassandra on each node. 
+the installer tarball to configure and start either Cassandra or on each instance. 
 
 
 Getting set-up
@@ -25,6 +25,8 @@ To setup our AWS account to use  AWS Cluster here's what you need to do:
 * __Create an AWS S3 bucket__ for the AWS Cluster install bundle. e.g. Create an S3 bucket in your 
 account with the name `ug-cloudformation`. 
 
+* __Setup a top-level domain name__ in the AWS Route 53 DNS service. The default value of usergrid.com will not work (unless you happen to own that domain name).
+
 * __Upload the Oracle Java JDK__ to that same S3 bucket. Best practice is to use the Oracle Java u
 JDK with Cassandra, so you must upload the JDK to the S3 bucket that we created above. The JDK must 
 be named `jdk-7u45-linux-x64.gz`.
@@ -36,11 +38,22 @@ README file. The file is git-ignored so you don't have to worry about accidental
 directory as this README file. 
 
 
+Building the Installation Tarball
+---
+First you need to build the Usergrid components: the Java SDK, the Stack and the Portal.
+
+Next, cd to the awscluster directory and run Maven deploy:
+
+	mvn deploy
+
+Maven will create the installation tarball and will copy it to your S3 bucket uf-cloudformation. You can find a copy of the tarball in the target directory: `awscluster-1.0-SNAPSHOT.tgz`.
+
+
 Launching a new stack
 ---
 Login to AWS Console and create a new CloudFormation stack. On the first screen, pick a short 
 and simple name for your stack and choose the option to upload a template and upload 
-the `cassandra-cf.json` file in this very directory. 
+the `ugcluster-cf.json` file in this very directory. 
 
 On the next screen, enter the number of DB and REST servers you wish to create, the replication factor and 
 the instance type you wish to use. Check the "I acknowledge that this will create IAM resources" 
@@ -50,28 +63,89 @@ Watch the EC2 console and see your instances come up. They will be tagged with t
 that you provided.
 
 
+Accessing your new stack
+---
+Assuming everything went well then you can access your stack at the DNS sub-domain and domain name that you specified in the configuration. For example, if you specified DNS domain `usergrid.com` and sub-domain `test1` then you should be able to access Usergrid at `http://test1.usergrid.com/`.
+
+
+Initializing your stack
+---
+
+First, visit the Database setup URL: `http://<YOUR HOST NAME>/system/database/setup`
+
+When prompted to login use the username `superuser` and password `test`. If the operation is successful you should a message like the one below in your browser. If not, check your logs for clues about what went wrong.
+
+	{
+  		"action" : "cassandra setup",
+  		"status" : "ok",
+  		"timestamp" : 1379424622947,
+  		"duration" : 76
+	}
+
+Next, visit the Superuser setup URL: `http://<YOUR HOST NAME>/system/superuser/setup`
+
+You should not be prompted for login because you already logged into for the Database Setup. If setup works, you should see a message like this:
+
+	{
+  		"action" : "superuser setup",
+  		"status" : "ok",
+  		"timestamp" : 1379424667936,
+  		"duration" : 2
+	}
+	
+Now you're ready to get started using Usergrid.
+
+
+Login to the Usergrid Console & get started
+---
+You should now be able to login to the Usergrid console and start configuring applications, users and more.
+
+The Usergrid Portal's URL is `http://<YOUR HOST NAME>/portal` and you can login with username `superuser` and password `test`.
+
+
+
 Exploring a Cassandra node
 ---
 Take a look at your new cluster. Login to one of the instances and take a look at the Cassandra
+setup via `nodetool ring` and by looking at the following log file locations.
+
+Log File Locations
+
+`/var/log/usergrid-bootstrap.log` - log created as instance was created
+
+`/var/log/cassandra/*` - the Cassandra log files
+
+
+
+Exploring a Tomcat node
+---
+Take a look at your new cluster. Login to one of the instances and take a look at the Cassandra
 setup via `nodetool ring` and by looking at the following logs locations:
 
-    /var/log/usergrid-bootstrap.log - log created as instance was created
+Log File Locations
 
-    /var/log/cassandra - the Cassandra log files
+`/var/log/usergrid-bootstrap.log` - log created as instance was created
 
+`/var/log/tomcat7/*` - the Tomcat log files
 
-How things work
+
+
+How it works
 ---
 Here's what happens when the stack is started.
 
-CloudFormation reads the `cassanrda-cf.json` template and uses starts the EC2 instances that it 
-specifies. When each instance comes up CloudFormation runs the CloudInit script specified in 
-`ugcluster-cf.json` and that script downloads the AWS Cluster, sets up some environment scripts
+CloudFormation reads the `ugcluster-cf.json` template and uses starts the EC2 instances that it 
+specifies. There are two types of instances, Cassandra instances and REST instances. 
+
+When each Cassandra instance comes up CloudFormation runs the CloudInit script specified in 
+`ugcluster-cf.json` and that script downloads the , sets up some environment scripts
 and calls the `init_instance/init_db_server.sh` script to complete the setup.
 
 The `init_instance/init_db_server.sh` calls `install_oraclejdk.sh` to download the JDK from S3 and 
 install it. The script then installs Tomcat and Cassandra. Next it uses Groovy scripts to configure 
 Cassandra and wait for other Cassandra nodes to come alive.
 
+When a REST instance comes up, it does the same things but it calls the `init_rest_server.sh` to install and configure Tomcat, wait for Cassandra nodes to become available and then setup the Usergrid Stack and Usergrid Portal webapps.
+
 
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/assembly.xml
----------------------------------------------------------------------
diff --git a/stack/awscluster/assembly.xml b/stack/awscluster/assembly.xml
index 5be9ef3..a7fce3c 100644
--- a/stack/awscluster/assembly.xml
+++ b/stack/awscluster/assembly.xml
@@ -10,12 +10,12 @@
 
 	http://www.apache.org/licenses/LICENSE-2.0
 
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
- -->
+       Unless required by applicable law or agreed to in writing, software
+       distributed under the License is distributed on an "AS IS" BASIS,
+       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+       See the License for the specific language governing permissions and
+       limitations under the License.
+    -->
 
     <id>any</id>
     <formats>
@@ -24,6 +24,17 @@
 
     <includeBaseDirectory>false</includeBaseDirectory>
 
+    <files>
+
+        <file>
+            <outputDirectory>webapps</outputDirectory> 
+            <source>../rest/target/ROOT.war</source>
+            <!-- <source>/Users/ApigeeCorporation/src/usergrid-rest-apigee-production/target/ROOT.war</source> -->
+            <destName>ROOT.war</destName> 
+        </file>
+
+    </files>
+
     <fileSets>
 
         <fileSet>
@@ -32,6 +43,13 @@
             <includes>
                 <include>**</include>
             </includes>
+
+            <!-- Exclude Priam for now -->
+            <excludes>
+                <exclude>**/priam**</exclude>
+                <exclude>**/Priam**</exclude>
+            </excludes>
+
         </fileSet>
 
         <fileSet>
@@ -42,6 +60,15 @@
             </includes>
         </fileSet>
 
+        <fileSet>
+            <outputDirectory>./webapps/portal</outputDirectory>
+            <directory>../../portal/dist/appsvc-ui</directory>
+            <!-- <directory>/Users/ApigeeCorporation/src/usergrid-portal-internal/dist/appsvc-ui</directory> -->
+            <includes>
+                <include>**</include>
+            </includes>
+        </fileSet>
+
     </fileSets>
 
 </assembly>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/pom.xml
----------------------------------------------------------------------
diff --git a/stack/awscluster/pom.xml b/stack/awscluster/pom.xml
index 2783c8c..ad0f58e 100644
--- a/stack/awscluster/pom.xml
+++ b/stack/awscluster/pom.xml
@@ -23,7 +23,10 @@
     <version>1.0-SNAPSHOT</version>
 
     <name>awscluster</name>
-    <description>Creates bundle for initializing a Cassandra and Priam cluster via CloudFormation</description>
+
+    <description>
+        Creates bundle for initializing a Tomcat and Cassandra Usergrid cluster via CloudFormation
+    </description>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/src/main/dist/init_instance/init_rest_server.sh
----------------------------------------------------------------------
diff --git a/stack/awscluster/src/main/dist/init_instance/init_rest_server.sh b/stack/awscluster/src/main/dist/init_instance/init_rest_server.sh
index 6b2c217..c85457f 100644
--- a/stack/awscluster/src/main/dist/init_instance/init_rest_server.sh
+++ b/stack/awscluster/src/main/dist/init_instance/init_rest_server.sh
@@ -53,7 +53,7 @@ groovy configure_usergrid.groovy > /usr/share/tomcat7/lib/usergrid-deployment.pr
 
 rm -rf /var/lib/tomcat7/webapps/*
 cp -r /usr/share/usergrid/webapps/* /var/lib/tomcat7/webapps
-groovy configure_portal_new.groovy > /var/lib/tomcat7/webapps/portal/config.js 
+groovy configure_portal_new.groovy >> /var/lib/tomcat7/webapps/portal/config.js 
 
 # Go
 /etc/init.d/tomcat7 restart

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/src/main/groovy/configure_portal_new.groovy
----------------------------------------------------------------------
diff --git a/stack/awscluster/src/main/groovy/configure_portal_new.groovy b/stack/awscluster/src/main/groovy/configure_portal_new.groovy
index af906e3..753be68 100644
--- a/stack/awscluster/src/main/groovy/configure_portal_new.groovy
+++ b/stack/awscluster/src/main/groovy/configure_portal_new.groovy
@@ -18,19 +18,11 @@
 
 
 //
-// Emits dash/app/config.js file 
+// Emits text to be appending to end of config.js
 //
 def baseUrl = "http://${System.getenv().get("DNS_NAME")}.${System.getenv().get("DNS_DOMAIN")}"
-config = """
-var VERSION = 'R-2013-07-02-02';
-var Usergrid = Usergrid || {};
-Usergrid.showNotifcations = true;
+config = """\n\
 
-// used only if hostname does not match a real server name
 Usergrid.overrideUrl = '${baseUrl}';
-
-Usergrid.settings = {
-  hasMonitoring:true //change to false to remove monitoring
-};
 """
 println config

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7413fd8b/stack/awscluster/src/main/groovy/configure_usergrid.groovy
----------------------------------------------------------------------
diff --git a/stack/awscluster/src/main/groovy/configure_usergrid.groovy b/stack/awscluster/src/main/groovy/configure_usergrid.groovy
index 11bcc32..5513880 100644
--- a/stack/awscluster/src/main/groovy/configure_usergrid.groovy
+++ b/stack/awscluster/src/main/groovy/configure_usergrid.groovy
@@ -26,13 +26,13 @@ import com.amazonaws.auth.*
 import com.amazonaws.services.simpledb.*
 import com.amazonaws.services.simpledb.model.*
 
-String domain = "UGCloudFormation"
 
 String accessKey = (String)System.getenv().get("AWS_ACCESS_KEY")
 String secretKey = (String)System.getenv().get("AWS_SECRET_KEY")
 
 def baseUrl      = "http://${System.getenv().get("DNS_NAME")}.${System.getenv().get("DNS_DOMAIN")}"
 String stackName = (String)System.getenv().get("STACK_NAME")
+String domain    = stackName
 String hostName  = (String)System.getenv().get("PUBLIC_HOSTNAME")
 def replFactor   = System.getenv().get("CASSANDRA_REPLICATION_FACTOR")
 def clusterName  = System.getenv().get("CASSANDRA_CLUSTER_NAME")
@@ -81,9 +81,11 @@ mail.smtps.port=465
 mail.smtps.auth=true
 mail.smtps.quitwait=false
 
+# TODO: make all usernames and passwords configurable via Cloud Formation parameters.
+
 # CAUTION: THERE IS A PASSWORD HERE!
 mail.smtps.username=usergridtest@gmail.com
-mail.smtps.password=shy-rtol
+mail.smtps.password=pw123
 
 ######################################################
 # Admin and test user setup


[2/6] git commit: Update README.md

Posted by sn...@apache.org.
Update README.md

Expand intro a bit.

Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/2bc03451
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/2bc03451
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/2bc03451

Branch: refs/heads/two-dot-o
Commit: 2bc03451422bf8ef2253c5d9b05afd0ab335a6ea
Parents: 7413fd8
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Fri Apr 4 15:33:09 2014 -0400
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Fri Apr 4 15:33:09 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2bc03451/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index fced4bb..a97e1b4 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -3,8 +3,8 @@ AWS Cluster
 
 *UNDER CONSTRUCTION* 
 
-This project provides a AWS Cloud Formation template that launches a complete Usergrid installation
-on Amazon EC2. Currently it launches a set of instances running Cassanrda Elastic Search.
+This project provides a AWS Cloud Formation template that launches and configures a complete Usergrid installation
+on Amazon EC2 including Tomcat intances, Cassandra instances, Security Groups, a Load Balancer and DNS records.
 
 Two parts:
 


[4/6] git commit: Update README.md

Posted by sn...@apache.org.
Update README.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/bc232518
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/bc232518
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/bc232518

Branch: refs/heads/two-dot-o
Commit: bc23251831c653195a68e87fe3b6927f295a817a
Parents: ff04980
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Fri Apr 4 16:00:49 2014 -0400
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Fri Apr 4 16:00:49 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bc232518/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index af19051..03fedce 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -43,6 +43,7 @@ Building the Installation Tarball
 First you need to build the Usergrid components: the Java SDK, the Stack and the Portal.
 
 For example, here's how you would do that on a UNIX system (assuming that all Stack and Portal build pre-requistes are in place:
+
 `
 	cd usergrid/sdks/java
 	mvn clean install
@@ -53,11 +54,14 @@ For example, here's how you would do that on a UNIX system (assuming that all St
 	cd ../portal
 	./build.sh
 `
+
 Next, cd to the awscluster directory and run Maven deploy:
+
 `
 	cd usergrid/stack/awscluster
 	mvn deploy
 `
+
 Maven will create the installation tarball and will copy it to your S3 bucket uf-cloudformation. You can find a copy of the tarball in the target directory: `awscluster-1.0-SNAPSHOT.tgz`.
 
 


[6/6] git commit: Update README.md

Posted by sn...@apache.org.
Update README.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/a371f92c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/a371f92c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/a371f92c

Branch: refs/heads/two-dot-o
Commit: a371f92cf2ffe910c2182aef3ad5e1302072abf6
Parents: 4a01012
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Fri Apr 4 16:02:04 2014 -0400
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Fri Apr 4 16:02:04 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md | 21 ++++++++-------------
 1 file changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/a371f92c/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index 95ddca4..e2ae148 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -44,24 +44,19 @@ First you need to build the Usergrid components: the Java SDK, the Stack and the
 
 For example, here's how you would do that on a UNIX system (assuming that all Stack and Portal build pre-requistes are in place:
 
-
-`
-	cd usergrid/sdks/java
-	mvn clean install
+	$ cd usergrid/sdks/java
+	$ mvn clean install
 	
-	cd ../../stack
-	mvn -DskipTests=true clean install
+	$ cd ../../stack
+	$ mvn -DskipTests=true clean install
 	
-	cd ../portal
-	./build.sh
-`
+	$ cd ../portal
+	$ ./build.sh
 
 Next, cd to the awscluster directory and run Maven deploy:
 
-`
-	cd usergrid/stack/awscluster
-	mvn deploy
-`
+	$ cd usergrid/stack/awscluster
+	$ mvn deploy
 
 Maven will create the installation tarball and will copy it to your S3 bucket uf-cloudformation. You can find a copy of the tarball in the target directory: `awscluster-1.0-SNAPSHOT.tgz`.
 


[5/6] git commit: Update README.md

Posted by sn...@apache.org.
Update README.md

Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/4a010127
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/4a010127
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/4a010127

Branch: refs/heads/two-dot-o
Commit: 4a01012768e919943717775f8b99e89d9747f365
Parents: bc23251
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Fri Apr 4 16:01:16 2014 -0400
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Fri Apr 4 16:01:16 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/4a010127/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index 03fedce..95ddca4 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -44,6 +44,7 @@ First you need to build the Usergrid components: the Java SDK, the Stack and the
 
 For example, here's how you would do that on a UNIX system (assuming that all Stack and Portal build pre-requistes are in place:
 
+
 `
 	cd usergrid/sdks/java
 	mvn clean install


[3/6] git commit: Update README.md

Posted by sn...@apache.org.
Update README.md

Example of how to build Stack and Portal.

Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/ff04980c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/ff04980c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/ff04980c

Branch: refs/heads/two-dot-o
Commit: ff04980c73d82038919fed9941a351897764ee48
Parents: 2bc0345
Author: Dave Johnson <da...@rollerweblogger.org>
Authored: Fri Apr 4 15:59:08 2014 -0400
Committer: Dave Johnson <da...@rollerweblogger.org>
Committed: Fri Apr 4 15:59:08 2014 -0400

----------------------------------------------------------------------
 stack/awscluster/README.md | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/ff04980c/stack/awscluster/README.md
----------------------------------------------------------------------
diff --git a/stack/awscluster/README.md b/stack/awscluster/README.md
index a97e1b4..af19051 100644
--- a/stack/awscluster/README.md
+++ b/stack/awscluster/README.md
@@ -42,10 +42,22 @@ Building the Installation Tarball
 ---
 First you need to build the Usergrid components: the Java SDK, the Stack and the Portal.
 
+For example, here's how you would do that on a UNIX system (assuming that all Stack and Portal build pre-requistes are in place:
+`
+	cd usergrid/sdks/java
+	mvn clean install
+	
+	cd ../../stack
+	mvn -DskipTests=true clean install
+	
+	cd ../portal
+	./build.sh
+`
 Next, cd to the awscluster directory and run Maven deploy:
-
+`
+	cd usergrid/stack/awscluster
 	mvn deploy
-
+`
 Maven will create the installation tarball and will copy it to your S3 bucket uf-cloudformation. You can find a copy of the tarball in the target directory: `awscluster-1.0-SNAPSHOT.tgz`.