runbook.md is a toolchain used for improving the quality of runbooks across the business, and ensuring consistency of the information contained within runbooks with biz-ops – the knowledge base which models our business operations.
Talk to us in #reliability-eng on Slack if you have any questions / suggestions.
All systems which integrate with Change API benefit from automated runbook.md ingestion and synchronisation with biz-ops, on every release that contains changes to a runbook.md file.
Please add Change API to your deployment pipeline and release your code.
A successful journey will see any runbook.md file changes automatically applied in Biz Ops to the relevant system(s).
The runbook.md github app validates a repository's RUNBOOK.MD files - Markdown files following the /runbook.md$/i naming convention - against our organisation-wide standard, and offers suggestions for improvement.
For manual release processes or multi-system repositories, where integrating with Change API is not possible, the GitHub app supports custom configuration (example here) for updating system information in Biz-Ops.
For repositories containing source code for more than one system, please adhere to a system-code_runbook.md naming convention (where system-code is the systemCode as written in Biz-Ops) or use custom config to map each runbook to a system.
This utility allows manual upload of a RUNBOOK.md file for validation and operability scoring. Optionally, the tool can be used to populate associated critical fields in Biz Ops based on the content of a valid runbook.
See an example of the format/content of a RUNBOOK.md file here.
- Ensure Docker is installed and running
- Ensure AWS CLI tooling is installed https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html
Using GNU Make as a task runner:
make installinstalls dependencies and add linting config filesmake envpopulates an.envfile with the appropriate environment variables from Vaultmake runruns the app which you can then visit at http://localhost:3000/runbook.mdmake testruns testsmake verifyruns linter checks (with eslint, using prettier)
The task make run-local-message-stream sets up and starts an offline emulation of AWS' Kinesis. You can put records onto the resulting stream – change-request-api-test-enriched-stream – using the following AWS CLI command.
aws kinesis --endpoint-url http://localhost:4567 \
put-record --stream-name change-request-api-test-enriched-stream \
--partition-key “MyFirstMessage” \
--data [stringifiedJSONreleaseLog](https://github.com/Financial-Times/runbook.md/blob/master/docs/change-api-example-message.json)The following error can occur when trying try to execute make run:
{
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'local.in.ft.com'
}In this case, check your /etc/hosts file and add the entry: 127.0.0.1 local.in.ft.com.
The number is the priority. It will fallback if the value is undefined.
Codefrom runbook.mdsystemCodesFrom .github/runbooks.yml config (exapmle)- From file name
${system-code}_runbook.md systemCodeFrom Change API message [Change API route only]


