Skip to content

pburkholder/cheffian-patterns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chef-patterns

Introduction

Welcome to the Library of Chef Patterns and Practices (aka 'LOPP': Library of Patterns and Practices).

About "Patterns" and "Best Practices":

  • Design patterns are solutions to software design problems you find again and again in real-world application development. Patterns are about reusable designs and interactions. You will not use and often cannot use every pattern, and many of them are mutually exclusive. The inspiration comes from TK 'Design Pattterns' and Christopher Alexander's 'Pattern Language'.
  • Anti-patterns are commonly adopted practices that end up being counter-productive. They often have their root in good design patterns but are often taken to an extreme or miss a key element that subvert their good intent.
  • Best Practices are often conflated with mediocritiy, thanks in part to the work of Scott Adams. We have nonetheless identified Chef best practices that all sites should adopt unless there are uniquely compelling circumstances.

Best Practices are Mediocrity

The term 'pattern' herein is used for any single topic describing a single pattern, antipattern or best practice.

Organization

This repo is an interim home to the LOPP, pending transition to a yet-to-be-determined LOPP platform. For the time being:

  • all patterns are described in file in the top level directory
  • the patterns are organized around general topics as follows:
    • language patterns: apply to using the Chef and Ruby language within a cookbook (lump in with cookbook?)
    • cookbook patterns: apply to using cookbooks together as units describing and application or infrastructure. This includes using roles, environments, policyfiles, etc. since those are all about getting cookbooks to work together rationally in the context of converging a node to do usefule work.
    • server patterns: apply to running your Chef server, or Hosted Chef, or doing without a server entirely
    • operating patterns: apply to using Chef servers and clients together, including orchestration (lump in with implementation?)
    • implementation patterns: apply to using these technologies together in ways that aren't captured by above topics.
    • cultural patterns: apply to technology-independent patterns of success.
  • each pattern should be named as topic_(bp|ap|pat)-short-description.md to enable rational sorting, where bp='bestpractice', ap='anitpattern', pat='pattern'. Examples:
    • 'language_pat-use-common-idioms.md'
    • 'cultural_pat-demonstrate-relentlessly.md'
    • 'server_ap-scaling-early.md'
    • 'implementation_bp-version-contral-all-the-things.md'
  • pattern template: See pattern template

Adding new patterns

Candidate patterns should be added to the relevant wiki pages. As of this time, all patterns are candidate patterns.

When we formally adopt patterns through a yet-to-be-determined process, new patterns should be submitted as PRs following standard Github workflow, using the template and the naming conventions described above. Updating this index file will be the responsibility of the maintainers.

Feel free to submit issues that describe candidate patterns prior to the full pattern, but please do so with the intent of writing the pattern if subsequent discussion is encouraging.

Reference material

Administrivia

Copyright

Chef Patterns are in the public domain. In jurisdictions that do not allow for this, they are available under CC0. To the extent possible under law, the person who associated CC0 with their work has waived all copyright and related or neighboring rights to their work.

Maintainers

Peter Burkholder (pburkholder)
Josh O'brien
Mike Tyler
`` etc....

About

Chef Patterns and Anti-patterns

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published