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"}}