Playbook
Playbooks are configurable automated processes that can be used to perform a variety of actions for a component or a config item. They are defined using a YAML configuration.
PlaybookSpec
Field | Description | Scheme | Required |
---|---|---|---|
description |
A short description | string |
true |
on |
Specify events to automatically trigger the Playbook. . | []PlaybookEventDetail |
false |
checks |
Specify selectors for checks that can be run on the Playbook. | []ResourceFilter |
false |
configs |
Specify selectors for config items that can be run on the Playbook. | []ResourceFilter |
false |
components |
Specify selectors for component items that can be run on the Playbook. | []ResourceFilter |
false |
parameters |
Define a set of labeled parameters for the Playbook. | Properties |
false |
actions |
Specify the set of actions to run. | []Action |
true |
approval |
Specify who can approve runs on this playbook. | Approval |
false |
ResourceFilter
Filters can define what resources (config or a component) are permitted be run on the Playbook.
Field | Description | Scheme | Required |
---|---|---|---|
type |
Specify type of component. | string |
false |
tags |
Specify tags of component. | map[string]string |
false |
Parameter
Playbook parameter defines a parameter that a playbook needs to run.
Field | Description | Scheme | Required |
---|---|---|---|
name |
Specify name of parameter. | string |
true |
label |
Specify label of parameter. | string |
true |
Examples
Scaling EC2 instance
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: scale-deployment
spec:
description: Scale deployment
configs:
- type: Kubernetes::Deployment
tags:
environment: staging
parameters:
- name: replicas
label: The new desired number of replicas.
approval:
type: any
approvers:
people:
- admin@local
teams:
- DevOps
actions:
- name: 'scale deployment'
exec:
script: kubectl scale --replicas={{.params.replicas}} --namespace={{.config.tags.namespace}} deployment {{.config.name}}
Restart unhealthy database
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: restart-unhealthy-database
spec:
description: Restart when a database becomes unhealthy
on:
component:
- event: unhealthy
filter: component.type == 'database'
labels:
industry: e-commerce
actions:
- name: 'Restart kubernetes deployment'
exec:
script: kubectl rollout restart deployment {{.component.name}}
Restart pod when check fails for more than 10 times in the last hour
apiVersion: mission-control.flanksource.com/v1
kind: Playbook
metadata:
name: stop-pod-of-failing-check
spec:
description: stop pod for failing checks
on:
canary:
- event: failed
filter: check_summary.failed > 10
labels:
alertname: KubePodCrashLoopingcontainer
actions:
- name: 'Stop pod'
exec:
script: kubectl delete pod {{index .check.labels "pod"}}