chatops unplugged
Embed Size (px)
DESCRIPTION
Join DevOps Evangelist, Jason Hand, for a discussion on ChatOps and the movement to deploy, measure, and mitigate from a chat client. With more and more teams implementing methods to trigger commands from within their favorite chat clients, the time it takes to perform specific and repetitive tasks has been dramatically reduced. In providing a real-time command history to others, we can share knowledge and learn from each other faster than ever before.TRANSCRIPT

@GoVictorOps #ChatOps
ChatOps… a beginner’s guide
~ $

@GoVictorOps #ChatOps
Agenda• Introduction to ChatOps
• Origins
• Tools
• Benefits
• Examples
• Limitations & Concerns
• Getting Started
• Q&A
@jasonhand

@GoVictorOps #ChatOps
What do you doover and over again?
Can I do that for you?
I’ll think about it.
@jasonhand

@GoVictorOps #ChatOps
“putting tools in the middle of the conversation”
ChatOps
- GitHub (2010)
@jasonhand

@GoVictorOps #ChatOps
DevOps
To move fast and maintain stability it’s important to have a culture of automation, measurement and sharing
CultureAutomationMeasurementSharing
@jasonhand

@GoVictorOps #ChatOps
Tools
Chat clients (with channels or rooms)
Bots
Scripts
@jasonhand

@GoVictorOps #ChatOps
HipChat
Campfire
Slack
Chat
@jasonhand

@GoVictorOps #ChatOps
Bots
@jasonhand

@GoVictorOps #ChatOps
Scripts
@jasonhand

@GoVictorOps #ChatOps
Benefits
•Sharing
•Learning
•Speed
@jasonhand

@GoVictorOps #ChatOps
Multi-user terminal
Share learning experiences
Sharing
Disseminate knowledge across everyone on the team
Share learning experiences@jasonhand

@GoVictorOps #ChatOps
Learning
“everyone is pairing all of the time”
- Jesse Newland (Ops – GitHub)
@jasonhand

@GoVictorOps #ChatOps
Speed
How many clicks
does it take you?
@jasonhand

@GoVictorOps #ChatOps
Jason: Hey Dan … did you see that spike in CPU usage on Prod1.. ~ 3 minutes ago?
Dan: No. Let me check. brb
Dan: Shit. Yeah, I see it. Looks ok now. I think :-/
Jason: Think we should let Mike know? He might want to dig in to it later.
Dan: Yeah, I’ll take a screenshot and email it to him.
Jason: Would anyone else need to know about it?
Dan: Prob. I’ll cc the DevOps team so everyone knows
Old methods
@jasonhand

@GoVictorOps #ChatOps
Jason: Hey Dan. My code is ready to push when you are.
Dan: Cool. I’ll commit it to the latest branch here in a minute.
Jason: Great. Also, we should probably sit down with Nick (new guy) and show him how to do that soon.
Dan: Yeah. Once I get some time, I’ll schedule something. :/
Jason: There’s probably a bunch more stuff to show him too, but I’m not sure I even know all of the steps for everything.
Dan: We’ve got a wiki for most things, but not everything. I’ll see what I can find and email him.
Old methods
@jasonhand

@GoVictorOps #ChatOps
Jason: Hey Dan. My code is ready to push when you are.
Dan: Cool. I’ll commit it to the latest branch here in a minute.
Jason: Great. Also, we should probably sit down with Nick (new guy) and show him how to do that soon.
Dan: Yeah. Once I get some time, I’ll schedule something. :/
Jason: There’s probably a bunch more stuff to show him too, but I’m not sure I even know all of the steps for everything.
Dan: We’ve got a wiki for most things, but not everything. I’ll see what I can find and email him.
Old methods
Chat with Jason & Dan
Who else can see this conversation?
Nobody !
If using a traditional chat clientSuch as Gchat …

@GoVictorOps #ChatOps
What do you doover and over again?
Can I do that for you?
Heck yeah! :D
@jasonhand

@GoVictorOps #ChatOps
• Run MySQL command (as read-only user)• Authorize users (assign and enforce user-based roles) • Take a server offline• Bring a server online• Deploy code to a repository• Displaying the status of a JIRA ticket• Adding comments and changing their status on tickets• Query the status of API's (internal & external)• VM interaction to see host health• Monitoring service interaction to trigger status checks• Hubot scripts can be written in CoffeeScript or Javascript• Notify people not present in a chatroom that they were mentioned• Fetch logs• Rebalance shards across its file servers• List currently running jobs/processes• Kill jobs/processes• Tail a job/process• Track Customer signups• Sharing graphs for context• Store static links, mapping those links to simple, easy to remember commands
Examples
In GitHubOpening issuesClosing issuesCommenting on issuesListing issuesMerge pull requests
jhand.ml/scripts
jhand.ml/heroku
@jasonhand

@GoVictorOps #ChatOps
Example script
Show current GitHub status and messages
jhand.ml/script1@jasonhand

@GoVictorOps #ChatOps
hubot github status - Returns the current system status and timestamp.
hubot github status last - Returns the last human communication, status, and timestamp.
hubot github status messages- Returns the most recent human communications with status and timestamp.
Hubot: github status: new file: Chatops.txt 116 seconds ago
Jason: hubot github status
@jasonhand

@GoVictorOps #ChatOps
Jason: Hey Dan. My code is ready to push when you are.
Dan: Cool. I’ll commit it to the latest branch here in a minute.
Jason: Great. Also, we should probably sit down with Nick (new guy) and show him how to do that soon.
Dan: Yeah. Once I get some time, I’ll schedule something. :/
Jason: There’s probably a bunch more stuff to show him too, but I’m not sure I even know all of the steps for everything.
Dan: We’ve got a wiki for most things, but not everything. I’ll see what I can find and email him.
New and improved!
Chat Room
Who else can see this conversation?
Everybody !
Jason
Members
Dan
Nick
Mike
Jeff
Doug
Tara

@GoVictorOps #ChatOps
Graphs or it didn’t happen
@jasonhand

@GoVictorOps #ChatOps
Jason: Hubot graphite load 1 min on serverABC
Jason: @Dan … you seeing this?
Dan: Yeah.
New method w/ bots
Hubot:
Mike: That was me. I was running a giant report. Should be fine now
Nick (new guy): Cool. Thanks for showing me how to do that. ;-)
@jasonhand

@GoVictorOps #ChatOps
Big Whoop
Why is this important?
@jasonhand

@GoVictorOps #ChatOps@ngrieb: hubot graphite load 1 min on serverABC

@GoVictorOps #ChatOps@jasonhand

@GoVictorOps #ChatOps
Getting Started
Install botjhand.ml/hubotjhand.ml/lita
Create repoDownload existing scripts
jhand.ml/scriptsCreate your own scriptsAsk others what needs to be automated
@jasonhand

@GoVictorOps #ChatOps
Concerns
@jasonhand

@GoVictorOps #ChatOps
Limitations
@jasonhand

@GoVictorOps #ChatOps
What I’d like to learn from you :
Are you doing ChatOps?
@jasonhand

@GoVictorOps #ChatOps