Complete Deployment Manifest¶
In the preceding sections of the Ultimate Guide to BOSH we have slowly introduced all the concepts of deploying systems with a BOSH environment, and all the sections of a BOSH deployment manifest.
We can now review the entire working deployment manifest for our zookeeper
example from https://github.com/cppforlife/zookeeper-release. All references to this file in this section will be from a parent folder into which this repository has been cloned:
git clone https://github.com/cppforlife/zookeeper-release
cat zookeeper-release/manifests/zookeeper.yml
---
name: zookeeper
releases:
- name: zookeeper
version: 0.0.7
url: git+https://github.com/cppforlife/zookeeper-release
stemcells:
- alias: default
os: ubuntu-trusty
version: latest
update:
canaries: 2
max_in_flight: 1
canary_watch_time: 5000-60000
update_watch_time: 5000-60000
instance_groups:
- name: zookeeper
azs: [z1, z2, z3]
instances: 5
jobs:
- name: zookeeper
release: zookeeper
properties: {}
- name: status
release: zookeeper
properties: {}
vm_type: default
stemcell: default
persistent_disk: 10240
networks:
- name: default
- name: smoke-tests
azs: [z1]
lifecycle: errand
instances: 1
jobs:
- name: smoke-tests
release: zookeeper
properties: {}
vm_type: default
stemcell: default
networks:
- name: default
Use of Deployment Manifest¶
The deployment manifest is used by bosh deploy
command to instruct your BOSH environment to create or update a deployment.
You can provide a full-formed manifest:
bosh deploy zookeeper-release/manifests/zookeeper.yml
Alternately, you can amend a base manifest with -o
Operator files and -v
Variables. For example, to modify the deployment name of the uploaded deployment manifest to use the current $BOSH_DEPLOYMENT
value to create an Operator file:
export BOSH_DEPLOYMENT=zookeeper-demo
cat > change-deployment-name.yml <<YAML
---
- type: replace
path: /name
value: $BOSH_DEPLOYMENT
YAML
bosh deploy zookeeper-release/manifests/zookeeper.yml \
-o change-deployment-name.yml
Name Attribute¶
The deployment name
attribute is to confirm that the bosh deploy
command is updating the correct deployment. The name
attribute must match the BOSH_DEPLOYMENT
variable or the bosh deploy -d name
value.
If our name
attribute is set:
name: zookeeper
Then the bosh deploy
command must be executed in one of two ways.
-
Using
BOSH_DEPLOYMENT
environment variable:export BOSH_DEPLOYMENT=zookeeper bosh deploy zookeeper-release/manifests/zookeeper.yml
This is the method used by default in all examples within the Ultimate Guide to BOSH. It makes the
bosh
CLI examples simpler. -
With explicit
-d
flag option placed anywhere in the command:bosh -d zookeeper deploy zookeeper-release/manifests/zookeeper.yml
Commonly, BOSH deployment manifests provided by upstream projects will include a default name
; typically the same name as the project. If you want to modify the deployment name, then look to the example at the top of this chapter where we create change-deployment-name.yml
.
Once a BOSH deployment has been created successfully, many other bosh
commands will be available to inspect or interact with your running deployment. They will similarly use these two methods to target a BOSH deployment by name.
Releases Attribute¶
releases:
- name: zookeeper
version: 0.0.7
url: git+https://github.com/cppforlife/zookeeper-release
Stemcells¶
stemcells:
- alias: default
os: ubuntu-trusty
version: latest