ReleaseEngineering/PuppetAgain: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
No edit summary
Line 1: Line 1:
PuppetAgain is an implementation of configuration management with puppet for Mozilla release engineering.  It is intended to make machine management easier and more flexible for release engineering, while also making that management transparent enough that it can be reliably duplicated by users outside of the company.
  A sysadmin asked the Architect,
    "What's the best way to install a new system?"
  The Architect answered,
    "Turn it on."
  The sysadmin was enlightened.


= Documentation - Manifests & Modules =
= Documentation - Manifests & Modules =


The Puppet manifests themselves are documented here.  Any new modules should be added to the proper list below.
The Puppet manifests themselves are documented here.  Any new modules should be added to the proper list below.
== Stages ==
Stages need to be defined globally in Puppet manifests, and this is done in <tt>manifests/stages.pp</tt>.  The following stages are available, aside from 'main', the default stage.
* network - This stage should handle any network related configurations for some specific cases (like AWS)
* packagesetup - This stage should handle any preliminaries required for package installations, so that subsequent package installations do not need to require them explicitly.
* users -  This stage creates user accounts; while this is normally automatically required, the requirement doesn't work with the temporary 'darwinuser' type.
== Nodes ==
<tt>manifests/nodes.pp</tt> defines all of the nodes the puppet masters recognize.  Note that all nodes are defined for all masters.
In anticipation of using an external node classifier (ENC), node definitions should only include classes - do not define any resources within nodes.  In general, the included classes should be in the [[ReleaseEngineering/Puppet/Modules/toplevel|toplevel]] module.
Host-specific values are specified as node-scope variables, as these are easier to represent in an ENC.  Such variables (including some Puppet gotchas) are described in [[ReleaseEngineering/PuppetAgain/node-scope variables|node-scope variables]].
== extlookup/ ==
We store <tt>csv</tt> files pertaining to the <tt>[[ReleaseEngineering/Puppet/Modules/config|Config]]</tt> module here (under <tt>manifests/extlookup/</tt>). Expect to find the local secrets details and possibly a symlink to a local-config in this dir.


== Modules ==
== Modules ==
Line 95: Line 80:


Custom functions, types, and providers are documented in the modules that implement them.  Most are in [[ReleaseEngineering/PuppetAgain/Modules/shared|shared]].
Custom functions, types, and providers are documented in the modules that implement them.  Most are in [[ReleaseEngineering/PuppetAgain/Modules/shared|shared]].
== Stages ==
Stages need to be defined globally in Puppet manifests, and this is done in <tt>manifests/stages.pp</tt>.  The following stages are available, aside from 'main', the default stage.
* network - This stage should handle any network related configurations for some specific cases (like AWS)
* packagesetup - This stage should handle any preliminaries required for package installations, so that subsequent package installations do not need to require them explicitly.
* users -  This stage creates user accounts; while this is normally automatically required, the requirement doesn't work with the temporary 'darwinuser' type.
== Nodes ==
<tt>manifests/nodes.pp</tt> defines all of the nodes the puppet masters recognize.  Note that all nodes are defined for all masters.
In anticipation of using an external node classifier (ENC), node definitions should only include classes - do not define any resources within nodes.  In general, the included classes should be in the [[ReleaseEngineering/Puppet/Modules/toplevel|toplevel]] module.
Host-specific values are specified as node-scope variables, as these are easier to represent in an ENC.  Such variables (including some Puppet gotchas) are described in [[ReleaseEngineering/PuppetAgain/node-scope variables|node-scope variables]].
== extlookup/ ==
We store <tt>csv</tt> files pertaining to the <tt>[[ReleaseEngineering/Puppet/Modules/config|Config]]</tt> module here (under <tt>manifests/extlookup/</tt>). Expect to find the local secrets details and possibly a symlink to a local-config in this dir.


= How To =
= How To =
canmove, Confirmed users
1,394

edits

Navigation menu