Top Banner
Chef Reusability Config Management Camp Ghent, Belgium February 2015
93
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Configuration Management Camp 2015

Chef Reusability!Config Management Camp!

Ghent, Belgium!February 2015

Page 2: Configuration Management Camp 2015

Sean [email protected]!

@someara

Page 3: Configuration Management Camp 2015

whoami

Page 4: Configuration Management Camp 2015

Part 1

Page 5: Configuration Management Camp 2015

Things that are true

Page 6: Configuration Management Camp 2015

New Chef users expect community cookbooks to just work

Page 7: Configuration Management Camp 2015

Especially the Chef maintained cookbooks

Page 8: Configuration Management Camp 2015

This is not the current state of things

Page 9: Configuration Management Camp 2015

This leads to sadness

Page 10: Configuration Management Camp 2015

We must repair it

Page 11: Configuration Management Camp 2015

People copy patterns

Page 12: Configuration Management Camp 2015

The status quo cannot be allowed to continue

Page 13: Configuration Management Camp 2015

Common pain points

https://www.flickr.com/photos/kwl/4595324641

Page 14: Configuration Management Camp 2015

Platform and version support

Page 15: Configuration Management Camp 2015

Weak scoping

Page 16: Configuration Management Camp 2015

No standard interface

Page 17: Configuration Management Camp 2015

Compilation phase work

Page 18: Configuration Management Camp 2015

Needing chef-rewind

Page 19: Configuration Management Camp 2015

Attributes and precedence

Page 20: Configuration Management Camp 2015

Pattern proliferation

Page 21: Configuration Management Camp 2015

The path out of the darkness

https://www.flickr.com/photos/71267357@N06/15864687537

Page 22: Configuration Management Camp 2015

Change how cookbooks are written

Page 23: Configuration Management Camp 2015

systems

beliefs! behaviors

Page 24: Configuration Management Camp 2015

Standardize interfaces

Page 25: Configuration Management Camp 2015

Eliminate the pain points

Page 26: Configuration Management Camp 2015

Focus on resources

Page 27: Configuration Management Camp 2015

Make it super easy!to write resources

Page 28: Configuration Management Camp 2015

Ship resources for ALL THE THINGS

Page 29: Configuration Management Camp 2015

Copy better patterns

Page 30: Configuration Management Camp 2015

Make it fucking delightful

Page 31: Configuration Management Camp 2015
Page 32: Configuration Management Camp 2015

Part 2

Page 33: Configuration Management Camp 2015

Simple design patterns

https://www.flickr.com/photos/pollock/4172865252

Page 34: Configuration Management Camp 2015
Page 35: Configuration Management Camp 2015
Page 36: Configuration Management Camp 2015

You just separated data from code

Page 37: Configuration Management Camp 2015

You also just built an interface

Page 38: Configuration Management Camp 2015

Complex design patterns

https://www.flickr.com/photos/alanosaur/6417040565

Page 39: Configuration Management Camp 2015
Page 40: Configuration Management Camp 2015
Page 41: Configuration Management Camp 2015

This is where things get weird

Page 42: Configuration Management Camp 2015

amazon debian-6 debian-7 ubuntu-10.04 ubuntu-12.04 ubuntu-14.04 centos-5 centos-6 centos-7 freebsd-9 freebsd-10

Page 43: Configuration Management Camp 2015

Debconf!Docker!LaunchD!Runit!SMF!Simple!SystemD!Sysvinit!Upstart!Windows Services

Page 44: Configuration Management Camp 2015

There is a large amount of variation between software versions

Page 45: Configuration Management Camp 2015

There is an insane amount variation across platforms

Page 46: Configuration Management Camp 2015

These differences need to be handled somewhere

Page 47: Configuration Management Camp 2015

Early techniques did everything in the recipe

Page 48: Configuration Management Camp 2015

data

resource pattern

Page 49: Configuration Management Camp 2015

Later techniques focused on isolation

Page 50: Configuration Management Camp 2015

Resource pattern isolation

Page 51: Configuration Management Camp 2015
Page 52: Configuration Management Camp 2015

private recipes by convention

Page 53: Configuration Management Camp 2015

Resource data isolation

Page 54: Configuration Management Camp 2015
Page 55: Configuration Management Camp 2015
Page 56: Configuration Management Camp 2015

We now have decision logic in our interface

Page 57: Configuration Management Camp 2015

Default values often need to be computed

Page 58: Configuration Management Camp 2015

Doing this in the interface leads to sorrow

Page 59: Configuration Management Camp 2015
Page 60: Configuration Management Camp 2015

We need a better way

Page 61: Configuration Management Camp 2015

Consumption Patterns

https://www.flickr.com/photos/ektogamat/2578779839

Page 62: Configuration Management Camp 2015
Page 63: Configuration Management Camp 2015
Page 64: Configuration Management Camp 2015
Page 65: Configuration Management Camp 2015
Page 66: Configuration Management Camp 2015

Why resources are best

https://www.flickr.com/photos/cross_stitch_ninja/4932950637

Page 67: Configuration Management Camp 2015

node attributes roles environments databags are nice to haves

Page 68: Configuration Management Camp 2015

They drive data about resources

Page 69: Configuration Management Camp 2015

Resources are fundamental

Page 70: Configuration Management Camp 2015

Resources are strongly scoped

Page 71: Configuration Management Camp 2015

Resources have a standardized interface

Page 72: Configuration Management Camp 2015

Resources have types, names, and parameters

Page 73: Configuration Management Camp 2015

Type

Page 74: Configuration Management Camp 2015

Name

Page 75: Configuration Management Camp 2015

Parameters

Page 76: Configuration Management Camp 2015

Resources have identities

Page 77: Configuration Management Camp 2015
Page 78: Configuration Management Camp 2015

Resource can see each other

Page 79: Configuration Management Camp 2015

Promise to talk

Page 80: Configuration Management Camp 2015

Promise to listen

Page 81: Configuration Management Camp 2015

Resource behave the same across platforms

Page 82: Configuration Management Camp 2015
Page 83: Configuration Management Camp 2015
Page 84: Configuration Management Camp 2015
Page 85: Configuration Management Camp 2015

Resource can have multiple providers

Page 86: Configuration Management Camp 2015
Page 87: Configuration Management Camp 2015

Writing simple resources

Page 88: Configuration Management Camp 2015

yum

Page 89: Configuration Management Camp 2015

</switches github>

Page 90: Configuration Management Camp 2015

Writing complex resources

Page 91: Configuration Management Camp 2015

mysql httpd

Page 92: Configuration Management Camp 2015

</switches github>

Page 93: Configuration Management Camp 2015

fin