step away from that knife!

22
Step Away From That Knife!

Upload: michael-goetz

Post on 16-Jul-2015

457 views

Category:

Technology


1 download

TRANSCRIPT

Step Away From That Knife!

Who am I?

Michael Goetz

Manager, Solutions Engineering @ Chef

@michaelpgoetz

[email protected]

Knife, Y U No Automate?

• Who built this thing and why do they suck?

• What were they thinking?

• Do we really care?

How I want to feel

How I really feel

Ye Olde Automation Pattern

• Local Development (Vagrant, Chef, SSH)• Source Control (Maybe)• CI (Run it again!)• Chef Server (chef-solo?)• Deploy! (cross your fingers)

This Is NOT The Future I Signed Up For

I want changes to be...

• Safe• Compliant• Fast

The path to safety

Code CollaborationLocal Development Continuous Integration

Chef Code Deployment

What

local development/ˈlōk(ə)l dəˈveləpmənt/noun

1. Development performed in an isolated environment, such as a laptop or individual virtual machine

Code CollaborationLocal Development Continuous Integration

Chef Code Deployment

ChefSpec Berkshelf

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

Write Code Commit Code

Write Code Test Code Commit Code

Write Tests Write Code Commit Code

Start Here:

Next Step:

End State:

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

ChefSpec

Write Code

Style Check

Testing Frameworks

Testing Automation

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

● “Clean Room” development?● In place iteration?● Why not both?

Truly safe design requires validation in clean and dirty environments

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

Isolation Collaboration

● No one can break my stuff

● In pursuit of perfection

● I know how it all works

● The Bubble

● My stuff could break at any moment

● Good enough to share

● I teach others how my piece works

● Leaving the Nest

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

documentation/ˌdäkyəmənˈtāSH(ə)n/noun

1. material that provides official information or evidence or that serves as a record

commit messagehttp://programmers.stackexchange.com/questions/52267/why-should-i-write-a-commit-message

Q: Why should I write a commit message? - acidzombie24

A: Because when some poor maintainer is hunting a bug and finds that it was added in rev. xyz, he will want to know what rev. xyz was supposed to do. - Peter Taylor

When you file a pull request, all you’re doing is requesting that another developer (e.g., the project maintainer) pulls a branch from your repository into their repository.

https://www.atlassian.com/git/tutorials/making-a-pull-request

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

continuous integration/kənˈtinyo͞oəs ˌin(t)əˈɡrāSH(ə)n/noun

1. a software development practice where members of a team integrate their work frequently

continuous delivery/kənˈtinyo͞oəs dəˈliv(ə)rē/noun

1. a software development discipline where you build software in such a way that the software can be released to production at any time

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

ChefSpec

Style Check

Testing Frameworks

Testing Automation

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

What do you need to get started?

● SCM credentials (deploy key)

● Chef server account (service account)

● https://github.com/zts/cooking-with-jenkins

● http://www.cryptocracy.com/blog/2014/01/03/cooking-with-jenkins-test-kitchen-and-docker

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

Promote your changes

● Tag your changes in Git

● Freeze your cookbook on the Chef Server

● https://github.com/jonlives/knife-spork

What Code CollaborationLocal Development Continuous

IntegrationChef Code Deployment

What’s next?

● Notifying nodes○ Meatspace mode○ Daemon mode○ Push Jobs

● Notifying humans○ Email○ Change management tools○ Dashboards