SIMP Environments
Table of Contents
The term "environment"
The term "environment" is heavily overloaded when discussing SIMP, Puppet, DevOps, and IT in general. We attempt to make the following distinctions:
Puppet environment directory
A single directory at
$codedir/environments/<environment_name>r10k deploycreates one Puppet environment directory per control repository branch.r10k puppetfile install(using default settings) can be run at the top level a Puppet environment directory to deploy its modules from the localPuppetfile.
Puppet environment
A single conceptual Puppet environment
Acts as a global namespace, with its own site manifest(s), modules, Hiera data (Hiera 4+), and Hiera hierarchy (Hiera 5+).
Derives its (deployed) assets from a Puppet environment directory
The standard Puppet sense of an "environment" when Puppet/PE operates independently from SIMP.
Extra (Secondary and Writable) environment directories
Secondary env dir:
/var/simp/environments/<environment_name>Home of rsync/ and site_files/pki_files/files/keydist/
Writable env dir:
/opt/puppetlabs/server/data/puppetserver/simp/environments/Home of
gen_passwd/andssh_autokeys/Used as a location that server-side functions (like
passgen()) are guaranteed to be able to use for saving state.
Secondary and Writable environment directories pose a problem for Puppet scaling:
Load-balanced compile masters must keep the contents of both secondary environment directories in sync on both compile masters
In the future, filesystem alternatives like libkv may provide a way to solve the scaling problems these extra environments pose.
Secondary environment
Assets and information SIMP needs to:
support a specific Puppet environment
maintain independently from the Puppet environment directory
This includes git-unfriendly files, such as secrets (e.g.,
keydist/), and large files distributed byrsync.
Sourced from the secondary environment directories
Writable environment
Puppet server-generated environment-specific SIMP data (e.g.,
passgen()data)data is generated automatically by Puppet functions during catalog compilation
written to/sourced from the Writable environment directories
This includes master-generated data (e.g.,
passgen()), git-unfriendly secrets (e.g.,keydist/), and files distributed byrsync
SIMP "Extra" environment
The combined Secondary environment + Writable environment of the same name
(We probably need a better name for this)
SIMP "Omni" environment
The combined Puppet environment + SIMP Extra (Secondary + Writable) environment of the same name
(We might need a better name for this)
Infrastructure environment
A local site's dedicated internal infrastructure tier
Exists independently from Puppet
Often named something along the lines of "development," "testing, "acceptance," "staging," "production", etc.,
In Puppet circles, this is sometimes referred to an infrastructure as an "application tier" or "permanent test environment"
Environment
Ambiguous as ever, and could mean any of the above
Unless context suggests otherwise, probably means "Puppet environment"
References
(Source for https://draw.io diagrams: )