/
SIMP Environments
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 deploy
creates 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.
- Home of
- 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
.
- This includes git-unfriendly files, such as secrets (e.g.,
- 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: simp_environments.xml)