You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by iu...@apache.org on 2021/08/31 16:08:42 UTC

[brooklyn-docs] branch master updated: major tidy, use canonical approach to embedded blueprints

This is an automated email from the ASF dual-hosted git repository.

iuliana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-docs.git


The following commit(s) were added to refs/heads/master by this push:
     new 64c853e  major tidy, use canonical approach to embedded blueprints
     new a8231bc  Merge pull request #329 from cloudsoft/master
64c853e is described below

commit 64c853e443ee873dd82bc4add9f14b4ecb46f443
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Tue Aug 31 16:51:47 2021 +0100

    major tidy, use canonical approach to embedded blueprints
---
 _plugins/site_structure.rb                         |  2 +-
 guide/blueprints/configuring-vms.md                |  2 +-
 guide/blueprints/entity-configuration.md           | 20 +++--
 .../{simple-vm.yaml => simple-vm.camp.yaml}        |  0
 guide/blueprints/policies/available_policies.md    |  1 +
 guide/locations/_azure-ARM.md                      | 44 +---------
 guide/locations/_clouds.md                         | 11 +--
 guide/locations/_ibm-softlayer.md                  | 13 +--
 .../_provisioned-machine-requirements.camp.md      | 12 +++
 guide/locations/index.md                           | 15 ----
 .../locations/provisioned-machine-requirements.md  | 13 +--
 .../_location-azure-sample-windows.camp.md         | 41 ++++++++++
 .../snippets/_location-ibm-softlayer.camp.md       | 12 +++
 .../_location-with-templateoptions.camp.md         | 10 +++
 guide/start/_blueprints.camp.md                    |  6 ++
 guide/start/_blueprints.camp.yaml                  |  6 ++
 guide/start/_policies.camp.md                      | 15 ++--
 .../_adding_to_catalog.langs.md                    |  3 +
 guide/start/blueprint_locations/_byon.camp.md      | 14 ++++
 guide/start/blueprint_locations/_footer.camp.md    |  3 +
 guide/start/blueprint_locations/_header.camp.md    |  3 +
 guide/start/blueprint_locations/_index.md          | 57 +++++++++++++
 guide/start/blueprint_locations/_jclouds.camp.md   | 10 +++
 guide/start/blueprint_locations/_vagrant.camp.md   | 13 +++
 guide/start/blueprints.md                          | 93 ++--------------------
 .../{mycluster.yaml => mycluster.camp.yaml}        | 18 +++--
 guide/start/managing.md                            |  5 +-
 27 files changed, 246 insertions(+), 196 deletions(-)

diff --git a/_plugins/site_structure.rb b/_plugins/site_structure.rb
index 27a2261..339677f 100644
--- a/_plugins/site_structure.rb
+++ b/_plugins/site_structure.rb
@@ -368,7 +368,7 @@ module SiteStructure
                 sub['menu'].compact!
               end
             end
-            data['menu'] << sub
+            data['menu'] << sub unless @config['exclude'] && @config['exclude'].any? { |ex| File.fnmatch?(ex, sub['url']) }
             puts "sub is #{sub['url']}" if @@verbose
           else
             raise "could not find #{child} in #{page.path}"
diff --git a/guide/blueprints/configuring-vms.md b/guide/blueprints/configuring-vms.md
index d98e50b..13468e5 100644
--- a/guide/blueprints/configuring-vms.md
+++ b/guide/blueprints/configuring-vms.md
@@ -8,7 +8,7 @@ categories: [use, guide, defining-applications]
 Another simple blueprint will just create a VM which you can use, without any software installed upon it:
 
 {% highlight yaml %}
-{% read example_yaml/simple-vm.yaml %}
+{% read example_yaml/simple-vm.camp.yaml %}
 {% endhighlight %}
 
 
diff --git a/guide/blueprints/entity-configuration.md b/guide/blueprints/entity-configuration.md
index b163c99..d825b7a 100644
--- a/guide/blueprints/entity-configuration.md
+++ b/guide/blueprints/entity-configuration.md
@@ -44,13 +44,17 @@ blueprint (i.e. inside the `brooklyn.config` block).
 It can also explicitly declare config keys, using the `brooklyn.parameters` block. The example 
 below illustrates the principle:
 
-!CODEFILE "example_yaml/entity-config-catalog.yaml"
+{% highlight yaml %}
+{% read example_yaml/entity-config-catalog.yaml %}
+{% endhighlight yaml %}
 
 Once added to the catalog, it can be used with the simple blueprint below (substituting the location
 of your choice). Because no configuration has been overridden, this will use the default value
 for `custom.message`, and will use the given values for `launch.command` and `checkRunning.command`:
 
-!CODEFILE "example_yaml/entity-config-app.yaml"
+{% highlight yaml %}
+{% read example_yaml/entity-config-app.yaml %}
+{% endhighlight yaml %}
 
 For details of how to write and add catalog items, see [Catalog]({{book.path.docs}}/blueprints/catalog/index.md), 
 and for a complete reference on the syntax of `brooklyn.parameters` see that section of the [YAML Reference]({{book.path.docs}}/blueprints/yaml-reference.md). 
@@ -74,11 +78,15 @@ can be any of:
 
 This is illustrated in the example below:
 
-!CODEFILE "example_yaml/entity-constraint-catalog.yaml"
+{% highlight yaml %}
+{% read example_yaml/entity-constraint-catalog.yaml %}
+{% endhighlight yaml %}
 
 An example usage of this toy example, once added to the catalog, is shown below:
 
-!CODEFILE "example_yaml/entity-constraint-app.yaml"
+{% highlight yaml %}
+{% read example_yaml/entity-constraint-app.yaml %}
+{% endhighlight yaml %}
 
 
 ### Complex Types in Configuration
@@ -125,7 +133,9 @@ consider the `entity-config-example` added to the catalog in the section
 [Configuration in a Catalog Item](#configuration-in-a-catalog-item).
 We can override these values. If not overridden, then the existing values from the super-type will be used:
 
-!CODEFILE "example_yaml/entity-config-override-app.yaml"
+{% highlight yaml %}
+{% read example_yaml/entity-config-override-app.yaml %}
+{% endhighlight yaml %}
 
 
 In this example, the `custom.message` overrides the default defined on the config key.
diff --git a/guide/blueprints/example_yaml/simple-vm.yaml b/guide/blueprints/example_yaml/simple-vm.camp.yaml
similarity index 100%
rename from guide/blueprints/example_yaml/simple-vm.yaml
rename to guide/blueprints/example_yaml/simple-vm.camp.yaml
diff --git a/guide/blueprints/policies/available_policies.md b/guide/blueprints/policies/available_policies.md
index 36b5129..72d7e45 100644
--- a/guide/blueprints/policies/available_policies.md
+++ b/guide/blueprints/policies/available_policies.md
@@ -183,6 +183,7 @@ The CreateUserPolicy Attaches to an Entity and monitors for the addition of a lo
 This is similar to the CreateUserPolicy.  It will monitor the addition of WinRmMachineLocation to an entity and then create a sensor advertising the administrative user's credentials.
 
 
+
 Writing a Policy
 ----------------
 
diff --git a/guide/locations/_azure-ARM.md b/guide/locations/_azure-ARM.md
index c213ae0..5edd8ba 100644
--- a/guide/locations/_azure-ARM.md
+++ b/guide/locations/_azure-ARM.md
@@ -221,47 +221,9 @@ stored in protected .PFX file. It needs to be prepared upfront or created with t
 
 Placeholders surrounded with `<>` have to be replcaced with their respective values.
 
-{% highlight yaml %}
-brooklyn.catalog:
-  id: my-azure-arm-location
-  name: "My Azure ARM location"
-  itemType: location
-  item:
-    type: jclouds:azurecompute-arm
-    brooklyn.config:
-      identity: <Application-id>
-      credential: <Password>
-      endpoint: https://management.azure.com/subscriptions/<Subscription-id>
-      oauth.endpoint: https://login.microsoftonline.com/<Tenant-id>/oauth2/token
-      jclouds.azurecompute.arm.publishers: MicrosoftWindowsServer
-      jclouds.azurecompute.operation.timeout: 120000
-
-      winrm.useHttps: true
-      osFamily: windows
-      imageId: <Azure_location>/MicrosoftWindowsServer/WindowsServer/2012-R2-Datacenter
-      region: <Azure_location>
-      vmNameMaxLength: 15
-      useJcloudsSshInit: false
-      destroyOnFailure: false
-
-      templateOptions:
-        overrideLoginUser: brooklyn
-        overrideLoginPassword: "secretPass1!"
-        secrets:
-        - sourceVault:
-            id: "/subscriptions/<Subscription-id>/resourceGroups/<ResourceGroup>/providers/Microsoft.KeyVault/vaults/<KeyVault-name>"
-          vaultCertificates:
-          - certificateUrl: "<KeyVault-uri>"
-            certificateStore: My
-        windowsConfiguration:
-          provisionVMAgent: true
-          winRM:
-            listeners:
-            - protocol: https
-              certificateUrl: "<KeyVault-uri>"
-          additionalUnattendContent: null
-          enableAutomaticUpdates: true
-{% endhighlight %}
+```yaml
+{% read snippets/_location-azure-sample-windows.camp.md%}
+```
 
 #### Known issues
 There are currently two known issues with Azure ARM:
diff --git a/guide/locations/_clouds.md b/guide/locations/_clouds.md
index 2376cf3..4dbe888 100644
--- a/guide/locations/_clouds.md
+++ b/guide/locations/_clouds.md
@@ -249,14 +249,9 @@ value of the key should be an array, containing the argument for each parameter.
 
 For example, here is a complete blueprint that sets some AWS EC2 specific options:
 
-    location: AWS_eu-west-1
-    services:
-    - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
-      provisioning.properties:
-        templateOptions:
-          subnetId: subnet-041c8373
-          mapNewVolumeToDeviceName: ["/dev/sda1", 100, true]
-          securityGroupIds: ['sg-4db68928']
+```yaml
+{% read snippets/_location-with-templateoptions.camp.md%}
+```
 
 Here you can see that we set three template options:
 
diff --git a/guide/locations/_ibm-softlayer.md b/guide/locations/_ibm-softlayer.md
index 2e336f3..464cb51 100644
--- a/guide/locations/_ibm-softlayer.md
+++ b/guide/locations/_ibm-softlayer.md
@@ -89,16 +89,9 @@ the same scope identifier.
 It is also possible with many blueprints to specify this as one of the
 `provisioning.properties` on an *application*:
 
-    services:
-    - type: org.apache.brooklyn.entity.stock.BasicApplication
-      id: same-vlan-application
-      brooklyn.config:
-        provisioning.properties:
-          customizers:
-          - $brooklyn:object:
-              type: org.apache.brooklyn.location.jclouds.softlayer.SoftLayerSameVlanLocationCustomizer
-        softlayer.vlan.scopeUid: "my-custom-scope"
-        softlayer.vlan.timeout: 10m
+```yaml
+{% read snippets/_location-with-templateoptions.camp.md%}
+```
 
 If you are writing an entity in Java, you can also use the helper
 method `forScope(String)` to create the customizer. Configure the
diff --git a/guide/locations/_provisioned-machine-requirements.camp.md b/guide/locations/_provisioned-machine-requirements.camp.md
new file mode 100644
index 0000000..3298d74
--- /dev/null
+++ b/guide/locations/_provisioned-machine-requirements.camp.md
@@ -0,0 +1,12 @@
+    location:
+      aws-ec2:us-east-1:
+        identity: XXXXXXXX
+        credential: XXXXXXXX
+        waitForSshable: false
+        pollForFirstReachableAddress: false
+    services:
+    - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
+      brooklyn.config:
+        onbox.base.dir.skipResolution: true
+        sshMonitoring.enabled: false
+
diff --git a/guide/locations/index.md b/guide/locations/index.md
index 5af58be..4abe7c8 100644
--- a/guide/locations/index.md
+++ b/guide/locations/index.md
@@ -176,18 +176,3 @@ Try executing:
 
     echo date > /tmp/brooklyn-test.sh && chmod +x /tmp/brooklyn-test.sh && /tmp/brooklyn-test.sh && rm /tmp/brooklyn-test.sh
 
-{% include_relative _clouds.md %}
-{% include_relative _AWS.md %}
-{% include_relative _azure-ARM.md %}
-{% include_relative _azure-classic.md %}
-{% include_relative _cloudstack.md %}
-{% include_relative _GCE.md %}
-{% include_relative _ibm-softlayer.md %}
-{% include_relative _openstack.md %}
-{% include_relative _inheritance-and-named-locations.md %}
-{% include_relative _byon.md %}
-{% include_relative _ssh-keys.md %}
-{% include_relative _localhost.md %}
-{% include_relative _location-customizers.md %}
-{% include_relative _location-customizer-security-groups.md %}
-{% include_relative _special-locations.md %}
diff --git a/guide/locations/provisioned-machine-requirements.md b/guide/locations/provisioned-machine-requirements.md
index ea48b74..5399beb 100644
--- a/guide/locations/provisioned-machine-requirements.md
+++ b/guide/locations/provisioned-machine-requirements.md
@@ -23,18 +23,7 @@ the software.
 
 An example of disabling all ssh'ing is shown below:
 
-    location:
-      aws-ec2:us-east-1:
-        identity: XXXXXXXX
-        credential: XXXXXXXX
-        waitForSshable: false
-        pollForFirstReachableAddress: false
-    services:
-    - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
-      brooklyn.config:
-        onbox.base.dir.skipResolution: true
-        sshMonitoring.enabled: false
-
+{% read _provisioned-machine-requirements.camp.md %}
 
 ### Parsing SSH stdout: No Extra Lines
 
diff --git a/guide/locations/snippets/_location-azure-sample-windows.camp.md b/guide/locations/snippets/_location-azure-sample-windows.camp.md
new file mode 100644
index 0000000..a4fded0
--- /dev/null
+++ b/guide/locations/snippets/_location-azure-sample-windows.camp.md
@@ -0,0 +1,41 @@
+```yaml
+brooklyn.catalog:
+  id: my-azure-arm-location
+  name: "My Azure ARM location"
+  itemType: location
+  item:
+    type: jclouds:azurecompute-arm
+    brooklyn.config:
+      identity: <Application-id>
+      credential: <Password>
+      endpoint: https://management.azure.com/subscriptions/<Subscription-id>
+      oauth.endpoint: https://login.microsoftonline.com/<Tenant-id>/oauth2/token
+      jclouds.azurecompute.arm.publishers: MicrosoftWindowsServer
+      jclouds.azurecompute.operation.timeout: 120000
+
+      winrm.useHttps: true
+      osFamily: windows
+      imageId: <Azure_location>/MicrosoftWindowsServer/WindowsServer/2012-R2-Datacenter
+      region: <Azure_location>
+      vmNameMaxLength: 15
+      useJcloudsSshInit: false
+      destroyOnFailure: false
+
+      templateOptions:
+        overrideLoginUser: brooklyn
+        overrideLoginPassword: "secretPass1!"
+        secrets:
+          - sourceVault:
+              id: "/subscriptions/<Subscription-id>/resourceGroups/<ResourceGroup>/providers/Microsoft.KeyVault/vaults/<KeyVault-name>"
+            vaultCertificates:
+              - certificateUrl: "<KeyVault-uri>"
+                certificateStore: My
+        windowsConfiguration:
+          provisionVMAgent: true
+          winRM:
+            listeners:
+              - protocol: https
+                certificateUrl: "<KeyVault-uri>"
+          additionalUnattendContent: null
+          enableAutomaticUpdates: true
+```
diff --git a/guide/locations/snippets/_location-ibm-softlayer.camp.md b/guide/locations/snippets/_location-ibm-softlayer.camp.md
new file mode 100644
index 0000000..c0687e5
--- /dev/null
+++ b/guide/locations/snippets/_location-ibm-softlayer.camp.md
@@ -0,0 +1,12 @@
+```yaml
+services:
+  - type: org.apache.brooklyn.entity.stock.BasicApplication
+    id: same-vlan-application
+    brooklyn.config:
+      provisioning.properties:
+        customizers:
+          - $brooklyn:object:
+              type: org.apache.brooklyn.location.jclouds.softlayer.SoftLayerSameVlanLocationCustomizer
+      softlayer.vlan.scopeUid: "my-custom-scope"
+      softlayer.vlan.timeout: 10m
+```
diff --git a/guide/locations/snippets/_location-with-templateoptions.camp.md b/guide/locations/snippets/_location-with-templateoptions.camp.md
new file mode 100644
index 0000000..fd5b25e
--- /dev/null
+++ b/guide/locations/snippets/_location-with-templateoptions.camp.md
@@ -0,0 +1,10 @@
+```yaml
+    location: AWS_eu-west-1
+    services:
+    - type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
+      provisioning.properties:
+        templateOptions:
+          subnetId: subnet-041c8373
+          mapNewVolumeToDeviceName: ["/dev/sda1", 100, true]
+          securityGroupIds: ['sg-4db68928']
+```
diff --git a/guide/start/_blueprints.camp.md b/guide/start/_blueprints.camp.md
new file mode 100644
index 0000000..4f88cf9
--- /dev/null
+++ b/guide/start/_blueprints.camp.md
@@ -0,0 +1,6 @@
+Copy the blueprint below into a text file `myapp.yaml` in your workspace.
+(Note, to copy the file you can hover your mouse over the right side of the text box below to get a Javascript "copy" button.)
+
+{% highlight yaml %}
+{% include_relative _blueprints.camp.yaml %}
+{% endhighlight %}
diff --git a/guide/start/_blueprints.camp.yaml b/guide/start/_blueprints.camp.yaml
new file mode 100644
index 0000000..e07bbe7
--- /dev/null
+++ b/guide/start/_blueprints.camp.yaml
@@ -0,0 +1,6 @@
+name: Tomcat
+version: 1.0.0-SNAPSHOT
+services:
+- type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
+  name: tomcat-server
+location: # replace this line with one of the location definitions below
diff --git a/guide/start/_policies.camp.md b/guide/start/_policies.camp.md
index ce3d4b6..3deabd4 100644
--- a/guide/start/_policies.camp.md
+++ b/guide/start/_policies.camp.md
@@ -1,5 +1,5 @@
-Below is the annotated blueprint. [Download the blueprint](example_yaml/mycluster.yaml) into a
-text file, `mycluster.yaml`, in your workspace. *Before* you create an application with it,
+Below is the annotated blueprint. [Download the blueprint](example_yaml/mycluster.camp.yaml) into a
+text file, `mycluster.camp.yaml`, in your workspace. *Before* you create an application with it,
 review and/or change the the location where the application will be deployed.
 
 You will need four machines for this example: one for the load-balancer (nginx), and three for the
@@ -69,7 +69,7 @@ services:
   {% endhighlight %}
 </div>
 
-<!-- WARNING: if modifying either mycluster.yaml or the yaml below, be sure to keep them both in-sync -->
+<!-- WARNING: if modifying either mycluster.camp.yaml or the yaml below, be sure to keep them both in-sync -->
 
 <div class="jumobotron annotated_blueprint" markdown="1">
   <div class="code_scroller">
@@ -89,7 +89,12 @@ services:
             Start by giving it a name, optionally adding a version and other metadata.
         </p></div>
       </div><div class="connector"><div>&nbsp;</div></div></div></div>
-<div><span class="ann_highlight">name: Tomcat Cluster</span>
+<div>
+<span class="ann_highlight">
+id: tomcatCluster
+name: Tomcat Cluster
+version: 0.1.0-SNAPSHOT
+</span>
 </div></div>
 
 <div class="block">
@@ -278,7 +283,7 @@ in the cluster. In our example, each is a Tomcat server with a WAR deployed at t
 Deploy the app:
 
 {% highlight bash %}
-br deploy mycluster.yaml
+br deploy mycluster.camp.yaml
 {% endhighlight %}
 
 <pre>
diff --git a/guide/start/blueprint_locations/_adding_to_catalog.langs.md b/guide/start/blueprint_locations/_adding_to_catalog.langs.md
new file mode 100644
index 0000000..8ccf794
--- /dev/null
+++ b/guide/start/blueprint_locations/_adding_to_catalog.langs.md
@@ -0,0 +1,3 @@
+
+<!-- it is not necessary to add to catalog for CAMP;
+     this page is a placeholder for other languages which do require a step here -->
\ No newline at end of file
diff --git a/guide/start/blueprint_locations/_byon.camp.md b/guide/start/blueprint_locations/_byon.camp.md
new file mode 100644
index 0000000..04198ce
--- /dev/null
+++ b/guide/start/blueprint_locations/_byon.camp.md
@@ -0,0 +1,14 @@
+
+Replace the hosts, user and password in the example below with your own server details, then replace the location in your `myapp.yaml` with this.
+
+{% highlight yaml %}
+location:
+  byon:
+    user: myuser
+    password: mypassword
+    # or...
+    #privateKeyFile: ~/.ssh/my.pem
+    hosts:
+    - 192.168.0.18
+    - 192.168.0.19
+{% endhighlight %}
diff --git a/guide/start/blueprint_locations/_footer.camp.md b/guide/start/blueprint_locations/_footer.camp.md
new file mode 100644
index 0000000..e316965
--- /dev/null
+++ b/guide/start/blueprint_locations/_footer.camp.md
@@ -0,0 +1,3 @@
+**Note**: For instructions on setting up a variety of locations,
+storing credentials and other configuration separately to the blueprint,
+see __[Locations](/guide/locations)__ in the Operations section of the User Guide.
diff --git a/guide/start/blueprint_locations/_header.camp.md b/guide/start/blueprint_locations/_header.camp.md
new file mode 100644
index 0000000..393c9f3
--- /dev/null
+++ b/guide/start/blueprint_locations/_header.camp.md
@@ -0,0 +1,3 @@
+In order to configure the location in which Apache Brooklyn launches an application, 
+replace the `location:` element in the blueprint above with the definition for your chosen target environment below.
+
diff --git a/guide/start/blueprint_locations/_index.md b/guide/start/blueprint_locations/_index.md
new file mode 100644
index 0000000..6e14786
--- /dev/null
+++ b/guide/start/blueprint_locations/_index.md
@@ -0,0 +1,57 @@
+
+## Locations
+
+Before you can create an application with this configuration,
+you need to specify which "location" to use.
+Locations in Apache Brooklyn are target environments which Brooklyn can use to deploy applications --
+these may be pre-existing servers, virtualization, cloud providers, container environments, or even cloud services.
+
+{% read _header.camp.md %}
+
+Here are some examples of the various location types:
+
+{::options parse_block_html="true" /}
+
+<ul class="nav nav-tabs">
+    <li class="active impl-1-tab"><a data-target="#impl-1, .impl-1-tab" data-toggle="tab" href="#">Vagrant</a></li>
+    <li class="impl-2-tab"><a data-target="#impl-2, .impl-2-tab" data-toggle="tab" href="#">Clouds</a></li>
+    <li class="impl-3-tab"><a data-target="#impl-3, .impl-3-tab" data-toggle="tab" href="#">BYON</a></li>
+</ul>
+
+<div class="tab-content">
+<div id="impl-1" class="tab-pane fade in active">
+
+The Vagrant configuration described in [Running Apache Brooklyn](./running.html) is the recommended way of setting up a Vagrant environment. 
+This configuration comes with four basic servers configured, called `byon1` to `byon4`.
+
+These can be launched by entering the following command into the terminal in the vagrant configuration directory.
+
+{% highlight bash %}
+$ vagrant up byon1 byon2 byon3 byon4
+{% endhighlight %}
+
+{% read _vagrant.camp.md %}
+
+
+</div>
+<div id="impl-2" class="tab-pane fade">
+
+Apache Brooklyn uses [Apache jclouds](http://jclouds.apache.org/){:target="_blank"} to support a range of cloud locations. More information on the range of providers and configurations is available [here](/guide/locations/#clouds){:target="_blank"}.
+
+{% read _jclouds.camp.md %}
+
+
+</div>
+<div id="impl-3" class="tab-pane fade">
+
+The Bring Your Own Nodes (BYON) configuration allows Apache Brooklyn to make use of already available servers. These can be specified by a list of IP addresses with a user and password as shown below. More information including the full range of configuration options is available [here](/guide/locations/#byon){:target="_blank"}.
+
+{% read _byon.camp.md %}
+
+
+</div>
+</div>
+
+---
+
+{% read _footer.camp.md %}
diff --git a/guide/start/blueprint_locations/_jclouds.camp.md b/guide/start/blueprint_locations/_jclouds.camp.md
new file mode 100644
index 0000000..f86a4a6
--- /dev/null
+++ b/guide/start/blueprint_locations/_jclouds.camp.md
@@ -0,0 +1,10 @@
+
+As an example, here is a configuration for [Amazon Web Services (AWS)](http://www.aws.amazon.com){:target="_blank"}. Swap the identity and credential with your AWS account details, then replace the location in your `myapp.yaml` with this.
+
+{% highlight yaml %}
+location:
+  jclouds:aws-ec2:
+    identity: ABCDEFGHIJKLMNOPQRST
+    credential: s3cr3tsq1rr3ls3cr3tsq1rr3ls3cr3tsq1rr3l
+{% endhighlight %}
+
diff --git a/guide/start/blueprint_locations/_vagrant.camp.md b/guide/start/blueprint_locations/_vagrant.camp.md
new file mode 100644
index 0000000..0ea6fad
--- /dev/null
+++ b/guide/start/blueprint_locations/_vagrant.camp.md
@@ -0,0 +1,13 @@
+The location in `myapp.yaml` can now be replaced with the following YAML to launch using these vagrant servers.
+
+{% highlight yaml %}
+location:
+  byon:
+    user: vagrant
+    password: vagrant
+    hosts:
+    - 10.10.10.101
+    - 10.10.10.102
+    - 10.10.10.103
+    - 10.10.10.104
+{% endhighlight %}
diff --git a/guide/start/blueprints.md b/guide/start/blueprints.md
index 2a17651..2cf2343 100644
--- a/guide/start/blueprints.md
+++ b/guide/start/blueprints.md
@@ -9,96 +9,11 @@ Blueprints are descriptors or patterns which describe how Apache Brooklyn should
 
 We'll start by deploying an application with a simple YAML blueprint containing an [Apache Tomcat](https://tomcat.apache.org/){:target="_blank"} server.
 
-Copy the blueprint below into a text file, "myapp.yaml", in your workspace (Note, to copy the file you can
-hover your mouse over the right side of the text box below to get a Javascript "copy" button).
-
-{% highlight yaml %}
-name: Tomcat
-services:
-- type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
-  name: tomcatServer
-location: <your-location-definition-goes-here>
-{% endhighlight %}
-
-
-## Locations
-
-Before you can create an application with this configuration, you need to modify the YAML to specify a location. Locations in Apache Brooklyn are server resources which Brooklyn can use to deploy applications. These locations may be servers or cloud providers which provide access to servers. 
-
-In order to configure the location in which Apache Brooklyn launches an application, replace the ```location:``` element with values for your chosen target environment. Here are some examples of the various location types:
-
-{::options parse_block_html="true" /}
-
-<ul class="nav nav-tabs">
-    <li class="active impl-1-tab"><a data-target="#impl-1, .impl-1-tab" data-toggle="tab" href="#">Vagrant</a></li>
-    <li class="impl-2-tab"><a data-target="#impl-2, .impl-2-tab" data-toggle="tab" href="#">Clouds</a></li>
-    <li class="impl-3-tab"><a data-target="#impl-3, .impl-3-tab" data-toggle="tab" href="#">BYON</a></li>
-</ul>
-
-<div class="tab-content">
-<div id="impl-1" class="tab-pane fade in active">
-
-The Vagrant configuration described in [Running Apache Brooklyn](./running.html), on the previous page is the recommended way of running this tutorial. This configuration comes with four blank vagrant configurations called byon1 to byon4.
-
-These can be launched by entering the following command into the terminal in the vagrant configuration directory.
-
-{% highlight bash %}
- $ vagrant up byon1 byon2 byon3 byon4
-{% endhighlight %}
-
-The location in "myapp.yaml" can now be replaced with the following YAML to launch using these vagrant servers.
-
-{% highlight yaml %}
-location:
-  byon:
-    user: vagrant
-    password: vagrant
-    hosts:
-      - 10.10.10.101
-      - 10.10.10.102
-      - 10.10.10.103
-      - 10.10.10.104
-{% endhighlight %}
-
-</div>
-<div id="impl-2" class="tab-pane fade">
-
-Apache Brooklyn uses [Apcahe jclouds](http://jclouds.apache.org/){:target="_blank"} to support a range of cloud locations. More information on the range of providers and configurations is available [here](/guide/locations/#clouds){:target="_blank"}.
-
-As an example, here is a configuration for [Amazon Web Services (AWS)](http://www.aws.amazon.com){:target="_blank"}. Swap the identity and credential with your AWS account details, then replace the location in your "myapp.yaml" with this.
-
-{% highlight yaml %}
-location:
-  jclouds:aws-ec2:
-    identity: ABCDEFGHIJKLMNOPQRST
-    credential: s3cr3tsq1rr3ls3cr3tsq1rr3ls3cr3tsq1rr3l
-{% endhighlight %}
+{% read _blueprints.camp.md %}
 
-</div>
-<div id="impl-3" class="tab-pane fade">
-
-The Bring Your Own Nodes (BYON) configuration allows Apache Brooklyn to make use of already available servers. These can be specified by a list of IP addresses with a user and password as shown below. More information including the full range of configuration options is available [here](/guide/locations/#byon){:target="_blank"}. 
-
-Replace the hosts, user and password in the example below with your own server details, then replace the location in your "myapp.yaml" with this.
-
-{% highlight yaml %}
-location:
-  byon:
-    user: myuser
-    password: mypassword
-    # or...
-    #privateKeyFile: ~/.ssh/my.pem
-    hosts:
-    - 192.168.0.18
-    - 192.168.0.19
-{% endhighlight %}
 
-</div>
-</div>
+{% read blueprint_locations/_index.md %}
 
----
-
-**Note**: For instructions on setting up a variety of locations or storing credentials/locations in a file on disk rather than in the blueprint, see __[Locations](/guide/locations)__ in the Operations section of the User Guide.
 
 ## Deploying the Application
 
@@ -110,6 +25,8 @@ $ br login http://localhost:8081/
 To secure the Apache Brooklyn instance, you can add a username and password to Brooklyn's properties file, as described in the User Guide [here](/guide/ops/configuration/brooklyn_cfg.html){:target="_blank"}. 
 If this is configured, the login command will require an additional parameter for the userid and will then prompt for a password.
 
+{% read blueprint_locations/_adding_to_catalog.langs.md %}
+
 Now you can create the application with the command below:
 
 {% highlight bash %}
@@ -126,7 +43,7 @@ you can monitor the progress of the application deployment and verify if it was
 
 ## Next
 
-<div class="started-pdf-exclude">
+<div class="started-pdf-exclude" markdown="1">
 
 Having deployed an application, the next step is **[monitoring and managing](managing.html)** it.
 
diff --git a/guide/start/example_yaml/mycluster.yaml b/guide/start/example_yaml/mycluster.camp.yaml
similarity index 93%
rename from guide/start/example_yaml/mycluster.yaml
rename to guide/start/example_yaml/mycluster.camp.yaml
index 98509dd..89da45f 100644
--- a/guide/start/example_yaml/mycluster.yaml
+++ b/guide/start/example_yaml/mycluster.camp.yaml
@@ -1,15 +1,17 @@
+id: tomcatCluster
 name: Tomcat Cluster
+version: 0.1.0-SNAPSHOT
 
 location:
   byon:
     user: vagrant
     password: vagrant
     hosts:
-      - 10.10.10.101
-      - 10.10.10.102
-      - 10.10.10.103
-      - 10.10.10.104
- 
+    - 10.10.10.101
+    - 10.10.10.102
+    - 10.10.10.103
+    - 10.10.10.104
+
 services:
 - type: org.apache.brooklyn.entity.group.DynamicCluster
   name: Cluster
@@ -22,7 +24,7 @@ services:
         name: Tomcat Server
         brooklyn.config:
           wars.root: https://search.maven.org/remotecontent?filepath=org/apache/brooklyn/example/brooklyn-example-hello-world-webapp/0.12.0/brooklyn-example-hello-world-webapp-0.12.0.war # BROOKLYN_VERSION
- 
+
         brooklyn.policies:
         - type: org.apache.brooklyn.policy.ha.ServiceRestarter
           brooklyn.config:
@@ -31,10 +33,10 @@ services:
         - type: org.apache.brooklyn.policy.ha.ServiceFailureDetector
           brooklyn.config:
             entityFailed.stabilizationDelay: 30s
- 
+
   brooklyn.policies:
   - type: org.apache.brooklyn.policy.ha.ServiceReplacer
- 
+
   - type: org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy
     brooklyn.config:
       metric: webapp.reqs.perSec.perNode
diff --git a/guide/start/managing.md b/guide/start/managing.md
index a9e9693..a145fdf 100644
--- a/guide/start/managing.md
+++ b/guide/start/managing.md
@@ -141,7 +141,8 @@ brooklyn.wrapper_app   true
 
 ## Entities
 
-An *Entity* is Apache Brooklyn's representation of a software package or service which it can control or interact with. All of the entities Apache Brooklyn can use are listed in the __[Brooklyn Catalog](/website/learnmore/catalog/)__. 
+An *Entity* is Apache Brooklyn's representation of a software package or service which it can control or interact with. 
+Some of the entities already available for Apache Brooklyn are listed in the [Brooklyn Catalog](/website/learnmore/catalog/).
 
 To list the entities of the application you can use the `entity` or `ent` command:
 
@@ -491,4 +492,4 @@ runs the ```config``` command with application scope of ```Tomcat``` and entity
 ## Next
 
 We will look next at a slightly more complex example, which will illustrate the capabilities of Brooklyn's
-**[policies](policies.html)** mechanism, and how to configure dependencies between application entities.
\ No newline at end of file
+**[policies](policies.html)** mechanism, and how to configure dependencies between application entities.