Sha256: 0e1b3bf9bf00daa40d5613130811723236c206096dbef632037e4a92a30ebf6d

Contents?: true

Size: 1.92 KB

Versions: 65

Compression:

Stored size: 1.92 KB

Contents

## Philosophy

Some general principles of how we use Chef.

* *Chef server is never the repository of truth* -- it only mirrors the truth. A file is tangible and immediate to access.
* Specifically, we want truth to live in the git repo, and be enforced by the Chef server.  This means that everything is versioned, documented and exchangeable. *There is no truth but git, and Chef is its messenger*.
* *Systems, services and significant modifications cluster should be obvious from the `clusters` file*.  I don't want to have to bounce around nine different files to find out which thing installed a redis:server. The existence of anything that opens a port should be obvious when I look at the cluster file.
* *Roles define systems, clusters assemble systems into a machine*.
  - For example, a resque worker queue has a redis, a webserver and some config files -- your cluster should invoke a @whatever_queue@ role, and the @whatever_queue@ role should include recipes for the component services.
  - the existence of anything that opens a port _or_ runs as a service should be obvious when I look at the roles file.
* *include_recipe considered harmful* Do NOT use include_recipe for anything that a) provides a service, b) launches a daemon or c) is interesting in any way. (so: @include_recipe java@ yes; @include_recipe iptables@ no.) You should note the dependency in the metadata.rb. This seems weird, but the breaking behavior is purposeful: it makes you explicitly state all dependencies.
* It's nice when *machines are in full control of their destiny*. Their initial setup (elastic IP, attaching a drive) is often best enforced externally. However, machines should be able independently assert things like load balancer registration which may change at any point in their lifetime.
* It's even nicer, though, to have *full idempotency from the command line*: I can at any time push truth from the git repo to the Chef server and know that it will take hold.

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
ironfan-5.0.11 notes/philosophy.md
ironfan-5.0.10 notes/philosophy.md
ironfan-5.0.8 notes/philosophy.md
ironfan-5.0.5 notes/philosophy.md
ironfan-5.0.4 notes/philosophy.md
ironfan-5.0.3 notes/philosophy.md
ironfan-5.0.2 notes/philosophy.md
ironfan-5.0.1 notes/philosophy.md
ironfan-5.0.0 notes/philosophy.md
ironfan-4.12.3 notes/philosophy.md
ironfan-4.12.2 notes/philosophy.md
ironfan-4.12.1 notes/philosophy.md
ironfan-4.12.0 notes/philosophy.md
ironfan-4.11.5 notes/philosophy.md
ironfan-4.11.4 notes/philosophy.md
ironfan-4.11.3 notes/philosophy.md
ironfan-4.11.2 notes/philosophy.md
ironfan-4.11.2.pre3 notes/philosophy.md
ironfan-4.11.2.pre2 notes/philosophy.md
ironfan-4.11.2.pre notes/philosophy.md