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. 


NameDescriptionPurpose

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 CheckPerforms 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 resourcesStarts 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 resourcesStops 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 MulticloudCreate a MultiCloud Network between AWS & GCPCreating complex multi-cloud network easily. Configure everything once at a single place and keep creating multiple times with just a click
Delete MulticloudDelete a MultiCloud Network between AWS & GCPDeletes a multi-cloud network.
Incident CommanderAlert team, perform health check and setup war roomCan 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-callGet current PagerDuty on-call users and send them to Slack channel.Gets current on-call schedule
On-Call schedulesGet all schedules from PagerDuty and Send to a Slack channelGets all on-call schedules.
Remediate OVS FirewallCheck and remediate Flows in FirewallVerify OVS flows
List AWS Lambda functionsPlaybook to list all Lambda functionsCan be used to get your lambda functions from AWS region
Start a VM in AWSLaunches a virtual machine in AWSJust provide your ssh public key and create a EC2 instance with a click.
Issue TrackerTracks a Github issue from aws-amplify repoTracks a Github issue from a repo.
Stop Kubernetes PodsSample 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


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:

            

tokenGithub token configured in Github console. It can be created in Github Console->User->Settings->Developer Settings->Personal access tokens
userusername of repository owner, can be github user or org name
repositoryname of the github repository

    

     Command:

            

titleIssue title
bodyIssue contents
labelsLabels to be assigned to the issue, can be known from github console for the repo.
assigneesGithub 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:

            

apiKeyzoom api key from settings
apiSecretzoom api secret key from settings
proxyUse system proxy settings (set to true)

    

     Command:

            

typetype of meeting: instant, scheduled, recurring with fixed time or recurring with no fixed time.
useruser id or email
topicmeeting topic
auto-record-meetingno: for no recording or yes: to record a meeting
start-timemeeting start time, valid only for scheduled or recurring meeting
timezonevalid only for scheduled or recurring meeting

       


 ** Create PagerDuty: This node uses the PagerDuty connector from our connector library.

        Action: PagerDuty-submit-event

        Config:

            

APIKeyPager Duty api key
ServiceKeyservice key
isFetchset to true, fetch incidents
FetchIntervalInitial fetch interval in minutes

    

     Command:

            

sourceHuman readable id like hostname of the system under problem.
summaryA high level text summary of the event
severityevent severity (critical, error, warning or info)
actionAction to be executed (trigger, acknowledge or resolve)
descriptionShort description of the problem
serviceKeyservice key for the integration

       

 

 ** Create Slack Channel: This node uses the Slack connector from our connector library.

        Action: slack-create-channel

        Config:

            

access_tokenSlack API Access token
bot_tokenSlack API bot token
notify_incidentsSend notifications to dedicated channel
min_severityIncident severity to send to the channel (low, medium or high)
incidentTypeType of the incident created in slack

    

     Command:

                    

typeSlack channel type (public or private)
nameSlack channel name
usersA 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_tokenSlack API Access token
bot_tokenSlack API bot token
notify_incidentsSend notifications to dedicated channel
min_severityIncident severity to send to the channel (low, medium or high)
incidentTypeType of the incident created in slack

    

     Command:

                    

messageSlack message content
channelSlack channel name to send the message to
ignoreAddURLtrue 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:

            

hostSplunk hostname or IP
authenticationAuth info in the format {"identifier":"XXXX", "password":"*****"}
portport (value: 8089)
earliest_fetch_time_fieldnameEarliest time to fetch (use it from the field name defined here)
latest_fetch_time_fieldnameLatest time to fetch (use it from the field name defined here)

    

     Command:

            

querySplunk search language string  (Eg: earliest=-30m latest=now index="main" | stats count as Errors by process)
event_limitMax num of events to return (default:100, 0 means return all)
batch_limitMax 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:

            

defaultRegionone of the valid AWS regions from aws console (us-east-1, us-east-2....)
access_keyaws access key, value of aws_access_key_id
secret_keyaws 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:

            

defaultRegionregion for AWS EC2
access_keyAWS access key
secret_keyAWS 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:


InstanceIDsList 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:

            

defaultRegionregion for AWS EC2
access_keyAWS access key
secret_keyAWS 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:


InstanceIDsList 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:

            

APIKeyPagerduty API Key
ServiceKeyPagerduty Service Key
IsFetchset to "True" to fetch incidents
FetchIntervalinterval 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:

            

APIKeyPagerduty API Key
ServiceKeyPagerduty Service Key
IsFetchset to "True" to fetch incidents
FetchIntervalinterval set in mins (needed only for initial fetch)


       Command:

            

limit10 (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:

            

APIKeyPagerduty API Key
ServiceKeyPagerduty Service Key
IsFetchset to "True" to fetch incidents
FetchIntervalinterval set in mins (needed only for initial fetch)


       Command:

            

query(optional) to fetch only listed users' schedules, default is to fetch all schedules
limit5 (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-typeuser-ssh-key or user-pass
ssh-hosthostname or IP address to ssh to
usernameusername to use for logging in
ssh-keyssh 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: 

            

defaultRegionregion for the AWS EC2 (us-west-2 etc.)
access_keyaccess key for AWS
secret_keysecret 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: 

            

defaultRegionregion for the AWS EC2 (us-west-2 etc.)
access_keyaccess key for AWS
secret_keysecret key for AWS


       Command:  (only mandatory parameters are described below)

            

count1 (the number of instances to launch)
ImageIDThe ID of AMI which is required to launch an instance
InstanceTypet2.micro (or t2.large)
keyNamekey pair (this is mandatory to enable user to login, or an AMI must be configured that allows users to login another way)
tagskey=, value=, if you wish to give a specific tags to instance 
regionus-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: 

            

defaultRegionregion for the AWS EC2 (us-west-2 etc.)
access_keyaccess key for AWS
secret_keysecret key for AWS

                

   

        Command: (only required parameters are described below)

             

   

instanceIdscomma separated list of Instance IDs
regionus-west-2 etc.


** Check instance is ready: This node checks if a specified instances are ready at EC2

        Action: aws-ec2-describe-instances

        Config: 

            

defaultRegionregion for the AWS EC2 (us-west-2 etc.)
access_keyaccess key for AWS
secret_keysecret key for AWS


       Command:  (only mandatory parameters are described below)

            

instanceIdscomma separated list of Instance IDs
regionus-west-2 etc.


** Install Key: This is Epiphani ssh nodes that enable executing commands on ssh login.

        Action: ssh

        Config: None

        Command: 

            

login-typeuser-ssh-key or user-pass
ssh-hosthostname or IP address to ssh to
usernameusername to use for logging in
ssh-keyssh 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: 

            

tokenGithub API token
userusername of the repository owner
repositoryGithub 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-typeuser-ssh-key or user-pass
ssh-hosthostname or IP address to ssh to
usernameusername to use for logging in
ssh-keyssh 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.