systems building systems: a puppet story
DESCRIPTION
TRANSCRIPT
![Page 1: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/1.jpg)
Systems Building SystemsA Puppet Story
![Page 2: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/2.jpg)
![Page 3: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/3.jpg)
What is Puppet? Language Parser
Client/Server
Resource Abstraction
A few other things...
![Page 4: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/4.jpg)
LukeKaniesRecovering Sysadmin
![Page 5: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/5.jpg)
One Goal:Revolutionize System Administration
![Page 6: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/6.jpg)
What is a sysadmin?
![Page 7: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/7.jpg)
Not Exactly Modern
![Page 8: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/8.jpg)
Do tools have to suck?
![Page 9: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/9.jpg)
Say What?!??
![Page 10: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/10.jpg)
Everything the SameEverything Distinct
![Page 11: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/11.jpg)
“Best Practices”
![Page 12: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/12.jpg)
Don’t look at me... I wasn’t the last one to touch it...
![Page 13: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/13.jpg)
SSH Cfengine ?
![Page 14: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/14.jpg)
Bad product,hungry Luke
![Page 15: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/15.jpg)
SSH Cfengine ?
![Page 16: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/16.jpg)
SSH Cfengine ?
![Page 17: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/17.jpg)
You can either easily manage complex systems at scale...
![Page 18: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/18.jpg)
You can either easily manage complex systems at scale...
Or you can’t...
![Page 19: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/19.jpg)
Who’s using Puppet?
“...at Google we're currently using Puppet
to manage close to 6,000 Macs, and it's likely our deployment
will expand dramatically beyond
that....”
![Page 20: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/20.jpg)
Competitive Advantage
![Page 21: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/21.jpg)
People are finally figuring out puppet and how it gets you
to the pub by 4pm. Note that I've been at this pub since
2pm.-- Jorge Castro
![Page 22: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/22.jpg)
Enter Puppet...
Configuration Is Declarative Code
Semantics Matter
Reproducible
Shareable
Maintainable
Extensible
![Page 23: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/23.jpg)
Developer Sysadmin
![Page 24: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/24.jpg)
Developer Sysadmin
Three people
![Page 25: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/25.jpg)
Programming SysAdmin
Low-level, non-portable Assembly commands
and files
Abstract, portable C* Resources
An Analogy
* For small values of abstract
![Page 26: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/26.jpg)
Portable ResourcesThis:
![Page 27: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/27.jpg)
Portable Resources
Becomes:
This:
![Page 28: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/28.jpg)
Portable Resources
Becomes:
This:
![Page 29: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/29.jpg)
Portable Resources
Becomes:
This:
![Page 30: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/30.jpg)
Portable Resources
Becomes:
This:
![Page 31: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/31.jpg)
Portable Resources
Becomes:
This:
![Page 32: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/32.jpg)
Portable
23 package types
Users in NetInfo, useradd, pw
Support for Debian, Ubuntu, Red Hat, Solaris, OS X, Gentoo, SuSE, FreeBSD, and more
![Page 33: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/33.jpg)
Debian
![Page 34: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/34.jpg)
Debian
Red Hat
![Page 35: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/35.jpg)
Debian
Red Hat
![Page 36: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/36.jpg)
![Page 37: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/37.jpg)
![Page 38: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/38.jpg)
Package
![Page 39: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/39.jpg)
Package
Configuration
Configuration should get modified after
package installation
![Page 40: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/40.jpg)
Package
Service
Service should restart when
configuration changesConfiguration
Configuration should get modified after
package installation
![Page 41: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/41.jpg)
![Page 42: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/42.jpg)
![Page 43: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/43.jpg)
Idempotence...
![Page 44: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/44.jpg)
Idempotence...
![Page 45: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/45.jpg)
Idempotence...
Describes the property of operations in mathematics and computer science which yield the same result after
the operation is applied multiple times.
![Page 46: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/46.jpg)
![Page 47: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/47.jpg)
![Page 48: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/48.jpg)
![Page 49: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/49.jpg)
Network Effects
![Page 50: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/50.jpg)
puppetd in the cloud
Puppetmasterd
puppetdOS X puppetd
Linux
Code
![Page 51: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/51.jpg)
Every Client:
![Page 52: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/52.jpg)
Retrieve resource catalog from central server
Every Client:
![Page 53: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/53.jpg)
Retrieve resource catalog from central server
Determine resource order
Every Client:
![Page 54: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/54.jpg)
Retrieve resource catalog from central server
Determine resource order
Check each resource in turn, fixing if necessary
Every Client:
![Page 55: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/55.jpg)
Retrieve resource catalog from central server
Determine resource order
Check each resource in turn, fixing if necessary
Rinse and repeat, every 30 minutes
Every Client:
![Page 56: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/56.jpg)
Every Resource:
![Page 57: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/57.jpg)
Every Resource:
Retrieve current state (e.g., by querying dpkg db or doing a stat)
![Page 58: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/58.jpg)
Every Resource:
Retrieve current state (e.g., by querying dpkg db or doing a stat)
Compare to desired state
![Page 59: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/59.jpg)
Every Resource:
Retrieve current state (e.g., by querying dpkg db or doing a stat)
Compare to desired state
Fix, if necessary (or just log)
![Page 60: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/60.jpg)
![Page 61: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/61.jpg)
![Page 62: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/62.jpg)
![Page 63: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/63.jpg)
![Page 64: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/64.jpg)
Image from http://flickr.com/photos/pingnews/132543603/
![Page 65: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/65.jpg)
![Page 66: Systems building Systems: A Puppet Story](https://reader037.vdocument.in/reader037/viewer/2022103014/54b6c67f4a7959e5268b471e/html5/thumbnails/66.jpg)
Questions?
andrew@reductivelabs
twitter.com/littleidea