Status
StakeholdersChris Tessmer Kendall Moore Nicholas Markowski Judith Johnson 
OutcomeWhat did you decide?
Due date
OwnerTrevor Vaughan 

Background

This is a record of the discussion on the 12th regarding the new layout of all SIMP Puppet Modules

As we were working through issues regarding , we started discussing how to bring additional consistency to our module footprint and make it easier to adopt across the board.

Our decision ended up being as follows.

Module Structure

Our modules will be patterned after the Puppet Labs suggested layout du jour. SIMP additions are in bold below.

Each of these items in bold must adhere to the following

  1. They must be disabled by default
  2. They must be name-based where the Boolean true and the Stringsimp amount to the same action.
  3. They must allow for an ENC since we want maximum module uptake where possible
    1. This will look something like the following

      $enable_firewall = defined($::enable_firewall) ? $::enable_firewall : hiera('enable_firewall',false)
      1. Yes, this does mean that these features are disabled by default in the modules. However, they will be enabled by default in simp-core, so we're ensuring maximum safety for downstream users.
      2. Can we make this a function? Is that too much trouble/obfuscation?

Advanced Module Structure

Some modules may manage components that do not easily fit the recommended structure.  

Below are two recommended patterns for complex adaptations:

Modules that manage both client and server

For services that manage both a client and server, introduce a server/ and client/ directory, and apply the recommended structure to each:

NOTE: Many legacy modules will use an earlier pattern in init.pp where the boolean parameters $is_client and $is_server 

Modules that manage their own internal "services"

Action Items