You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/03/02 17:15:03 UTC

[1/5] incubator-brooklyn git commit: Docs: move install-on-server to guide/ops

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master a440080f4 -> a6265834f


Docs: move install-on-server to guide/ops

- Was previously in “other docs”.

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

Branch: refs/heads/master
Commit: 2a2f98c8bc25ed807ea17404544d6d14c849c4a9
Parents: eab2d39
Author: Aled Sage <al...@gmail.com>
Authored: Tue Feb 24 07:01:16 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Feb 24 07:01:16 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/index.md                         |   1 +
 docs/guide/ops/install-on-server.md             | 128 +++++++++++++++++++
 docs/website/documentation/install-on-server.md | 128 -------------------
 docs/website/documentation/other-docs.md        |   1 -
 4 files changed, 129 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a2f98c8/docs/guide/ops/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/index.md b/docs/guide/ops/index.md
index 6b523f6..3e6305a 100644
--- a/docs/guide/ops/index.md
+++ b/docs/guide/ops/index.md
@@ -2,6 +2,7 @@
 title: Operations
 layout: website-normal
 children:
+- install-on-server.md
 - cli.md
 - brooklyn_properties.md
 - locations/

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a2f98c8/docs/guide/ops/install-on-server.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/install-on-server.md b/docs/guide/ops/install-on-server.md
new file mode 100644
index 0000000..67dc6da
--- /dev/null
+++ b/docs/guide/ops/install-on-server.md
@@ -0,0 +1,128 @@
+---
+layout: website-normal
+title: Installing on a Server
+---
+
+{% include fields.md %}
+
+Here we present two *alternatives* to install Brooklyn:
+
+- [Running the *installation script*](#script)
+- [Manual installation](#manual)
+
+## <a id="script"></a> Running the installation script
+There is a simple bash script available to help with the installation process. 
+
+#### Script prerequisites
+The script assumes that the server is a recent *RHEL/CentOS 6.x Linux* or *Ubuntu 12.04* installation, but other Linux variants have been tested successfully.
+
+The script will install Java 7 and other required packages if they are not present. 
+You must have root access over [passwordless SSH]({{ site.path.guide }}/ops/locations/ssh-keys.html) 
+to install brooklyn, but the service runs as an ordinary user once installed. 
+
+To manage the brooklyn service you must also be able to connect to port 8081 remotely.
+
+Once the above prerequisites are satisfied, you should be able to run successfully:
+{% highlight bash %}
+$ curl -o brooklyn-install.sh -L https://github.com/apache/incubator-brooklyn/raw/master/brooklyn-install.sh
+$ chmod +x ./brooklyn-install.sh
+$ ./brooklyn-install.sh -s -r <your-server-ip>
+{% endhighlight %}
+
+## <a id="manual"></a> Manual installation
+
+1. [Set up the prerequisites](#prerequisites)
+1. [Download Brooklyn](#download)
+1. [Configuring brooklyn.properties](#configuring-properties)
+1. [Configuring catalog.xml](#configuring-catalog)
+1. [Test the installation](#confirm)
+
+### <a id="prerequisites"></a>Set up the prerequisites
+
+Before installing Apache Brooklyn, it is recommented to configure the host as follows. 
+
+* install Java JRE or SDK (version 6 or later)
+* install an [SSH key]({{ site.path.guide }}/ops/locations/ssh-keys.html), if not available
+* enable [passwordless ssh login]({{ site.path.guide }}/ops/locations/ssh-keys.html)
+* create a `~/.brooklyn` directory on the host with `$ mkdir ~/.brooklyn`
+* check your `iptables` or other firewall service, making sure that incoming connections on port 8443 is not blocked
+* check that the [linux kernel entropy](increase-entropy.html) is sufficient
+
+
+## <a id="download"></a>Download Brooklyn
+
+Download Brooklyn and obtain a binary build as described on [the download page]({{site.path.website}}/download/).
+
+{% if brooklyn_version contains 'SNAPSHOT' %}
+Expand the `tar.gz` archive (note: as this is a -SNAPSHOT version, your filename will be slightly different):
+{% else %}
+Expand the `tar.gz` archive:
+{% endif %}
+
+{% if brooklyn_version contains 'SNAPSHOT' %}
+{% highlight bash %}
+$ tar -zxf brooklyn-dist-{{ site.brooklyn-stable-version }}-timestamp-dist.tar.gz
+{% endhighlight %}
+{% else %}
+{% highlight bash %}
+$ tar -zxf brooklyn-{{ site.brooklyn-stable-version }}-dist.tar.gz
+{% endhighlight %}
+{% endif %}
+
+This will create a `brooklyn-{{ site.brooklyn-stable-version }}` folder.
+
+Let's setup some paths for easy commands.
+
+{% highlight bash %}
+$ cd brooklyn-{{ site.brooklyn-stable-version }}
+$ BROOKLYN_DIR="$(pwd)"
+$ export PATH=$PATH:$BROOKLYN_DIR/bin/
+{% endhighlight %}
+
+## <a id="configuring-properties"></a>Configuring brooklyn.properties
+Brooklyn deploys applications to Locations. *Locations* can be clouds, machines with fixed IPs or localhost (for testing).
+
+By default Brooklyn loads configuration parameters (including credentials for any cloud accounts) from 
+
+`~/.brooklyn/brooklyn.properties` 
+
+The `brooklyn.properties` is the main configuration file for deployment locations. Contains the connection details and credentials for all public or on-premises cloud providers, as well as controlling some application startup and security options.
+
+Create a `.brooklyn` folder in your home directory and download the template [brooklyn.properties]({{brooklyn_properties_url_path}}) to that folder.
+
+{% highlight bash %}
+$ mkdir -p ~/.brooklyn
+$ wget -O ~/.brooklyn/brooklyn.properties {{brooklyn_properties_url_live}}
+$ chmod 600 ~/.brooklyn/brooklyn.properties
+{% endhighlight %}
+
+You may need to edit `~/.brooklyn/brooklyn.properties` to ensure that brooklyn can access cloud locations for application deployment.
+
+## <a id="configuring-catalog"></a>Configuring catalog.xml
+By default Brooklyn loads the catalog of available application components and services from 
+`~/.brooklyn/catalog.xml`. 
+
+{% highlight bash %}
+$ wget -O ~/.brooklyn/catalog.xml {{site.url_root}}{{site.path.website}}/quickstart/catalog.xml
+{% endhighlight %}
+
+The `catalog.xml` is the application blueprint catalog. The above example file contains some blueprints which will be automatically downloaded from the web if you run them.
+
+You may need to edit `~/.brooklyn/catalog.xml` to update links to any resources for download.
+
+## <a id="confirm"></a>Confirm installation
+We can do a quick test drive by launching Brooklyn:
+
+{% highlight bash %}
+$ brooklyn launch
+{% endhighlight %}
+
+Brooklyn will output the address of the management interface:
+
+{% highlight bash %}
+INFO  Starting brooklyn web-console on loopback interface because no security config is set
+
+INFO  Started Brooklyn console at http://127.0.0.1:8081/, running classpath://brooklyn.war and []
+{% endhighlight %}
+
+Stop Brooklyn with ctrl-c.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a2f98c8/docs/website/documentation/install-on-server.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/install-on-server.md b/docs/website/documentation/install-on-server.md
deleted file mode 100644
index 67dc6da..0000000
--- a/docs/website/documentation/install-on-server.md
+++ /dev/null
@@ -1,128 +0,0 @@
----
-layout: website-normal
-title: Installing on a Server
----
-
-{% include fields.md %}
-
-Here we present two *alternatives* to install Brooklyn:
-
-- [Running the *installation script*](#script)
-- [Manual installation](#manual)
-
-## <a id="script"></a> Running the installation script
-There is a simple bash script available to help with the installation process. 
-
-#### Script prerequisites
-The script assumes that the server is a recent *RHEL/CentOS 6.x Linux* or *Ubuntu 12.04* installation, but other Linux variants have been tested successfully.
-
-The script will install Java 7 and other required packages if they are not present. 
-You must have root access over [passwordless SSH]({{ site.path.guide }}/ops/locations/ssh-keys.html) 
-to install brooklyn, but the service runs as an ordinary user once installed. 
-
-To manage the brooklyn service you must also be able to connect to port 8081 remotely.
-
-Once the above prerequisites are satisfied, you should be able to run successfully:
-{% highlight bash %}
-$ curl -o brooklyn-install.sh -L https://github.com/apache/incubator-brooklyn/raw/master/brooklyn-install.sh
-$ chmod +x ./brooklyn-install.sh
-$ ./brooklyn-install.sh -s -r <your-server-ip>
-{% endhighlight %}
-
-## <a id="manual"></a> Manual installation
-
-1. [Set up the prerequisites](#prerequisites)
-1. [Download Brooklyn](#download)
-1. [Configuring brooklyn.properties](#configuring-properties)
-1. [Configuring catalog.xml](#configuring-catalog)
-1. [Test the installation](#confirm)
-
-### <a id="prerequisites"></a>Set up the prerequisites
-
-Before installing Apache Brooklyn, it is recommented to configure the host as follows. 
-
-* install Java JRE or SDK (version 6 or later)
-* install an [SSH key]({{ site.path.guide }}/ops/locations/ssh-keys.html), if not available
-* enable [passwordless ssh login]({{ site.path.guide }}/ops/locations/ssh-keys.html)
-* create a `~/.brooklyn` directory on the host with `$ mkdir ~/.brooklyn`
-* check your `iptables` or other firewall service, making sure that incoming connections on port 8443 is not blocked
-* check that the [linux kernel entropy](increase-entropy.html) is sufficient
-
-
-## <a id="download"></a>Download Brooklyn
-
-Download Brooklyn and obtain a binary build as described on [the download page]({{site.path.website}}/download/).
-
-{% if brooklyn_version contains 'SNAPSHOT' %}
-Expand the `tar.gz` archive (note: as this is a -SNAPSHOT version, your filename will be slightly different):
-{% else %}
-Expand the `tar.gz` archive:
-{% endif %}
-
-{% if brooklyn_version contains 'SNAPSHOT' %}
-{% highlight bash %}
-$ tar -zxf brooklyn-dist-{{ site.brooklyn-stable-version }}-timestamp-dist.tar.gz
-{% endhighlight %}
-{% else %}
-{% highlight bash %}
-$ tar -zxf brooklyn-{{ site.brooklyn-stable-version }}-dist.tar.gz
-{% endhighlight %}
-{% endif %}
-
-This will create a `brooklyn-{{ site.brooklyn-stable-version }}` folder.
-
-Let's setup some paths for easy commands.
-
-{% highlight bash %}
-$ cd brooklyn-{{ site.brooklyn-stable-version }}
-$ BROOKLYN_DIR="$(pwd)"
-$ export PATH=$PATH:$BROOKLYN_DIR/bin/
-{% endhighlight %}
-
-## <a id="configuring-properties"></a>Configuring brooklyn.properties
-Brooklyn deploys applications to Locations. *Locations* can be clouds, machines with fixed IPs or localhost (for testing).
-
-By default Brooklyn loads configuration parameters (including credentials for any cloud accounts) from 
-
-`~/.brooklyn/brooklyn.properties` 
-
-The `brooklyn.properties` is the main configuration file for deployment locations. Contains the connection details and credentials for all public or on-premises cloud providers, as well as controlling some application startup and security options.
-
-Create a `.brooklyn` folder in your home directory and download the template [brooklyn.properties]({{brooklyn_properties_url_path}}) to that folder.
-
-{% highlight bash %}
-$ mkdir -p ~/.brooklyn
-$ wget -O ~/.brooklyn/brooklyn.properties {{brooklyn_properties_url_live}}
-$ chmod 600 ~/.brooklyn/brooklyn.properties
-{% endhighlight %}
-
-You may need to edit `~/.brooklyn/brooklyn.properties` to ensure that brooklyn can access cloud locations for application deployment.
-
-## <a id="configuring-catalog"></a>Configuring catalog.xml
-By default Brooklyn loads the catalog of available application components and services from 
-`~/.brooklyn/catalog.xml`. 
-
-{% highlight bash %}
-$ wget -O ~/.brooklyn/catalog.xml {{site.url_root}}{{site.path.website}}/quickstart/catalog.xml
-{% endhighlight %}
-
-The `catalog.xml` is the application blueprint catalog. The above example file contains some blueprints which will be automatically downloaded from the web if you run them.
-
-You may need to edit `~/.brooklyn/catalog.xml` to update links to any resources for download.
-
-## <a id="confirm"></a>Confirm installation
-We can do a quick test drive by launching Brooklyn:
-
-{% highlight bash %}
-$ brooklyn launch
-{% endhighlight %}
-
-Brooklyn will output the address of the management interface:
-
-{% highlight bash %}
-INFO  Starting brooklyn web-console on loopback interface because no security config is set
-
-INFO  Started Brooklyn console at http://127.0.0.1:8081/, running classpath://brooklyn.war and []
-{% endhighlight %}
-
-Stop Brooklyn with ctrl-c.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2a2f98c8/docs/website/documentation/other-docs.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/other-docs.md b/docs/website/documentation/other-docs.md
index a6d01df..0b80ce7 100644
--- a/docs/website/documentation/other-docs.md
+++ b/docs/website/documentation/other-docs.md
@@ -3,7 +3,6 @@ title: Other Resources
 layout: website-normal
 children:
 - { path: glossary.md }
-- { path: install-on-server.md }
 - { path: ../meta/versions.md }
 - { path: ../meta/sitemap.md }
 ---


[5/5] incubator-brooklyn git commit: This closes #527

Posted by he...@apache.org.
This closes #527


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

Branch: refs/heads/master
Commit: a6265834fb7bb8a6c71d1b9a952e59a0e6452a1c
Parents: a440080 1422f46
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Mar 2 16:14:52 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Mar 2 16:14:52 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/cli.md                           | 143 --------------
 docs/guide/ops/high-availability.md             |  46 +++++
 docs/guide/ops/index.md                         |   5 +-
 docs/guide/ops/install-on-server.md             | 138 +++++++++++++
 docs/guide/ops/launch.md                        | 198 +++++++++++++++++++
 docs/guide/ops/locations/cloud-credentials.md   |  85 ++++++++
 docs/guide/ops/locations/index.md               |  62 ++++--
 docs/guide/ops/logging.md                       |  28 ++-
 docs/guide/ops/persistence/index.md             | 151 +++++++++-----
 docs/guide/ops/requirements.md                  |  59 ++++++
 docs/website/documentation/install-on-server.md | 128 ------------
 docs/website/documentation/other-docs.md        |   1 -
 12 files changed, 705 insertions(+), 339 deletions(-)
----------------------------------------------------------------------



[4/5] incubator-brooklyn git commit: Docs: adds to ops guide

Posted by he...@apache.org.
Docs: adds to ops guide

- Renames cli.md to “Launching Brooklyn”
- Adds pages/sections for:
  - requirements (server/OS/etc)
  - cloud credentials / setup
  - state backup
  - log file backup
  - more persistence configuration options
  - more jclouds/location config options


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

Branch: refs/heads/master
Commit: 1422f46a005cf7b2ad0d4784446a76096f64721b
Parents: 9debe45
Author: Aled Sage <al...@gmail.com>
Authored: Tue Feb 24 12:05:48 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Feb 24 12:05:48 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/cli.md                         | 143 ---------------
 docs/guide/ops/index.md                       |   3 +-
 docs/guide/ops/install-on-server.md           |  12 +-
 docs/guide/ops/launch.md                      | 198 +++++++++++++++++++++
 docs/guide/ops/locations/cloud-credentials.md |  85 +++++++++
 docs/guide/ops/locations/index.md             |  62 +++++--
 docs/guide/ops/logging.md                     |  28 ++-
 docs/guide/ops/persistence/index.md           | 105 ++++++++++-
 docs/guide/ops/requirements.md                |  59 ++++++
 9 files changed, 530 insertions(+), 165 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/cli.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/cli.md b/docs/guide/ops/cli.md
deleted file mode 100644
index 3e44c62..0000000
--- a/docs/guide/ops/cli.md
+++ /dev/null
@@ -1,143 +0,0 @@
----
-title: CLI
-layout: website-normal
----
-
-To launch Brooklyn, from the directory where Brooklyn is unpacked, run:
-
-{% highlight bash %}
-% bin/brooklyn launch
-{% endhighlight %}
-
-With no configuration, this will launch the Brooklyn web console and REST API on [`http://localhost:8081/`](http://localhost:8081/).
-No password is set, but the server is listening only on the loopback network interface for security.
-Once [security is configured](brooklyn_properties.html), Brooklyn will listen on all network interfaces by default.
-
-You may wish to [add Brooklyn to your path](#path-setup);
-assuming you've done this, to get information the supported CLI options 
-at any time, just run `brooklyn help`:
-
-{% highlight bash %}
-% bin/brooklyn help
-
-usage: brooklyn [(-q | --quiet)] [(-v | --verbose)] <command> [<args>]
-
-The most commonly used brooklyn commands are:
-    help     Display help information about brooklyn
-    info     Display information about brooklyn
-    launch   Starts a brooklyn application. Note that a BROOKLYN_CLASSPATH environment variable needs to be set up beforehand to point to the user application classpath.
-
-See 'brooklyn help <command>' for more information on a specific command.
-{% endhighlight %}
-
-
-
-## Configuration
-
-Brooklyn can read configuration from a variety of places:
-        
-* the file `~/.brooklyn/brooklyn.properties` (unless `--noGlobalBrooklynProperties` is specified)
-* another file, if the `--localBrooklynProperties <local brooklyn.properties file>`
-* ``-D`` defines on the brooklyn (java) command-line
-* shell environment variables
-
-These properties are described in more detail [here](brooklyn_properties.html).
-
-
-
-## Path Setup
-
-In order to have easy access to the cli it is useful to configure the PATH environment variable to also point to the cli's bin directory:
-
-{% highlight bash %}
-BROOKLYN_HOME=/path/to/brooklyn/
-export PATH=$PATH:$BROOKLYN_HOME/usage/dist/target/brooklyn-dist/bin/
-{% endhighlight %}
-
-
-## Running from a Source Build
-
-Here is an example of the commands you might run to get the Brooklyn code, 
-compile it and launch an application:
-
-{% highlight bash %}
-git clone https://github.com/apache/incubator-brooklyn.git
-cd brooklyn
-mvn clean install -DskipTests
-BROOKLYN_HOME=$(pwd)
-export PATH=${PATH}:${BROOKLYN_HOME}/usage/dist/target/brooklyn-dist/bin/
-export BROOKLYN_CLASSPATH=${BROOKLYN_HOME}/examples/simple-web-cluster/target/classes
-brooklyn launch --app brooklyn.demo.SingleWebServerExample --location localhost
-{% endhighlight %}
-
-
-## Extending the Classpath
-
-You can add things to the Brooklyn classpath in a number of ways:
-
-* Add ``.jar`` files to Brooklyn's ``./lib/dropins/`` directory. These are added at the end of the classpath.
-* Add ``.jar`` files to Brooklyn's ``./lib/patch/`` directory. These are added at the front of the classpath.
-* Add resources to Brooklyn's ``./conf/`` directory. This directory is at the very front of the classpath.
-* Use the ``BROOKLYN_CLASSPATH`` environment variable. If set, this is prepended to the Brooklyn classpath.
-
-
-## Cloud Explorer
-
-The `brooklyn` command line tool includes support for querying (and managing) cloud
-compute resources and blob-store resources. 
-
-For example, `brooklyn cloud-compute list-instances --location aws-ec2:eu-west-1`
-will use the AWS credentials from `brooklyn.properties` and list the VM instances
-running in the given EC2 region.
-
-Use `brooklyn help` and `brooklyn help cloud-compute` to find out more information.
-
-This functionality is not intended as a generic cloud management CLI, but instead 
-solves specific Brooklyn use-cases. The main use-case is discovering the valid 
-configuration options on a given cloud, such as for `imageId` and `hardwareId`.
-
-
-### Cloud Compute
-
-The command `brooklyn cloud-compute` has the following options:
-
-* `list-images`: lists VM images within the given cloud, which can be chosen when
-  provisioning new VMs.
-  This is useful for finding the possible values for the `imageId` configuration.
-
-* `get-image <imageId1> <imageId2> ...`: retrieves metadata about the specific images.
-
-* `list-hardware-profiles`: lists the ids and the details of the hardware profiles
-  available when provisioning. 
-  This is useful for finding the possible values for the `hardwareId` configuration.
-
-* `default-template`: retrieves metadata about the image and hardware profile that will
-  be used by Brooklyn for that location, if no additional configuration options
-  are supplied.
-
-* `list-instances`: lists the VM instances within the given cloud.
-
-* `terminate-instances <instanceId1> <instanceId2> ...`: Terminates the instances with
-  the given ids.
-
-
-## Blob Store
-
-The command `brooklyn cloud-blobstore` is used to access a given object store, such as S3
-or Swift. It has the following options:
-
-* `list-containers`: lists the containers (i.e. buckets in S3 terminology) within the 
-  given object store.
-
-* `list-container <containerName>`: lists all the blobs (i.e. objects) contained within 
-  the given container.
-
-* `blob --container <containerName> --blob <blobName>`: retrieves the given blob
-  (i.e. object), including metadata and its contents.
-
-
-## Other Topics
-
-The CLI arguments for [persistence and HA](persistence/)
-are described separately,
-as is [detailed configuration](brooklyn_properties.html).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/index.md b/docs/guide/ops/index.md
index 6cfcb49..dae3071 100644
--- a/docs/guide/ops/index.md
+++ b/docs/guide/ops/index.md
@@ -2,8 +2,9 @@
 title: Operations
 layout: website-normal
 children:
+- requirements.md
 - install-on-server.md
-- cli.md
+- launch.md
 - brooklyn_properties.md
 - locations/
 - persistence/

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/install-on-server.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/install-on-server.md b/docs/guide/ops/install-on-server.md
index 6904504..d4711db 100644
--- a/docs/guide/ops/install-on-server.md
+++ b/docs/guide/ops/install-on-server.md
@@ -1,6 +1,6 @@
 ---
 layout: website-normal
-title: Installing on a Server
+title: Installing Brooklyn
 ---
 
 {% include fields.md %}
@@ -10,7 +10,9 @@ Here we present two *alternatives* to install Brooklyn:
 - [Running the *installation script*](#script)
 - [Manual installation](#manual)
 
+
 ## <a id="script"></a> Running the installation script
+
 There is a simple bash script available to help with the installation process. 
 
 #### Script prerequisites
@@ -29,6 +31,7 @@ $ chmod +x ./brooklyn-install.sh
 $ ./brooklyn-install.sh -s -r <your-server-ip>
 {% endhighlight %}
 
+
 ## <a id="manual"></a> Manual installation
 
 1. [Set up the prerequisites](#prerequisites)
@@ -37,6 +40,7 @@ $ ./brooklyn-install.sh -s -r <your-server-ip>
 1. [Configuring catalog.xml](#configuring-catalog)
 1. [Test the installation](#confirm)
 
+
 ### <a id="prerequisites"></a>Set up the prerequisites
 
 Before installing Apache Brooklyn, it is recommented to configure the host as follows. 
@@ -79,7 +83,9 @@ $ BROOKLYN_DIR="$(pwd)"
 $ export PATH=$PATH:$BROOKLYN_DIR/bin/
 {% endhighlight %}
 
+
 ### <a id="configuring-properties"></a>Configuring brooklyn.properties
+
 Brooklyn deploys applications to Locations. *Locations* can be clouds, machines with fixed IPs or localhost (for testing).
 
 By default Brooklyn loads configuration parameters (including credentials for any cloud accounts) from 
@@ -98,7 +104,9 @@ $ chmod 600 ~/.brooklyn/brooklyn.properties
 
 You may need to edit `~/.brooklyn/brooklyn.properties` to ensure that brooklyn can access cloud locations for application deployment.
 
+
 ### <a id="configuring-catalog"></a>Configuring catalog.xml
+
 By default Brooklyn loads the catalog of available application components and services from 
 `~/.brooklyn/catalog.xml`. 
 
@@ -110,7 +118,9 @@ The `catalog.xml` is the application blueprint catalog. The above example file c
 
 You may need to edit `~/.brooklyn/catalog.xml` to update links to any resources for download.
 
+
 ### <a id="confirm"></a>Confirm installation
+
 We can do a quick test drive by launching Brooklyn:
 
 {% highlight bash %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/launch.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/launch.md b/docs/guide/ops/launch.md
new file mode 100644
index 0000000..45d67bd
--- /dev/null
+++ b/docs/guide/ops/launch.md
@@ -0,0 +1,198 @@
+---
+title: Launching Brooklyn
+layout: website-normal
+---
+
+## Launch command
+
+To launch Brooklyn, from the directory where Brooklyn is unpacked, run:
+
+{% highlight bash %}
+% nohup bin/brooklyn launch &
+{% endhighlight %}
+
+With no configuration, this will launch the Brooklyn web console and REST API on [`http://localhost:8081/`](http://localhost:8081/).
+No password is set, but the server is listening only on the loopback network interface for security.
+Once [security is configured](brooklyn_properties.html), Brooklyn will listen on all network interfaces by default.
+
+You may wish to [add Brooklyn to your path](#path-setup);
+assuming you've done this, to get information the supported CLI options 
+at any time, just run `brooklyn help`:
+
+{% highlight bash %}
+% bin/brooklyn help
+
+usage: brooklyn [(-q | --quiet)] [(-v | --verbose)] <command> [<args>]
+
+The most commonly used brooklyn commands are:
+    help     Display help information about brooklyn
+    info     Display information about brooklyn
+    launch   Starts a brooklyn application. Note that a BROOKLYN_CLASSPATH environment variable needs to be set up beforehand to point to the user application classpath.
+
+See 'brooklyn help <command>' for more information on a specific command.
+{% endhighlight %}
+
+It is important that Brooklyn is launched with either `nohup ... &` or `... & disown`, to ensure 
+it keeps running after the shell terminates.
+
+
+### Other CLI Arguments
+
+The CLI arguments for [persistence and HA](persistence/) are described separately.
+
+
+### Path Setup
+
+In order to have easy access to the cli it is useful to configure the PATH environment 
+variable to also point to the cli's bin directory:
+
+{% highlight bash %}
+BROOKLYN_HOME=/path/to/brooklyn/
+export PATH=$PATH:$BROOKLYN_HOME/usage/dist/target/brooklyn-dist/bin/
+{% endhighlight %}
+
+
+### Memory Usage
+
+The amount of memory required by the Brooklyn process depends on the usage 
+- for example the number of entities/VMs under management.
+
+For a standard Brooklyn deployment, the defaults are to start with 256m, and to grow to 1g of memory.
+These numbers can be overridden by setting the environment variable `JAVA_OPTS` before launching
+the `brooklyn script`:
+
+    JAVA_OPTS=-Xms1g -Xmx1g -XX:MaxPermSize=256m
+
+Brooklyn stores a task history in-memory using [soft references](http://docs.oracle.com/javase/7/docs/api/java/lang/ref/SoftReference.html).
+This means that, once the task history is large, Brooklyn will continually use the maximum allocated 
+memory. It will only expunge tasks from memory when this space is required for other objects within the
+Brooklyn process.
+
+
+## Configuration
+
+### Configuration Files
+
+Brooklyn reads configuration from a variety of places. It aggregates the configuration.
+The list below shows increasing precedence (i.e. the later ones will override values
+from earlier ones, if exactly the same property is specified multiple times).
+
+1. `classpath://brooklyn/location-metadata.properties` is shipped as part of Brooklyn, containing 
+   generic metadata such as jurisdiction and geographic information about Cloud providers.        
+1. The file `~/.brooklyn/location-metadata.properties` (unless `--noGlobalBrooklynProperties` is specified).
+   This is intended to contain custom metadata about additional locations.
+1. The file `~/.brooklyn/brooklyn.properties` (unless `--noGlobalBrooklynProperties` is specified).
+1. Another properties file, if the `--localBrooklynProperties <local brooklyn.properties file>` is specified.
+1. Shell environment variables
+1. System properties, supplied with ``-D`` on the brooklyn (Java) command-line.
+
+These properties are described in more detail [here](brooklyn_properties.html).
+
+
+### Extending the Classpath
+
+The default Brooklyn directory structure includes:
+
+* `./conf/`: for configuration resources.
+* `./lib/patch/`: for Jar files containing patches.
+* `./lib/brooklyn/`: for the brooklyn libraries.
+* `./lib/dropins/`: for additional Jars.
+
+Resources added to `conf/` will be available on the classpath.
+
+A patch can be applied by adding a Jar to the `lib/patch/` directory, and restarting Brooklyn.
+All jars in this directory will be at the head of the classpath.
+
+Additional Jars should be added to `lib/dropins/`, prior to starting Brooklyn. These jars will 
+be at the end of the classpath.
+
+The initial classpath, as set in the `brooklyn` script, is:
+
+    conf:lib/patch/*:lib/brooklyn/*:lib/dropins/*
+
+Additional entries can be added at the head of the classpath by setting the environment variable 
+`BROOKLYN_CLASSPATH` before running the `brooklyn` script. 
+
+
+### Replacing the web-console
+
+*Work in progress.*
+
+The Brooklyn web-console is loaded from the classpath as the resource `classpath://brooklyn.war`.
+
+To replace this, an alternative WAR with that name can be added at the head of the classpath.
+However, this approach is likely to change in a future release - consider this feature as "beta".
+
+
+## Cloud Explorer
+
+The `brooklyn` command line tool includes support for querying (and managing) cloud
+compute resources and blob-store resources. 
+
+For example, `brooklyn cloud-compute list-instances --location aws-ec2:eu-west-1`
+will use the AWS credentials from `brooklyn.properties` and list the VM instances
+running in the given EC2 region.
+
+Use `brooklyn help` and `brooklyn help cloud-compute` to find out more information.
+
+This functionality is not intended as a generic cloud management CLI, but instead 
+solves specific Brooklyn use-cases. The main use-case is discovering the valid 
+configuration options on a given cloud, such as for `imageId` and `hardwareId`.
+
+
+### Cloud Compute
+
+The command `brooklyn cloud-compute` has the following options:
+
+* `list-images`: lists VM images within the given cloud, which can be chosen when
+  provisioning new VMs.
+  This is useful for finding the possible values for the `imageId` configuration.
+
+* `get-image <imageId1> <imageId2> ...`: retrieves metadata about the specific images.
+
+* `list-hardware-profiles`: lists the ids and the details of the hardware profiles
+  available when provisioning. 
+  This is useful for finding the possible values for the `hardwareId` configuration.
+
+* `default-template`: retrieves metadata about the image and hardware profile that will
+  be used by Brooklyn for that location, if no additional configuration options
+  are supplied.
+
+* `list-instances`: lists the VM instances within the given cloud.
+
+* `terminate-instances <instanceId1> <instanceId2> ...`: Terminates the instances with
+  the given ids.
+
+
+### Blob Store
+
+The command `brooklyn cloud-blobstore` is used to access a given object store, such as S3
+or Swift. It has the following options:
+
+* `list-containers`: lists the containers (i.e. buckets in S3 terminology) within the 
+  given object store.
+
+* `list-container <containerName>`: lists all the blobs (i.e. objects) contained within 
+  the given container.
+
+* `blob --container <containerName> --blob <blobName>`: retrieves the given blob
+  (i.e. object), including metadata and its contents.
+
+  
+## Running from a Source Build
+
+Here is an example of the commands you might run to get the Brooklyn code, 
+compile it and launch an application:
+
+{% highlight bash %}
+git clone https://github.com/apache/incubator-brooklyn.git
+cd brooklyn
+mvn clean install -DskipTests
+BROOKLYN_HOME=$(pwd)
+export PATH=${PATH}:${BROOKLYN_HOME}/usage/dist/target/brooklyn-dist/bin/
+export BROOKLYN_CLASSPATH=${BROOKLYN_HOME}/examples/simple-web-cluster/target/classes
+nohup brooklyn launch --app brooklyn.demo.SingleWebServerExample --location localhost &
+{% endhighlight %}
+
+
+  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/locations/cloud-credentials.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/locations/cloud-credentials.md b/docs/guide/ops/locations/cloud-credentials.md
new file mode 100644
index 0000000..40cc108
--- /dev/null
+++ b/docs/guide/ops/locations/cloud-credentials.md
@@ -0,0 +1,85 @@
+---
+title: Cloud Setup
+layout: website-normal
+---
+
+To connect to a Cloud, Brooklyn requires appropriate credentials. These comprise the "identity" and 
+"credential" in Brooklyn terminology. 
+
+For private clouds (and for some clouds being targeted using a standard API), the "endpoint"
+must also be specified, which is the cloud's URL.
+
+The [jclouds guides](https://jclouds.apache.org/guides) includes documentation on configuring 
+different clouds.
+
+
+## AWS
+
+### Credentials
+
+AWS has an "access key" and a "secret key", which correspond to Brooklyn's identity and credential 
+respectively.
+
+These keys are the way for any programmatic mechanism to access the AWS API.
+
+To generate an access key and a secret key, see [jclouds instructions](http://jclouds.apache.org/guides/aws) 
+and [AWS IAM instructions](http://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingCredentials.html).
+
+An example of the expected format is shown below:
+
+    brooklyn.location.jclouds.aws-ec2.identity=ABCDEFGHIJKLMNOPQRST
+    brooklyn.location.jclouds.aws-ec2.credential=abcdefghijklmnopqrstu+vwxyzabcdefghijklm
+
+
+### Tidying up after jclouds
+
+Security groups are not always deleted by jclouds. This is due to a limitation in AWS (see
+https://issues.apache.org/jira/browse/JCLOUDS-207). In brief, AWS prevents the security group
+being deleted until there are no VMs using it. However, there is eventual consistency for
+recording which VMs still reference those security groups. After deleting the VM, it can sometimes
+take several minutes before the security group can be deleted. jclouds retries for 3 seconds, but 
+does not block for longer.
+
+There is utility written by Cloudsoft for deleting these unused resources:
+http://www.cloudsoftcorp.com/blog/2013/03/tidying-up-after-jclouds.
+
+
+## Google Compute Engine
+
+### Credentials
+
+Google Compute Engine (GCE) uses a service account e-mail address for the identity, and a private key 
+as the credential.
+
+To obtain these from GCE, see the [jclouds instructions](https://jclouds.apache.org/guides/google).
+
+An example of the expected format is shown below (note the credential is one long line, 
+with `\n` to represent the new line characters):
+
+    brooklyn.location.jclouds.google-compute-engine.identity=123456789012@developer.gserviceaccount.com
+    brooklyn.location.jclouds.google-compute-engine.credential=-----BEGIN RSA PRIVATE KEY-----\nabcdefghijklmnopqrstuvwxyznabcdefghijk/lmnopqrstuvwxyzabcdefghij\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghij+lm\nnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm\nnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxy\nzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk\nlmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw\nxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghi\njklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu\nvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefg\nhijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs\ntuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde\nfghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw\n-----END RSA PRIVATE KEY-----
+
+
+### Quotas
+
+GCE accounts can have low default [quotas](https://cloud.google.com/compute/docs/resource-quotas).
+
+It is easy to requesta quota increase by submitting a [quota increase form](https://support.google.com/cloud/answer/6075746?hl=en).
+ 
+
+### Networks
+
+GCE accounts often have a limit to the number of networks that can be created. One work around 
+is to manually create a network with the required open ports, and to refer to that named network
+in Brooklyn's location configuration.
+
+To create a network, see [GCE network instructions](https://cloud.google.com/compute/docs/networking#networks_1).
+
+For example, for dev/demo purposes an "everything" network could be created that opens all ports.
+
+| Name                        | everything                  |
+| Description                 | opens all tcp ports         |
+| Source IP Ranges            | 0.0.0.0/0                   |
+| Allowed protocols and ports | tcp:0-65535 and udp:0-65535 |
+
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/locations/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/locations/index.md b/docs/guide/ops/locations/index.md
index 235a552..18c9810 100644
--- a/docs/guide/ops/locations/index.md
+++ b/docs/guide/ops/locations/index.md
@@ -6,6 +6,7 @@ children:
 - { section: Inheritance and Named Locations, title: Named Locations }
 - { section: Localhost }
 - { section: BYON }
+- cloud-credentials.md
 - more-locations.md
 - ssh-keys.md
 ---
@@ -72,14 +73,22 @@ The credentials for the initial OS log on are typically discovered from the clou
 but in some environments this is not possible.
 The keys `loginUser` and either `loginUser.password` or `loginUser.privateKeyFile` can be used to force
 Brooklyn to use specific credentials for the initial login to a cloud-provisioned machine.
-(This is particularly useful when using a custom image templates where the cloud-side account management logic is not enabled.)
+
+(This custom login is particularly useful when using a custom image templates where the cloud-side account 
+management logic is not enabled. For example, a vCD template can have guest customization that will change
+the root password. This setting tells AMP to only use the given password, rather than the initial 
+randomly generated password that vCD returns. Without this property, there is a race for such templates:
+does Brooklyn manage to create the admin user before the guest customization changes the login and reboots,
+or is the password reset first (the latter means Brooklyn can never ssh to the VM). With this property, 
+Brooklyn will always wait for guest customization to complete before it is able to ssh at all. In such
+cases, it is also recommended to use `useJcloudsSshInit=false`.)
 
 Following a successful logon, Brooklyn performs the following steps to configure the machine:
 
-1. to create a new user with the same name as the user `brooklyn` is running as locally
-  (this can be overridden with `user`, below)
+1. creates a new user with the same name as the user `brooklyn` is running as locally
+  (this can be overridden with `user`, below).
 
-1. to install the local user's `~/.ssh/id_rsa.pub` as an `authorized_keys` on the new machine,
+1. install the local user's `~/.ssh/id_rsa.pub` as an `authorized_keys` on the new machine,
    to make it easy for the operator to `ssh` in
    (override with `privateKeyFile`; or if there is no `id_{r,d}sa{,.pub}` an ad hoc keypair will be generated;
    if there is a passphrase on the key, this must be supplied)  
@@ -128,6 +137,24 @@ For more keys and more detail on the keys below, see
   before making the `Location` available to entities,
   optionally also using `setup.script.vars` (set as `key1:value1,key2:value2`)
 
+- Use `openIptables=true` to automatically configure `iptables`, to open the TCP ports required by
+  the software process. One can alternatively use `stopIptables=true` to entirely stop the
+  iptables service.
+
+- Use `installDevUrandom=true` to fall back to using `/dev/urandom` rather than `/dev/random`. This setting
+  is useful for cloud VMs where there is not enough random entropy, which can cause `/dev/random` to be
+  extremely slow (causing `ssh` to be extremely slow to respond).
+
+- Use `useJcloudsSshInit=false` to disable the use of the native jclouds support for initial commands executed 
+  on the VM (e.g. for creating new users, setting root passwords, etc.). Instead, Brooklyn's ssh support will
+  be used. Timeouts and retries are more configurable within Brooklyn itself. Therefore this option is particularly 
+  recommended when the VM startup is unusual (for example, if guest customizations will cause reboots and/or will 
+  change login credentials).
+
+- Use `brooklyn.ssh.config.noDeleteAfterExec=true` can be used during dev/test. This prevents the scripts executed 
+  on the VMs from being deleted on completion. This can help with debugging some issues. However, the contents of the 
+  scripts and the stdout/stderr of their execution is also available in the AMP debug log.
+
 
 ###### VM Creation
     
@@ -150,12 +177,13 @@ For more keys and more detail on the keys below, see
 - User metadata can be attached, using the syntax ``userMetadata=key=value,key2="value 2"``
 
 - You can specify the number of attempts Brooklyn should make to create
-  machines with ``machineCreateAttempts`` (jclouds only). This is useful for
+  machines with ``machineCreateAttempts`` (jclouds only). This is extremely useful for
   working around the rare occasions in which cloud providers give machines that
   are dead on arrival.
 
-- If you want to investigate failures, set `destroyOnFailure` to `false`
+- If you want to investigate failures, set `destroyOnFailure=false`
   to keep failed VM's around. (You'll have to manually clean them up.)
+  The default is false: if a VM fails to start, or is never ssh'able, then the VM will be terminated.
 
 
 ### Inheritance and Named Locations
@@ -191,20 +219,21 @@ brooklyn.location.named.AWS\ Virginia\ Large\ Centos.user=root
 brooklyn.location.named.AWS\ Virginia\ Large\ Centos.minRam=4096
 {% endhighlight %}
 
-If you are confused about inheritance order, the following test may be useful:
+The precedence for configuration defined at different levels is that the most value
+defined in the most specific context will apply.
 
+For example, in the example below the config key is repeatedly overridden. If you deploy
+`location: named:my-aws`, Brooklyn will get `VAL5` or `KEY`:
+  
 {% highlight bash %}
-brooklyn.location.jclouds.KEY=VAL1
-brooklyn.location.jclouds.aws-ec2.KEY=VAL2
-brooklyn.location.named.my-aws=jclouds:aws-ec2
-brooklyn.location.named.my-aws.KEY=VAL3
+brooklyn.location.KEY=VAL1
+brooklyn.location.jclouds.KEY=VAL2
+brooklyn.location.jclouds.aws-ec2.KEY=VAL3
+brooklyn.location.jclouds.aws-ec2@us-west-1.KEY=VAL4
+brooklyn.location.named.my-aws=jclouds:aws-ec2:us-west-1
+brooklyn.location.named.my-aws.KEY=VAL5
 {% endhighlight %}
 
-In the above example, if you deploy to `location: named:my-aws`,
-Brooklyn will get `VAL3` for `KEY`;
-this overrides `VAL2` which applies by default to all `aws-ec2` locations,
-which in turn overrides `VAL1`, which applies to all jclouds locations. 
-
 
 ### Localhost
 
@@ -272,3 +301,4 @@ brooklyn.location.named.On-Prem\ Iron\ Example.privateKeyPassphrase=s3cr3tpassph
 
 * [More Locations](more-locations.html)
 * [SSH Keys](ssh-keys.html)
+* [Cloud Credentials](cloud-credentials.md)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/logging.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/logging.md b/docs/guide/ops/logging.md
index fc1da3c..81d55e9 100644
--- a/docs/guide/ops/logging.md
+++ b/docs/guide/ops/logging.md
@@ -3,7 +3,6 @@ title: Logging
 layout: website-normal
 ---
 
-
 Brooklyn uses the SLF4J logging facade, which allows use of many popular frameworks including `logback`, 
 `java.util.logging` and `log4j`.
 
@@ -17,6 +16,7 @@ some other problem has occured which the user is expected to attend to
 
 Loggers follow the ``package.ClassName`` naming standard.  
 
+
 ## Standard Configuration
 
 A `logback.xml` file is included in the `conf/` directly of the Brooklyn distro;
@@ -37,6 +37,32 @@ and create a file `logback-debug.xml` based on the
 from that project.
 
 
+## Log File Backup
+
+*This sub-section is a work in progress; feedback from the community is extremely welcome.*
+
+The default rolling log files can be backed up periodically, e.g. using a CRON job.
+
+Note however that the rolling log file naming scheme will rename the historic zipped log files 
+such that `brooklyn.debug-1.log.zip` is the most recent zipped log file. When the current
+`brooklyn.debug.log` is to be zipped, the previous zip file will be renamed 
+`brooklyn.debug-2.log.zip`. This renaming of files can make RSYNC or backups tricky.
+
+An option is to covert/move the file to a name that includes the last-modified timestamp. 
+For example (on mac):
+
+    LOG_FILE=brooklyn.debug-1.log.zip
+    TIMESTAMP=`stat -f '%Um' $LOG_FILE`
+    mv $LOG_FILE /path/to/archive/brooklyn.debug-$TIMESTAMP.log.zip
+
+
+## Logging aggregators
+
+Integration with systems like Logstash and Splunk is possible using standard logback configuration.
+Logback can be configured to [write to the syslog](http://logback.qos.ch/manual/appenders.html#SyslogAppender), 
+which can then [feed its logs to Logstash](http://www.logstash.net/docs/1.4.2/inputs/syslog).
+
+
 ## For More Information
 
 The following resources may be useful when configuring logging:

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/persistence/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/persistence/index.md b/docs/guide/ops/persistence/index.md
index 26696aa..1a8fe55 100644
--- a/docs/guide/ops/persistence/index.md
+++ b/docs/guide/ops/persistence/index.md
@@ -7,6 +7,7 @@ children:
 - { section: Object Store Persistence }
 - { section: Rebinding to State }
 - { section: Writing Persistable Code }
+- { section: Persisted State Backup }
 ---
 
 Brooklyn can be configured to persist its state so that the Brooklyn server can be restarted, 
@@ -63,17 +64,42 @@ The state is written to the given path. The file structure under that path is:
 * `./enrichers/`
 
 In each of those directories, an XML file will be created per item - for example a file per
-entity in ./entities/. This file will capture all of the state - for example, an
+entity in `./entities/`. This file will capture all of the state - for example, an
 entity's: id; display name; type; config; attributes; tags; relationships to locations, child 
 entities, group membership, policies and enrichers; and dynamically added effectors and sensors.
 
+If using the default persistence dir (i.e. no `--persistenceDir` was specified), then Brooklyn will
+write its state to `~/.brooklyn/brooklyn-persisted-state/data`. Copies of this directory
+will be automatically created in `~/.brooklyn/brooklyn-persisted-state/backups/` each time Brooklyn 
+is restarted (or if a standby Brooklyn instances takes over as master).
+
+A custom directory for Brooklyn state can also be configured in `brooklyn.properties` using:
+    
+    # For all Brooklyn files
+    brooklyn.base.dir=/path/to/base/dir
+    
+    # Sub-directory of base.dir for writing persisted state (if relative). If directory
+    # starts with "/" (or "~/", or something like "c:\") then assumed to be absolute. 
+    brooklyn.persistence.dir=data
+
+    # Sub-directory of base.dir for creating backup directories (if relative). If directory
+    # starts with "/" (or "~/", or something like "c:\") then assumed to be absolute. 
+    brooklyn.persistence.backups.dir=backups
+
+This `base.dir` will also include temporary files such as the OSGi cache.
+
+If `persistence.dir` is not specified then it will use the sub-directory
+`brooklyn-persisted-state/data` of the `base.dir`. If the `backups.dir` is not specified
+the backup directories will be created in the sub-directory `backups` of the persistence dir.
+
 
 Object Store Persistence
 ------------------------
 
 Brooklyn can persist its state to any Object Store API that jclouds supports including 
 S3, Swift and Azure. This gives access to any compatible Object Store product or cloud provider
-including AWS-S3, SoftLayer, Rackspace, HP and Microsoft Azure.
+including AWS-S3, SoftLayer, Rackspace, HP and Microsoft Azure. For a complete list of supported
+providers, see [jclouds](http://jclouds.apache.org/guides/providers/#blobstore-providers).
 
 To configure the Object Store, add the credentials to `~/.brooklyn/brooklyn.properties` such as:
 
@@ -94,10 +120,28 @@ brooklyn.location.named.softlayer-swift-ams01.credential=abcdefghijklmnopqrstuvw
 Start Brooklyn pointing at this target object store, e.g.:
 
 {% highlight bash %}
-brooklyn launch --persist auto --persistenceDir myContainerName --persistenceLocation named:softlayer-swift-ams01
+nohup brooklyn launch --persist auto --persistenceDir myContainerName --persistenceLocation named:softlayer-swift-ams01 &
 {% endhighlight %}
 
 
+The following `brooklyn.properties` options can also be used:
+
+    # Location spec string for an object store (e.g. jclouds:swift:URL) where persisted state 
+    # should be kept; if blank or not supplied, the file system is used.
+    brooklyn.persistence.location.spec=<location>
+
+    # Container name for writing persisted state
+    brooklyn.persistence.dir=/path/to/dataContainer
+
+    # Location spec string for an object store (e.g. jclouds:swift:URL) where backups of persisted 
+    # state should be kept; defaults to the local file system.
+    brooklyn.persistence.backups.location.spec=<location>
+
+    # Container name for writing backups of persisted state;
+    # defaults to 'backups' inside the default persistence container.
+    brooklyn.persistence.backups.dir=/path/to/backupContainer
+
+
 Rebinding to State
 ------------------
 
@@ -233,3 +277,58 @@ For locations, policies and enrichers they (currently) do not have attributes. H
 config is persisted automatically. Normally the state of a policy or enricher is transient - 
 on rebind it starts afresh, for example with monitoring the performance or health metrics
 rather than relying on the persisted values.
+
+
+Persisted State Backup
+----------------------
+
+### File system backup
+
+When using the file system it is important to ensure it is backed up regularly.
+
+One could use `rsync` to regularly backup the contents to another server.
+
+It is also recommended to periodically create a complete archive of the state.
+A simple mechanism is to run a CRON job periodically (e.g. every 30 minutes) that creates an
+archive of the persistence directory, and uploads that to a backup 
+facility (e.g. to S3).
+
+Optionally, to avoid excessive load on the Brooklyn server, the archive-generation could be done 
+on another "data" server. This could get a copy of the data via an `rsync` job.
+
+An example script to be invoked by CRON is shown below:
+
+    DATE=`date "+%Y%m%d.%H%M.%S"`
+    BACKUP_FILENAME=/path/to/archives/back-${DATE}.tar.gz
+    DATA_DIR=/path/to/base/dir/data
+    
+    tar --exclude '*/backups/*' -czvf $BACKUP_FILENAME $DATA_DIR
+    # For s3cmd installation see http://s3tools.org/repositories
+    s3cmd put $BACKUP_FILENAME s3://mybackupbucket
+    rm $BACKUP_FILENAME
+
+
+### Object store backup
+
+Object Stores will normally handle replication. However, many such object stores do not handle 
+versioning (i.e. to allow access to an old version, if an object has been incorrectly changed or 
+deleted).
+
+The state can be downloaded periodically from the object store, archived and backed up. 
+
+An example script to be invoked by CRON is shown below:
+
+    DATE=`date "+%Y%m%d.%H%M.%S"`
+    BACKUP_FILENAME=/path/to/archives/back-${DATE}.tar.gz
+    TEMP_DATA_DIR=/path/to/tempdir
+    
+    amp copy-state \
+            --persistenceLocation named:my-persistence-location \
+            --persistenceDir /path/to/bucket \
+            --destinationDir $TEMP_DATA_DIR
+
+    tar --exclude '*/backups/*' -czvf $BACKUP_FILENAME $TEMP_DATA_DIR
+    # For s3cmd installation see http://s3tools.org/repositories
+    s3cmd put $BACKUP_FILENAME s3://mybackupbucket
+    rm $BACKUP_FILENAME
+    rm -r $TEMP_DATA_DIR

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1422f46a/docs/guide/ops/requirements.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/requirements.md b/docs/guide/ops/requirements.md
new file mode 100644
index 0000000..52b96e4
--- /dev/null
+++ b/docs/guide/ops/requirements.md
@@ -0,0 +1,59 @@
+---
+title: Requirements
+layout: website-normal
+---
+
+## Server Specification
+
+The size of server required by Brooklyn depends on the amount of activity. This includes:
+
+* the number of entities/VMs being managed
+* the number of VMs being deployed concurrently
+* the amount of management and monitoring required per entity
+
+For dev/test or when there are only a handful of VMs being managed, a small VM is sufficient.
+For example, an AWS m3.medium with one vCPU, 3.75GiB RAM and 4GB disk.
+
+For larger production uses, a more appropriate machine spec would be two or more cores,
+at least 8GB RAM and 20GB disk. The disk is just for logs, a small amount of persisted state, and
+any binaries for custom blueprints/integrations.
+
+
+## Supported Operating Systems
+
+The recommended operating system is CentOS 6.x or RedHat 6.x.
+
+Brooklyn has also been tested on Ubuntu 12.04 and OS X.
+
+
+## Software Requirements
+
+Brooklyn requires Java (JRE or JDK), version 6 or version 7. The most recent version 7 is recommended.
+OpenJDK is recommended. Brooklyn has also been tested on IBM J9 and Oracle's JVM.
+
+* check your `iptables` or other firewall service, making sure that incoming connections on port 8443 is not blocked
+* check that the [linux kernel entropy](increase-entropy.html) is sufficient
+
+
+## Configuration Requirements
+
+### Ports
+
+The ports used by Brooklyn are:
+
+* 8443 for https, to expose the web-console and REST api.
+* 8081 for http, to expose the web-console and REST api.
+
+Whether to use https rather than http is configurable using the CLI option `--https`; 
+the port to use is configurable using the CLI option `--port <port>`.
+See [CLI](cli.html) documentation for more details.
+
+To enable remote Brooklyn access, ensure these ports are open in the firewall.
+For example, to open port 8443 in iptables, ues the command:
+
+    /sbin/iptables -I INPUT -p TCP --dport 8443 -j ACCEPT
+
+
+### Linux Kernel Entropy
+
+Check that the [linux kernel entropy](increase-entropy.html) is sufficient.


[2/5] incubator-brooklyn git commit: docs: fix install-on-server formatting

Posted by he...@apache.org.
docs: fix install-on-server formatting

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

Branch: refs/heads/master
Commit: 7cb66d87162b2de83f98198daacecdc9ad2997b1
Parents: 2a2f98c
Author: Aled Sage <al...@gmail.com>
Authored: Tue Feb 24 07:06:20 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Feb 24 07:06:20 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/install-on-server.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7cb66d87/docs/guide/ops/install-on-server.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/install-on-server.md b/docs/guide/ops/install-on-server.md
index 67dc6da..6904504 100644
--- a/docs/guide/ops/install-on-server.md
+++ b/docs/guide/ops/install-on-server.md
@@ -49,7 +49,7 @@ Before installing Apache Brooklyn, it is recommented to configure the host as fo
 * check that the [linux kernel entropy](increase-entropy.html) is sufficient
 
 
-## <a id="download"></a>Download Brooklyn
+### <a id="download"></a>Download Brooklyn
 
 Download Brooklyn and obtain a binary build as described on [the download page]({{site.path.website}}/download/).
 
@@ -79,7 +79,7 @@ $ BROOKLYN_DIR="$(pwd)"
 $ export PATH=$PATH:$BROOKLYN_DIR/bin/
 {% endhighlight %}
 
-## <a id="configuring-properties"></a>Configuring brooklyn.properties
+### <a id="configuring-properties"></a>Configuring brooklyn.properties
 Brooklyn deploys applications to Locations. *Locations* can be clouds, machines with fixed IPs or localhost (for testing).
 
 By default Brooklyn loads configuration parameters (including credentials for any cloud accounts) from 
@@ -98,7 +98,7 @@ $ chmod 600 ~/.brooklyn/brooklyn.properties
 
 You may need to edit `~/.brooklyn/brooklyn.properties` to ensure that brooklyn can access cloud locations for application deployment.
 
-## <a id="configuring-catalog"></a>Configuring catalog.xml
+### <a id="configuring-catalog"></a>Configuring catalog.xml
 By default Brooklyn loads the catalog of available application components and services from 
 `~/.brooklyn/catalog.xml`. 
 
@@ -110,7 +110,7 @@ The `catalog.xml` is the application blueprint catalog. The above example file c
 
 You may need to edit `~/.brooklyn/catalog.xml` to update links to any resources for download.
 
-## <a id="confirm"></a>Confirm installation
+### <a id="confirm"></a>Confirm installation
 We can do a quick test drive by launching Brooklyn:
 
 {% highlight bash %}


[3/5] incubator-brooklyn git commit: docs: extract high-availability to its own page

Posted by he...@apache.org.
docs: extract high-availability to its own page

- Previously, it was a sub-section of the “persistence” page

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

Branch: refs/heads/master
Commit: 9debe451fa0e2f8ed05114c93d27adcf32f2d498
Parents: 7cb66d8
Author: Aled Sage <al...@gmail.com>
Authored: Tue Feb 24 07:54:07 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Tue Feb 24 07:54:07 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/high-availability.md | 46 ++++++++++++++++++++++++++++++++
 docs/guide/ops/index.md             |  1 +
 docs/guide/ops/persistence/index.md | 46 --------------------------------
 3 files changed, 47 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9debe451/docs/guide/ops/high-availability.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/high-availability.md b/docs/guide/ops/high-availability.md
new file mode 100644
index 0000000..2a2e512
--- /dev/null
+++ b/docs/guide/ops/high-availability.md
@@ -0,0 +1,46 @@
+---
+title: High Availability
+layout: website-normal
+---
+
+Brooklyn will automatically run in HA mode if multiple Brooklyn instances are started
+pointing at the same persistence store.  One Brooklyn node (e.g. the first one started)
+is elected as HA master:  all *write operations* against Brooklyn entities, such as creating
+an application or invoking an effector, should be directed to the master.
+
+Once one node is running as `MASTER`, other nodes start in either `STANDBY` or `HOT_STANDBY` mode:
+
+* In `STANDBY` mode, a Brooklyn instance will monitor the master and will be a candidate
+  to become `MASTER` should the master fail. Standby nodes do *not* attempt to rebind
+  until they are elected master, so the state of existing entities is not available at
+  the standby node.  However a standby server consumes very little resource until it is
+  promoted.
+  
+* In `HOT_STANDBY` mode, a Brooklyn instance will read and make available the live state of
+  entities.  Thus a hot-standby node is available as a read-only copy.
+  As with the standby node, if a hot-standby node detects that the master fails,
+  it will be a candidate for promotion to master.
+
+To explicitly specify what HA mode a node should be in, the following CLI options are available
+for the parameter `--highAvailability`:
+
+* `disabled`: management node works in isolation; it will not cooperate with any other standby/master nodes in management plane
+* `auto`: will look for other management nodes, and will allocate itself as standby or master based on other nodes' states
+* `master`: will startup as master; if there is already a master then fails immediately
+* `standby`: will start up as lukewarm standby; if there is not already a master then fails immediately
+* `hot_standby`: will start up as hot standby; if there is not already a master then fails immediately
+
+The REST API offers live detection and control of the HA mode,
+including setting priority to control which nodes will be promoted on master failure:
+
+* `/server/ha/state`: Returns the HA state of a management node (GET),
+  or changes the state (POST)
+* `/server/ha/states`: Returns the HA states and detail for all nodes in a management plane
+* `/server/ha/priority`: Returns the HA node priority for MASTER failover (GET),
+  or sets that priority (POST)
+
+Note that when POSTing to a non-master server it is necessary to pass a `Brooklyn-Allow-Non-Master-Access: true` header.
+For example, the following cURL command could be used to change the state of a `STANDBY` node on `localhost:8082` to `HOT_STANDBY`:
+
+    curl -v -X POST -d mode=HOT_STANDBY -H "Brooklyn-Allow-Non-Master-Access: true" http://localhost:8082/v1/server/ha/state
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9debe451/docs/guide/ops/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/index.md b/docs/guide/ops/index.md
index 3e6305a..6cfcb49 100644
--- a/docs/guide/ops/index.md
+++ b/docs/guide/ops/index.md
@@ -7,6 +7,7 @@ children:
 - brooklyn_properties.md
 - locations/
 - persistence/
+- high-availability.md
 - catalog/
 - logging.md
 ---

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9debe451/docs/guide/ops/persistence/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/persistence/index.md b/docs/guide/ops/persistence/index.md
index cbb3112..26696aa 100644
--- a/docs/guide/ops/persistence/index.md
+++ b/docs/guide/ops/persistence/index.md
@@ -6,7 +6,6 @@ children:
 - { section: File-based Persistence }
 - { section: Object Store Persistence }
 - { section: Rebinding to State }
-- { section: High Availability }
 - { section: Writing Persistable Code }
 ---
 
@@ -202,51 +201,6 @@ instance. After fixing the entities, locations and/or policies, the Brooklyn ins
 new persisted state can be copied and used to fix the production instance.
 
 
-High Availability
------------------
-
-Brooklyn will automatically run in HA mode if multiple Brooklyn instances are started
-pointing at the same persistence store.  One Brooklyn node (e.g. the first one started)
-is elected as HA master:  all *write operations* against Brooklyn entities, such as creating
-an application or invoking an effector, should be directed to the master.
-
-Once one node is running as `MASTER`, other nodes start in either `STANDBY` or `HOT_STANDBY` mode:
-
-* In `STANDBY` mode, a Brooklyn instance will monitor the master and will be a candidate
-  to become `MASTER` should the master fail. Standby nodes do *not* attempt to rebind
-  until they are elected master, so the state of existing entities is not available at
-  the standby node.  However a standby server consumes very little resource until it is
-  promoted.
-  
-* In `HOT_STANDBY` mode, a Brooklyn instance will read and make available the live state of
-  entities.  Thus a hot-standby node is available as a read-only copy.
-  As with the standby node, if a hot-standby node detects that the master fails,
-  it will be a candidate for promotion to master.
-
-To explicitly specify what HA mode a node should be in, the following CLI options are available
-for the parameter `--highAvailability`:
-
-* `disabled`: management node works in isolation; it will not cooperate with any other standby/master nodes in management plane
-* `auto`: will look for other management nodes, and will allocate itself as standby or master based on other nodes' states
-* `master`: will startup as master; if there is already a master then fails immediately
-* `standby`: will start up as lukewarm standby; if there is not already a master then fails immediately
-* `hot_standby`: will start up as hot standby; if there is not already a master then fails immediately
-
-The REST API offers live detection and control of the HA mode,
-including setting priority to control which nodes will be promoted on master failure:
-
-* `/server/ha/state`: Returns the HA state of a management node (GET),
-  or changes the state (POST)
-* `/server/ha/states`: Returns the HA states and detail for all nodes in a management plane
-* `/server/ha/priority`: Returns the HA node priority for MASTER failover (GET),
-  or sets that priority (POST)
-
-Note that when POSTing to a non-master server it is necessary to pass a `Brooklyn-Allow-Non-Master-Access: true` header.
-For example, the following cURL command could be used to change the state of a `STANDBY` node on `localhost:8082` to `HOT_STANDBY`:
-
-    curl -v -X POST -d mode=HOT_STANDBY -H "Brooklyn-Allow-Non-Master-Access: true" http://localhost:8082/v1/server/ha/state
-
-
 Writing Persistable Code
 ------------------------
 The most common problem on rebind is that custom entity code has not been written in a way