We have created a few pre-seeded sample playbooks for all users to execute and visualize the benefits of Epiphani playbooks. Users can view and execute these playbooks via the homepage or by navigating to the "Playbooks Editor" page.
To derive benefits of Epiphani Playbooks out-of-the-box, we have pre-seeded the following Sample Playbooks that automate some of the most frequent developer tasks.
You can access these playbooks directly from Playbook Editor's left side panel as shown below:
OR You can access Sample Playbooks from "Recommended For You" section of the "Playbook Home" Page:
Here is the list of pre-seeded Sample Playbooks available in Epiphani for users to try and see.
Name | Description | Purpose |
Create a War room | Creates a Github issue, zoom meeting, PagerDuty incident, slack channel and sends notification on slack channel. | This can be used to create a war room when a incident is reported. |
Health Check | Performs Cross service HealthCheck: Splunk and EC2 instances and notifies on slack. | Can be run periodically or on-demand to monitor status of various services. |
Start Dev resources | Starts AWS EC2 dev VMs. | A developer can use it to start all its dev resources in the cloud every morning at the start of work day. |
Shutdown Dev resources | Stops AWS EC2 dev VMs. | A developer can use it to stop all its dev resources in the cloud every evening at the end of work day. |
Create Multicloud | Create a MultiCloud Network between AWS & GCP | Creating complex multi-cloud network easily. Configure everything once at a single place and keep creating multiple times with just a click |
Delete Multicloud | Delete a MultiCloud Network between AWS & GCP | Deletes a multi-cloud network. |
Incident Commander | Alert team, perform health check and setup war room | Can perform typical duties of an incident commander, like poll for pager duty incidents and create a war room when an incident is detected. |
Who is on-call | Get current PagerDuty on-call users and send them to Slack channel. | Gets current on-call schedule |
On-Call schedules | Get all schedules from PagerDuty and Send to a Slack channel | Gets all on-call schedules. |
Remediate OVS Firewall | Check and remediate Flows in Firewall | Verify OVS flows |
List AWS Lambda functions | Playbook to list all Lambda functions | Can be used to get your lambda functions from AWS region |
Start a VM in AWS | Launches a virtual machine in AWS | Just provide your ssh public key and create a EC2 instance with a click. |
Issue Tracker | Tracks a Github issue from aws-amplify repo | Tracks a Github issue from a repo. |
Stop Kubernetes Pods | Sample playbook to stop kubernetes pods from control VM. | Modify this to stop your own Kubernetes pod. |
These Playbooks are Ready-to-Use and configured with Epiphani's configuration and keys. You can run them from Playbook Engine, Playbook Editor or directly from the Playbook Home page AS-IS, without having to modify a single parameter.
Join Our Slack Channel:
You would have to join our Slack channel to see the full impact. Many of the Playbooks below send notifications at Slack channel #random at our workspace. Join our workspace Epiphaniai at Slack.
Video to Clone and Customize Existing Playbooks:
Take a look at the video below that describes how to Clone and Customize a Sample Playbook to suit your needs.
Sample Playbooks - Deconstructed
Following section describes in detail the sample playbooks we have. It walks you through all the components of a playbook, which connectors are used in a playbook and how each connector is configured.
LIST OF PLAYBOOKS
- Sample Playbook:: Create War Room
- Sample Playbook:: Sample HealthCheck
- Sample Playbook :: Start Dev Resources
- Sample Playbook :: Shutdown Dev Resources
- Sample Playbook :: Create Multicloud
- Sample Playbook :: Delete Multicloud
- Sample Playbook :: Incident Commander
- Sample Playbook :: Who is OnCall
- Sample Playbook :: On-call Schedules
- Sample Playbook :: Remediate OVS Firewall
- Sample Playbook :: AWS Lambda List Function
- Sample Playbook :: Start a VM in AWS
- Sample Playbook :: Issue Tracker
- Sample Playbook :: Stop Kubernetes Pods
Sample Playbook :: Create War Room
Objective:
Bring relevant people together in a multi-channel war-room when an incident happens
Automated Tasks:
- Create an incident issue at Github
- Launch a Zoom meeting
- Create an incident at PagerDuty
- Create incident channel at Slack
- Send a notification to a list of users at Slack
Playbook Nodes:
** Create Github Issue: This node uses the Github connector from our connector library.
Action: Github-create-issue
Config:
token | Github token configured in Github console. It can be created in Github Console->User->Settings->Developer Settings->Personal access tokens |
user | username of repository owner, can be github user or org name |
repository | name of the github repository |
Command:
title | Issue title |
body | Issue contents |
labels | Labels to be assigned to the issue, can be known from github console for the repo. |
assignees | Github user names to whom the issue should be assigned, users should have access to the repo. |
** Create zoom: This node uses the Zoom connector from our connector library.
Action: zoom-create-meeting
Config:
apiKey | zoom api key from settings |
apiSecret | zoom api secret key from settings |
proxy | Use system proxy settings (set to true) |
Command:
type | type of meeting: instant, scheduled, recurring with fixed time or recurring with no fixed time. |
user | user id or email |
topic | meeting topic |
auto-record-meeting | no: for no recording or yes: to record a meeting |
start-time | meeting start time, valid only for scheduled or recurring meeting |
timezone | valid only for scheduled or recurring meeting |
** Create PagerDuty: This node uses the PagerDuty connector from our connector library.
Action: PagerDuty-submit-event
Config:
APIKey | Pager Duty api key |
ServiceKey | service key |
isFetch | set to true, fetch incidents |
FetchInterval | Initial fetch interval in minutes |
Command:
source | Human readable id like hostname of the system under problem. |
summary | A high level text summary of the event |
severity | event severity (critical, error, warning or info) |
action | Action to be executed (trigger, acknowledge or resolve) |
description | Short description of the problem |
serviceKey | service key for the integration |
** Create Slack Channel: This node uses the Slack connector from our connector library.
Action: slack-create-channel
Config:
access_token | Slack API Access token |
bot_token | Slack API bot token |
notify_incidents | Send notifications to dedicated channel |
min_severity | Incident severity to send to the channel (low, medium or high) |
incidentType | Type of the incident created in slack |
Command:
type | Slack channel type (public or private) |
name | Slack channel name |
users | A CSV list of user ids or emails to invite to slack channel |
** Slack Notification: This node uses the Slack connector from our connector library.
Action: send-notification
Config:
access_token | Slack API Access token |
bot_token | Slack API bot token |
notify_incidents | Send notifications to dedicated channel |
min_severity | Incident severity to send to the channel (low, medium or high) |
incidentType | Type of the incident created in slack |
Command:
message | Slack message content |
channel | Slack channel name to send the message to |
ignoreAddURL | true or false to decide to include the URL for relevant component. |
Sample Playbook:: Sample HealthCheck
Objective:
Run a health check for the various services in the system
Automated Tasks:
- Run a check on Splunk for errors
- Get current status of instances at AWS EC2
- Notify users at Slack on Splunk and EC2 Instance status
Playbook Nodes:
** GetErrorsSplunk: This node uses the Splunk connector from our connector library.
Action: splunk-search
Config:
host | Splunk hostname or IP |
authentication | Auth info in the format {"identifier":"XXXX", "password":"*****"} |
port | port (value: 8089) |
earliest_fetch_time_fieldname | Earliest time to fetch (use it from the field name defined here) |
latest_fetch_time_fieldname | Latest time to fetch (use it from the field name defined here) |
Command:
query | Splunk search language string (Eg: earliest=-30m latest=now index="main" | stats count as Errors by process) |
event_limit | Max num of events to return (default:100, 0 means return all) |
batch_limit | Max num of returned results to process (default:25,000) |
** GeEC2Instances: This node uses the AWS-EC2 connector from our connector library.
Action: aws-ec2-describe-instances
Config:
defaultRegion | one of the valid AWS regions from aws console (us-east-1, us-east-2....) |
access_key | aws access key, value of aws_access_key_id |
secret_key | aws secret key, value of aws_secret_access_key |
** getTable: This node uses the Epiphani connector from our connector library.
Action: MarkDownTbl
Config:
N/A
Command:
Includes name of the table column to mark down
** SendSlack Running, SendSlack-Splunk, SendSlack-Stop:
These nodes use Slack connectors "send-notification" action similar to described in "Create War Room" Playbook.
Sample Playbook :: Start Dev Resources
Objective:
Initiate "dev" tagged AWS EC2 Instances
Automated Tasks:
- Get list of "dev" tagged AWS EC2 instances
- Send a message at Slack for instances that are not running (Green path)
- Initiate the instances that are not running (Blue path)
Playbook Nodes:
** Get instances: This node gets the instances information from AWS EC2.
Action: aws-ec2-describe-instances
Config:
defaultRegion | region for AWS EC2 |
access_key | AWS access key |
secret_key | AWS secret key |
** Send Running Msg: This is slack send notification node (described earlier for "Create War Room" Playbook.
** Start VM Instances: This node starts instances in AWS EC2.
Action: aws-ec2-start-instances
Config: same as aws-ec2-describe-instances above
Command:
InstanceIDs | List of ID of Instances that needed to be launched |
Sample Playbook :: Shutdown Dev Resources
Objective:
Stop "dev" tagged AWS EC2 Instances
Automated Tasks:
- Get list of "dev" tagged AWS EC2 instances
- Send a message at Slack for instances that are running (Green path)
- Initiate the instances that are running (Blue path)
Playbook Nodes:
** Get instances: This node gets the instances information from AWS EC2.
Action: aws-ec2-describe-instances
Config:
defaultRegion | region for AWS EC2 |
access_key | AWS access key |
secret_key | AWS secret key |
** Send Running Msg: This is slack send notification node (described earlier for "Create War Room" Playbook.
** Shutdown VM Instances: This node starts instances in AWS EC2.
Action: aws-ec2-stop-instances
Config: same as aws-ec2-describe-instances above
Command:
InstanceIDs | List of ID of Instances that needed to be shutdown |
Sample Playbook :: Create Multicloud
Objective:
Create a Multicloud Network between AWS and GCP in a sandbox
Automated Tasks:
- Create a VPC in AWS
- Create a VPC in GCP
- Create AWS Firewall
- Create a Simple AWS Active Directory
- Create a GCP VM
- Create AWS VPN
- Create Client VPN
- Create a VPN between AWS and GCP
Sample Playbook :: Delete Multicloud
Objective:
Delete the Multicloud Network between AWS and GCP in a sandbox
Automated Tasks:
- Delete Client VPN
- Delete All VPC VMs
- Delete Multicloud VPN
- Get GCP Network Resource ID
- Delete GCP VM
- Delete AWS Firewall
- Delete AWS AD
- Delete AWS VPC
Sample Playbook :: Incident Commander
Objective:
Fetch incident information from PagerDuty and notify people of new incident
Automated Tasks:
- Get incident info from PagerDuty
- If an incident is detected (Red path), do the following:
- notify of the incident at slack channel
- execute service HealthCheck and create War Room Playbooks simultaneously
Playbook Nodes:
** Pagerduty Poller: This node gets the incident information from Pagerduty.
Action: fetch-incidents
Config:
APIKey | Pagerduty API Key |
ServiceKey | Pagerduty Service Key |
IsFetch | set to "True" to fetch incidents |
FetchInterval | interval set in mins (needed only for initial fetch) |
** Slack Message: This is slack send notification node (described earlier for "Create War Room" Playbook.)
** Health Check Playbook and War Room Playbook: These are nested playbook nodes to execute Health Check and War Room Playbooks described earlier.
Sample Playbook :: Who is OnCall
Objective:
Get the person on-call information from PagerDuty
Automated Tasks:
- Get information of On-call Users at PagerDuty now
- Send this information to Slack
** Now OnCall Users: This node gets the information of OnCall users from Pagerduty.
Action: Pagerduty-get-users-on-call-now
Config:
APIKey | Pagerduty API Key |
ServiceKey | Pagerduty Service Key |
IsFetch | set to "True" to fetch incidents |
FetchInterval | interval set in mins (needed only for initial fetch) |
Command:
limit | 10 (default is 25, max is 100) |
** Convert Data Format: This node uses the Epiphani connector from our connector library.
Action: MarkDownTbl
Config:
N/A
Command:
Includes name of the table column to mark down
** Slack OnCall Users: This is slack send notification node (described earlier for "Create War Room" Playbook.)
Sample Playbook :: On-call Schedules
Objective:
Get the schedule of all on-call agents from PagerDuty and send as a message to Slack channel
Automated Tasks:
- Get PagerDuty On-call schedule
- Send a Slack channel notification
** Get Schedules: This node gets the information of OnCall users from Pagerduty.
Action: Pagerduty-get-all-schedules
Config:
APIKey | Pagerduty API Key |
ServiceKey | Pagerduty Service Key |
IsFetch | set to "True" to fetch incidents |
FetchInterval | interval set in mins (needed only for initial fetch) |
Command:
query | (optional) to fetch only listed users' schedules, default is to fetch all schedules |
limit | 5 (default is 25, max is 100) |
** Convert Data Format: This node uses the Epiphani connector from our connector library.
Action: MarkDownTbl
Config:
N/A
Command:
Includes name of the table column to mark down
** Slack Schedule: This is slack send notification node (described earlier for "Create War Room" Playbook.)
Sample Playbook :: Remediate OVS Firewall
Objective:
Get OVS Flows, and add any missing subnets to the Firewall
Automated Tasks:
- Get OVS Flows
- Check for missing Subnets and add missing Subnets to the Firewall (Green path)
- Notify User on subnet missing, configured, added or not added messages
** Dump OVS Flows, Add OVS Flows: These are Epiphani ssh nodes that enable executing commands on ssh login.
Action: ssh
Config: None
Command:
login-type | user-ssh-key or user-pass |
ssh-host | hostname or IP address to ssh to |
username | username to use for logging in |
ssh-key | ssh key to use for logging in |
(commands to run) | ./checkOvsFlows.sh OR ./addOvsFlows.sh (or any other command to execute post ssh) |
** Subnet Missing, Subnet Configured, Subnet Not Added, Subnet Added: These are Epiphani UserMessage nodes to notify User of a specific message. This message will show up under "Output" tab of the Playbook Editor (if the playbook was executed from there), or it all always be present under "Scroll" of Playbook Engine.
Sample Playbook :: AWS Lambda List Function
Objective:
Playbook to list all AWS Lambda functions
Automated Tasks:
- Get AWS Lambda Functions
- Send this information as a Slack message
** Lambda List Functions: This node gets the information of all AWS Lambda list functions.
Action: aws-lambda-list-functions
Config:
defaultRegion | region for the AWS EC2 (us-west-2 etc.) |
access_key | access key for AWS |
secret_key | secret key for AWS |
** List Functions Table: This node uses the Epiphani connector from our connector library.
Action: MarkDownTbl
Config:
N/A
Command:
Includes name of the table column to mark down
** Slack Send Message: This is slack send notification node (described earlier for "Create War Room" Playbook.)
Sample Playbook :: Start a VM in AWS
Objective:
Launch a Virtual Machine in AWS and get its public DNS for subsequent ssh
Automated Tasks:
- Instantiate a VM in AWS EC2 with tag "dev"
- Install user's public key to the newly created VM
** Launch a spot instance: This node instantiates an instance at AWS EC2.
Action: aws-ec2-run-instances
Config:
defaultRegion | region for the AWS EC2 (us-west-2 etc.) |
access_key | access key for AWS |
secret_key | secret key for AWS |
Command: (only mandatory parameters are described below)
count | 1 (the number of instances to launch) |
ImageID | The ID of AMI which is required to launch an instance |
InstanceType | t2.micro (or t2.large) |
keyName | key pair (this is mandatory to enable user to login, or an AMI must be configured that allows users to login another way) |
tags | key=, value=, if you wish to give a specific tags to instance |
region | us-west-2 etc. |
** Wait till VM Runs: This node wait for specified EC2 instances to be launched before returning.
Action: aws-ec2-waiter-instance-running
Config:
defaultRegion | region for the AWS EC2 (us-west-2 etc.) |
access_key | access key for AWS |
secret_key | secret key for AWS |
Command: (only required parameters are described below)
instanceIds | comma separated list of Instance IDs |
region | us-west-2 etc. |
** Check instance is ready: This node checks if a specified instances are ready at EC2
Action: aws-ec2-describe-instances
Config:
defaultRegion | region for the AWS EC2 (us-west-2 etc.) |
access_key | access key for AWS |
secret_key | secret key for AWS |
Command: (only mandatory parameters are described below)
instanceIds | comma separated list of Instance IDs |
region | us-west-2 etc. |
** Install Key: This is Epiphani ssh nodes that enable executing commands on ssh login.
Action: ssh
Config: None
Command:
login-type | user-ssh-key or user-pass |
ssh-host | hostname or IP address to ssh to |
username | username to use for logging in |
ssh-key | ssh key to use for logging in |
(commands to run) | ./install_key.sh (or any other command to execute post ssh) |
** Report VM Issue, Show Hostname: These are Epiphani UserMessage nodes to notify User of a specific message. This message will show up under "Output" tab of the Playbook Editor (if the playbook was executed from there), or it all always be present under "Scroll" of Playbook Engine.
Sample Playbook :: Issue Tracker
Objective:
Fetch all issues at Github repository and identify which are assigned and which are pending assignee
Automated Tasks:
- Fetch all issues at Github repository
- Send a Slack message for those issues which are not assigned to anyone yet (Green path)
- Send a Slack message for those issues with their assignee and other information (Blue path)
** github-search-issue-node: This node gets the information for issues raised at github repository.
Action: Github-search-issues
Config:
token | Github API token |
user | username of the repository owner |
repository | Github respository |
** SendSlack-assignee-update, SendSlack-issue-update: These are slack send notification nodes (described earlier for "Create War Room" Playbook.)
Sample Playbook :: Stop Kubernetes Pods
Objective:
Stop Kubernetes Pods and send a message accordingly
Automated Tasks:
- Get list of Kubernetes Pods
- Run a stop command on each Kubernetes Pod
- Check if they were stopped or not
- Notify user to confirm if pods are stopped or not
** Run stop pods command: This is Epiphani ssh node that enable executing commands on ssh login.
Action: ssh
Config: None
Command:
login-type | user-ssh-key or user-pass |
ssh-host | hostname or IP address to ssh to |
username | username to use for logging in |
ssh-key | ssh key to use for logging in |
(commands to run) | kubectl get pods (or any other command to execute post ssh) |
** Notify User: This is Epiphani UserMessage node to notify User of a specific message. This message will show up under "Output" tab of the Playbook Editor (if the playbook was executed from there), or it all always be present under "Scroll" of Playbook Engine.