GithubHelp home page GithubHelp logo

cheffian-patterns's Introduction

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....

cheffian-patterns's People

Contributors

pburkholder avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

cheffian-patterns's Issues

antipattern: source of truth

If you expect there to be any source of truth, you don't understand how the technology works.

ITIL CMDB's may have led to a mistaken notion that you can have truth.

Instead, consider a cycle of:
automate - verify - audit, e.g.

We need Kevin removed from these machines....

  • Automate that removal in your IAC, and apply that
  • Verify that Kevin has been removed
  • Audit from underlying system logs just when those commands were implemented (and from Git when the controls were added).

Security Policy violation SECURITY.md

This issue was automatically created by Allstar.

Security Policy Violation
Security policy not enabled.
A SECURITY.md file can give users information about what constitutes a vulnerability and how to report one securely so that information about a bug is not publicly visible. Examples of secure reporting methods include using an issue tracker with private issue support, or encrypted email with a published key.

To fix this, add a SECURITY.md file that explains how to handle vulnerabilities found in your repository. Go to https://github.com/pburkholder/cheffian-patterns/security/policy to enable.

For more information, see https://docs.github.com/en/code-security/getting-started/adding-a-security-policy-to-your-repository.


Created by pburkholder/.allstar and GSA-TTS/.allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

antipattern: fear of open-source

We'll only use this (os|app) because we have a contract and SLA

  • Are you getting what you pay for?
  • Are you cutting yourself off from being self-sustaining (can't look at the code)

Security Policy violation Branch Protection

This issue was automatically created by Allstar.

Security Policy Violation
No protection found for branch master


Created by pburkholder/.allstar and GSA-TTS/.allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.