Your SlideShare is downloading. ×
  • Like
Kokki: Configuration Management Framework
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Kokki: Configuration Management Framework



Published in Technology , Self Improvement
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Kokki: Configuration Management Framework It means “cook” in Finnish Samuel StaufferThursday, March 17, 2011
  • 2. What is it? Infrastructure automation → configuration management Part of provisioning Library and simple command line tool currently no client/server component can use GitHub in place of client/server Alternative to Puppet/Chef/CFengineThursday, March 17, 2011
  • 3. Why not Puppet, Chef, or ... Python It’s a framework/library rather than a complete solution Different needsThursday, March 17, 2011
  • 4. What can I use it for? Creating a template for configuring servers Great for cloud based servers (EC2) Mix in some ‘userscript’ and you have a new web instances in less than 5 minutes. Avoid having to log into servers except when absolutely necessary Configuring servers by hand is tedious, not scalable, and more prone to mistakes. (fine for 1 server, not for 10)Thursday, March 17, 2011
  • 5. Overview Environment: execution environment Resource: describes a file, service, package, etc.. Provider: knows how to execute a resource Kitchen: container for cookbooks Cookbook: container for recipes and libraries Recipe: group of resource definitions Library: utility methods, resources, and providersThursday, March 17, 2011
  • 6. Environment An environment holds and executes resources and actions. config: attribute dictionary of configuration values system: provides access to system information machine architecture, os (linux, darwin, ...), flavor (redhat, ubuntu, debian, ...)Thursday, March 17, 2011
  • 7. Resource A resource is a description of a small part of a configuration Examples: File, Mount, Package, Service, ... File(“/etc/nginx/nginx.conf”, owner = “root”, mode = 0644, content = Template(“nginx/nginx.conf.j2”), notifies = [ (“restart” env.resources[“Service”][“nginx”]), ])Thursday, March 17, 2011
  • 8. Provider A provider is a concrete implementation of a resource. Responsible for checking current state of the resource and taking any steps necessary to make resource match. (e.g. compare the contents of a file and overwrite if it doesn’t match) Each platform can have a provider (e.g. one provider knows how to install packages using ‘apt’ on Ubuntu)Thursday, March 17, 2011
  • 9. Kitchen A Kitchen: is a subclass of an Environment provides a higher level of abstraction for describing roles and resources contains cookbooks which contain recipes and librariesThursday, March 17, 2011
  • 10. Cookbook A cookbook groups recipes, libraries, and default configuration as a unit. For instance a package like “apache2” could have a cookbook. Each cookbook is required to contain a file which holds a dictionary of all configuration values and their defaults. Subdirectories of a cookbook include: recipes, libraries, templates, and files. Multiple recipes can be used for different purposes: apache2.prefork, apache2.worker, etc..Thursday, March 17, 2011
  • 11. Recipe A recipe is a “script” that defines resources. Each recipe receives a global ‘env’ which is the current Environment/Kitchen. A cookbook can have a ‘’ recipe which is the one used if no recipe specified. env.include_recipe(“memcached”) vs env.include_recipe(“munin.node”)Thursday, March 17, 2011
  • 12. Demo, March 17, 2011
  • 13. Current Limitations Currently only supports Debian/Ubuntu easy to support other platforms, just isn’t done No client/server Small userbase No documentationsThursday, March 17, 2011
  • 14. Roadmap Better documentation Client/server Cloud tools (automate EC2 instances) More platforms (though probably not Windows) Pick a different theme? (enough with the cooking/chefs)Thursday, March 17, 2011
  • 15. Thanks! Questions? samuel@descolada.comThursday, March 17, 2011