The Poise Family of Cookbooks 2015-10-02
As part of the continuing development of my Kickstarter work, I’ve written a lot of new cookbooks over the past few months. I would like to summarize a bit about each of them so everyone knows what is out there. Some of these cookbooks are still in the final stages of pre-release testing, so you may need to pull them in from GitHub rather than the Supermarket for a little while longer.
poise-service cookbook unifies
and streamlines creating and starting system services with Chef. Unlike the core
service resource which just handles enabling, disabling, starting, etc
existing service definitions,
poise-service also creates the service
definition for you. This also allows some level of framework independence for
community cookbooks which would otherwise hard-code one specific service
cookbook adds support for Runit to
poise-service. This uses the dependency
inversion helpers in Poise to allow customizing a service resource in a wrapped
cookbook without forking.
poise-ruby cookbook provides
resources for installing Ruby from system packages or RedHat’s SCL packages.
It also has resources for installing Ruby gems, running
bundle install, and
running Ruby scripts or programs with automatic handling for
adds support for using
poise-ruby. This takes
the place of using tools like
rbenv in a server environment.
poise-python cookbook provides
resources for installing Python as
poise-ruby does, with additional support
for the Portable PyPy binary builds to get started with PyPy quickly and easily.
As with Ruby, there are also resources for installing Python packages with
managing virtualenvs, installing
requirements.txt files, and running Python
scripts and commands. This replaces the now-deprecated
follows the Ruby and Python cookbooks in offering support for install
packages using NPM.
poise-languages cookbook has
shared helpers and utilities for the other language management cookbooks, and
will be pulled in automatically as a dependency when needed.
application cookbook provides the
application resource used with the other application deployment cookbooks.
This also contains core mixins used to create application deployment resources
extends the core
git resource to support SSH deploy keys and a few other
supports deploying Ruby web applications like Rails and Sinatra projects. It
supports running application services using Thin and Unicorn, as well as most
standard Rails deployment steps.
adds support for Python web application frameworks like Django and Flask. It
also has support for deploying Celery and Gunicorn as services.
using NPM. It is a bit more generic than the other application language cookbooks
as there aren’t specific deployment steps for different Node.js frameworks, but
it makes it easy to get a package installed and running as a service.
cookbook provides some complete real-world examples of deploying web
applications using these cookbooks, including a pastebin using Django and SQLite
and a todo list using Express and MongoDB.
citadel cookbook provides DSL
helpers for an AWS-based secrets management workflow.
These are cookbooks (and tools) that you may see in my code but are generally for internal use or provide helpers for other cookbooks.
poise cookbook, which kicked off much of
my redesign of Chef cookbooks, provides mixins and utilities to write resources
and providers more effectively without compromising reuse or extensibility.
halite gem is a workflow tool used to
allow writing Chef code as normal Ruby gems and converting to cookbooks on the
fly. This allows leveraging more Ruby development tools like SimpleCov for code
coverage and Bundler for dependency management.
poise-boiler gem keeps a lot of
boilerplate code for my specific Chef workflow in one place so it can be shared
Like these cookbooks? Hiring Chef engineers or tool developers? I'm looking for a new team! Check out my Looking for Group post for details.