bbr
scripts can be run as bpm
errands. This document outlines the processes
for transitioning a bbr
script to use bpm
.
In order for bpm
to successfully call bbr
scripts, a bpm
configuration
file will need to be created in the canonical location:
/var/vcap/jobs/<bbr-job>/config/bpm.yml
. This can be done by adding a template
in the bbr
job definition with the following structure for each of the bbr
scripts:
# jobs/<bbr-job>/templates/bpm.yml.erb
processes:
- name: <script>
executable: /var/vcap/jobs/<bbr-job>/bin/bbr/<script>
args:
- run
...
Also, the following will need to be added to the list of templates in the job's
spec
file:
# jobs/<bbr-job>/spec
templates:
bpm.yml.erb: config/bpm.yml
In order to make use of the database-backup-restorer
, the following
unsafe unrestricted_volumes
mount must be added to the bpm.yml.erb
for each
script that needs to use the SDK:
processes:
- name: <script>
executable: /var/vcap/jobs/<bbr-job>/bin/bbr/<script>
args:
- run
unsafe:
unrestricted_volumes:
- path: /var/vcap/jobs/database-backup-restorer/bin
allow_executions: true
...
This will allow the scripts to access the SDK even when running in BPM containers.
Move the contents of the bbr
script into a bash function which will be called
if the script is executed with the argument run
or invoked without bpm
. Then
change the script to call bpm run <bbr-job> -p <script>
if called and bpm
is
enabled.
As an explicit example, here is a backup script which uses bpm
#!/usr/bin/env bash
set -eu
<% if p('enabled') %>
backup() {
<code to be executed when backup script called>
}
case ${1:-} in
run)
backup
;;
*)
<% if p("bpm.enabled") %>
/var/vcap/jobs/bpm/bin/bpm run <bbr-job> \
-p backup \
-v "${BBR_ARTIFACT_DIRECTORY%/}:writable" \
-e BBR_ARTIFACT_DIRECTORY="$BBR_ARTIFACT_DIRECTORY"
<% else %>
backup
<% end %>
;;
esac
<% end %>