-
Tim Smith - @tas50 Community Engineer, Chef
Writing Compossible Community Cookbooks using Chef Custom Resources
-
A Community Cookbook Origin Story
https://www.flickr.com/photos/pesotum/171923662
-
Ops we need MyFace deployed by
end of day!
https://upload.wikimedia.org/wikipedia/commons/9/9a/Meeting_in_Air_Force_One_conference_room.jpg
-
http://joebideneatsicecream.tumblr.com/
No worries Ill whip it up in Chef
Salt and Straw is way expensive
-
https://en.wikipedia.org/wiki/Cycling#/media/File:Leon_Georget_1909.jpg
v1.0: Simple and Elegant Design
-
https://www.flickr.com/photos/christopheducamp/7463696734
I Should Share This!
-
http://www.slate.com/content/dam/slate/articles/news_and_politics/politics/2015/05/150519_POL_MissionAccomplished.jpg.CROP.promovar-mediumlarge.jpg
-
https://pixabay.com/en/clock-wall-clock-brick-wall-old-1250204/
-
Uh Oh
-
https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Richard_Stallman_by_Anders_Brenna_03.jpg/1280px-Richard_Stallman_by_Anders_Brenna_03.jpg
Time to Put On My Maintainer Hat
-
Things Are About to Get Weird
https://en.wikipedia.org/wiki/Penny-farthing#/media/File:Pennyfarthing-1886.jpg
-
https://en.wikipedia.org/wiki/Smoke_screen#/media/File:2010_0515_rama_4_and_sathorn_22a.JPG
-
https://en.wikipedia.org/wiki/Smoke_screen#/media/File:2010_0515_rama_4_and_sathorn_22a.JPG
Database cookbook
-
How Do We Right the Ship
https://upload.wikimedia.org/wikipedia/commons/b/b6/Cougar_Ace_on_side_%28starboard_side%29.jpg
-
Scrap it and Start Over
-
Apache Tomcat
-
Quick Sidebar
-
Oh Geez Not Tomcat?
-
I hate Java!
-
All the cool kids write JS
-
https://www.flickr.com/photos/jamescridland/613445810
-
https://www.flickr.com/photos/jamescridland/613445810
Me
-
https://www.flickr.com/photos/jamescridland/613445810
MeYou
-
https://www.flickr.com/photos/jamescridland/613445810
Blah BlahTomcat Blah Blah Blah Blah Blah Blah
-
https://www.flickr.com/photos/jamescridland/613445810
Blah BlahTomcat Blah Blah Blah Blah Blah Blah
Node
-
https://www.flickr.com/photos/jamescridland/613445810
Blah BlahTomcat Blah Blah Blah Blah Blah Blah
Node Rust
-
Web Stuff
JAVA XML
pixabay.com & Wikimedia Commons
Tomcat 101
http://pixabay.com
-
End Sidebar(I told you itd be quick)
-
Why is Tomcat Such a Great Example
https://pixabay.com/en/cat-siberian-tomcat-1086330/
-
https://pixabay.com/en/ruins-pretoria-building-stones-664869/
It Was Completely Falling Apart
-
https://www.flickr.com/photos/bitterjug/7670055210
It Attempted to Automate Complex Software
-
pixabay.com
It Used a Rigid Monolithic Design
-
Matt Groening
It Followed the Natural Cookbook Progression
-
https://upload.wikimedia.org/wikipedia/commons/7/79/Operation_Upshot-Knothole_-_Badger_001.jpg
Nuke it and Start Over Right?
-
https://www.flickr.com/photos/39908901@N06/13963173985
Nope. Lets Think This Through
-
What should a community cookbook look like?
Community Tomcat vs. In House Tomcat Cookbook Scope
Pre-rewrite Checklist
What are the building blocks of a Tomcat Cookbook?
-
Whats the Job of a Community Cookbook Anyways?
https://static.pexels.com/photos/56002/pexels-photo-56002.jpeg
-
Provide simple interfaces to compossible resources that empower users to write their own cookbooks which aid in the automation of
highly customized and complex software environments
Source: Me
Community cookbooks should:
-
simple interfaces
https://en.wikipedia.org/wiki/History_of_Lego#/media/File:Lego_dublo_arto_alanenpaa_5.JPG
-
compossible resources
https://pixabay.com/en/lego-lego-duplo-building-built-190704/
-
empower users to write their own cookbooks
https://www.flickr.com/photos/mr_t_in_dc/4766284256
-
highly customized and complex software environments
https://pixabay.com/en/lego-legoland-legostadt-186034/
-
What should a community cookbook look like?
Community Tomcat vs. In House Tomcat Cookbook Scope
Pre-rewrite Checklist
What are the building blocks of a Tomcat Cookbook?
-
Community Tomcat vs. Private Tomcat Cookbook Scope
https://commons.wikimedia.org/wiki/File:2_duplo_lego_bricks.jpg
-
MyCorp Tomcat Community Tomcat
Usage pattern Opinionated Flexible
Platform Support Single Platform (usually) Multi-platform
Tuneables Limited Every possible thing
-
MyCorp Tomcat Community Tomcat
Usage pattern Opinionated Flexible
Platform Support Single Platform (usually) Multi-platform
Tuneables Limited Every possible thing
-
MyCorp Tomcat Community Tomcat
Usage pattern Opinionated Flexible
Platform Support Single Platform (usually) Multi-platform
Tuneables Limited Every possible thing
-
MyCorp Tomcat Community Tomcat
Usage pattern Opinionated Flexible
Platform Support Single Platform (usually) Multi-platform
Tuneables Limited Every possible thing
-
What should a community cookbook look like?
Community Tomcat vs. In House Tomcat Cookbook Scope
Pre-rewrite Checklist
What are the building blocks of a Tomcat Cookbook?
-
What are the building blocks of a Tomcat Cookbook?
https://en.wikipedia.org/wiki/Lego#/media/File:Lego_Color_Bricks.jpg
-
App Binary
Config
Service Management
Components of a Simple Cookbook
-
App Binary
Config
Service Management
tomcat_install
tomcat_config?
tomcat_service
Component to Custom Resource Mapping
-
tomcat_install scope
Fetch artifact Specify a version Install artifact to directory Set user / group permissions on the install
-
Time to Generate the Cookbook
-
Even More Important
-
Install Your App Binary
-
tomcat_config scope
Allow passing a monolithic XML config blob in via Ruby.
Pretty sure this isnt possible. Good PRs accepted!
-
Test Recipe is Your Design
-
tomcat_service scope
Install init script / config Allow start/stop/restart/enable actions on the service Work with sys-v, upstart, systemd init
-
Define Your Service
-
Put it All Together
-
What should a community cookbook look like?
Community Tomcat vs. In House Tomcat Cookbook Scope
Pre-rewrite Checklist
What are the building blocks of a Tomcat Cookbook?
-
Custom Resource Time
https://en.wikipedia.org/wiki/Lego#/media/File:Lego_Color_Bricks.jpg
-
Basic Custom Resource
Properties: Variables you pass in
Actions: One or more things the resource can do
Provides: Name of the resource and a distro to run it on (optional)
Action Class: Helper methods for use in the actions (optional, but handy)
-
Create the Resource
-
Example of Properties
-
Example of Actions
-
Example of Action Class
-
Example of Provides
-
service_sysv_init.rb
service_upstart.rb
service_systemd.rb
tomcat_service to Init Mapping
RHEL < 7 Amazon Linux SUSE < 13 Debian < 8
Ubuntu < 15.10
Debian 8+ SUSE 13+ Ubuntu 16.04+ RHEL 7+ Fedora
-
Provides is Magic
-
http://i.bullfax.com/imgs/3d20fd81ba73b7479088e77b363a5a1e690b3e52.jpg
Platform Support is Done!
-
http://i.bullfax.com/imgs/3d20fd81ba73b7479088e77b363a5a1e690b3e52.jpg
Oh We Forgot That One Platform
-
http://i.bullfax.com/imgs/3d20fd81ba73b7479088e77b363a5a1e690b3e52.jpg
PRs Welcome
-
one more thing
-
https://upload.wikimedia.org/wikipedia/commons/4/47/StateLibQld_1_100348.jpg
Lets Test This Thing
-
https://en.wikipedia.org/wiki/Runway_(fashion)#/media/File:ModelsCatwalk.jpg
Cookstyle
-
http://a.fod4.com/images/user_photos/1356028/cea985e2ee743a14e6f466860b082381_width_640x.jpg
Foodcritic
-
https://www.flickr.com/photos/ell-r-brown/20267645405/in/photostream/
InSpec
-
Simple Inspec Tests
-
Test Kitchen To Tie It All Together
-
Test It All
-
Kitchen-dokken in Travis CI is Also Magic
-
Design
Test Cookbook
Resources
Testing
Awesomeness
-
Read the Docs For More Cool Stuff
https://www.flickr.com/photos/120920526@N08/15094478519
https://docs.chef.io/custom_resources.html