puppet_operations_appliance
Version information
This version is compatible with:
- Puppet Enterprise 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x
- Puppet >= 6.16.0 < 8.0.0
- , , ,
Tasks:
- supportuser
Start using this module
Add this module to your Puppetfile:
mod 'puppetlabs-puppet_operations_appliance', '1.0.0'
Learn more about managing modules with a PuppetfileDocumentation
Puppet Operations Appliance
Table of Contents
- Puppet Operations Appliance
- [Table of Contents](#table-of-contents)
- Supporting Content
Description
The Puppet Operations Appliance is designed to be a central point to which a Puppet Enterprise environment may be monitored and maintained. The appliance collates data and provides read-only access, useful in incident resolution and preventative maintenance.
Setup
What Puppet_Operations_Appliance modifies in your PE Installation
Puppet_Operations_Appliance will Export NFS mounts of key directories from each Puppet Enterprise infrastructure node, while also setting up requirements for gathering of metrics and database access for the Puppet_Operations_Appliance. Open-source software required for the proper functioning of the Puppet_Operations_Appliance will be deployed on the target agent node.
Setup Requirements
Module Dependencies
- derdanne/nfs (>= 2.1.5)
- puppetlabs/postgresql (>= 6.6.0)
- puppetlabs/puppet_operational_dashboards (>= 1.7.0)
- puppetlabs/influxdb (>=1.3.1)
- puppetlabs/stdlib (>= 4.5.0 < 9.0.0)
- puppetlabs/concat (>= 1.1.2 < 7.0.0)
- puppetlabs/transition (>= 0.1.0 < 1.0.0)
- puppet/augeasproviders_core (>= 2.1.5 < 4.0.0)
- puppet/augeasproviders_shellvar (>= 1.2.0 < 5.0.0)
- puppetlabs/apt (>= 2.0.0 < 8.0.0)
- puppet-grafana (>= 3.0.0 < 11.0.0)
- puppet-telegraf (>= 2.0.0 < 6.0.0)
- puppetlabs-apt (>= 4.3.0 < 9.0.0)
- puppetlabs-inifile (>= 2.0.0 < 5.0.0)
Minimum Hardware requirements
AWS EC2 | Cores | RAM | Disk |
---|---|---|---|
m1.medium | 2 CPU | 4GB Memory | 40GB Disk |
OS Restrictions
Puppet_Operations_Appliance will support RHEL / Debian / Ubuntu however due to the additional of PE Client tools in the installation, you are restricted to installing it on a platform with the same OS as the Primary PE Server.
Beginning with Puppet_Operations_Appliance
Puppet_Operations_Appliance has two main classes for use in the installation:
- Puppet_Operations_Appliance::exporter - to be applied to all Puppet infrastructure agents - Console node group "PE Infrastructure Agent"
- Puppet_Operations_Appliance::importer - to be applied to a single node which will be come the Puppet Operations Appliance.
Following the application of these classes to the infrastructure, Puppet Will need to be run on the corresponding agents in the following order:
Infrastructure Agent(s)->Puppet_Operations_Appliance Agent->Infrastructure Agent(s)->Puppet_Operations_Appliance Agent
Usage
The following outlines the main features of Puppet_Operations_Appliance and how to consume them
Live Telemetry Display
The Puppet_Operations_Appliance node will host an instance of the Puppet Operational Dashboard
The Dashboard can be accessed on
URL: http://<Puppet_Operations_Appliance-ip>:3000\ User: admin\ Password: admin
For advanced configuration and documentation please see Puppet Operational Dashboard
Infrastructure node file and log access
The Puppet_Operations_Appliance node will, by default, mount /var/log/
, /opt/puppetlabs
and /etc/puppetlabs
from each of the Puppet Enterprise Infrastructure nodes on the Puppet_Operations_Appliance in the following location, as read-only file systems.
/var/pesupport/<FQDN of Infrastructure node\>/var/log
\
/var/pesupport/<FQDN of Infrastructure node\>/opt/puppetlabs
\
/var/pesupport/<FQDN of Infrastructure node\>/etc/puppetlabs
Optional Configuration
The Puppet_Operations_Appliance Class assumes the Puppet_Operations_Appliance server will mount the shared partitions using the IP address Source designated by the "ipaddress" fact. In any deployment should this assertion not be true, it is necessary to set the following parameter to the source IP address of the Puppet_Operations_Appliance Host:
In Hiera
puppet_operations_appliance::exporter::importer_ips:
- 1.2.3.4
Console Class Declaration
["1.2.3.4"]
The Puppet_Operations_Appliance::Exporter class allows for the NFS mounts to be optionally available, to disable existing mounts, or prevent the mounts from installing in the first place set the following parameter:
In Hiera
puppet_operations_appliance::exporter::nfsmount: false
PE Client tools
The Puppet_Operations_Appliance node will deploy Puppet Client tools for use by Puppet Enterprise on the Puppet_Operations_Appliance platform, For More information please see the Puppet Enterprise Documentation:
A supplementary task is available to generate an RBAC user and role, so that the credentials may be used provided to Puppet Enterprise Support personnel.
Creating Support User
User: pesupport
Role: PE Support Role
The role is intentionally left without permissions, and should be given only the permissions the installing organisation are authorised to grant to Puppet Enterprise Support personnel. For more information on RBAC permissions please see the Puppet Enterprise Documentation
Puppet Enterprise Database Access
The Puppet_Operations_Appliance Platform has a Postgresql client installed, and is granted certificate based access to all Puppet Enterprise Databases on any pe_postgresl node within the current deployment. The access is limited to the SELECT privilege and is therefore READONLY in nature.
To use this function execute the following command from the CLI of the Puppet_Operations_Appliance host
psql "host=$(puppet config print server) port=5432 user=puppet_operations_appliance sslmode=verify-full sslcert=$(puppet config print hostcert) sslkey=$(puppet config print hostprivkey) sslrootcert=$(puppet config print localcacert) dbname=<pe_db_name>"
Where valid options for <pe_db_name> are:
- pe-rbac
- pe-puppetdb
- pe-orchestrator
- pe-inventory
- pe-classifier
- pe-activity
Uninstallation
To Uninstall Puppet_Operations_Appliance from your Puppet Enterprise Infrastructure.
-
Remove the following Classification: Puppet_Operations_Appliance::exporter\ Puppet_Operations_Appliance::importer
-
Add the following classification to the "PE Infrastructure Agent" node group Puppet_Operations_Appliance::remove_exporter
-
Remove the following classification to the "PE Infrastructure Agent" node group Puppet_Operations_Appliance::remove_exporter
-
Run Puppet on all nodes in "PE Infrastructure Agent" node group
-
Decommission the Puppet_Operations_Appliance platform
Limitations
- The Puppet_Operations_Appliance importer class should only be applied one agent node
Known Issues
-
Puppet_Operations_Appliance NFS volumes are mounted RW, but exported RO 26
There is no impact to the end user
Contributions
For feature development + bug reporting:
- A Git Issue should exist or be created per feature or Bug
- Repository should be forked and any changes made by way of PR to the Main Branch
- PRS should always reference a git issue
Supporting Content
Articles
The Support Knowledge base is a searchable repository for technical information and how-to guides for all Puppet products.
Videos
The Support Video Playlist is a resource of content generated by the support team
This Module has the following specific video content available:
Reference
Table of Contents
Classes
puppet_operations_appliance::exporter
: Sets up target nodes with nessary services and access for the puppet_operations_appliance When Applied to the Infrastructure Agent Node grouppuppet_operations_appliance::importer
: Class to consume the resources provided by the exporter class. when applied to a node, all tooling agttributed to puppet_operations_appliancepuppet_operations_appliance::remove_exporter
: disables and removes services and components enabled by the exporter class
Functions
puppet_operations_appliance::get_importer_ips
puppet_operations_appliance::get_postgres_hosts
: Function to provide a list of pe_postgresql hosts to the puppet_operations_appliancepuppet_operations_appliance::get_puppet_servers
: Function to return a list of components running pe_puppetserver to puppet_operations_appliancepuppet_operations_appliance::get_puppetdb_hosts
puppet_operations_appliance::license_uuid
: If no $content parameter specified, tries to read the license file from /etc/puppetlabs/license.key
Tasks
supportuser
: Creates pesupport user and PE Support Role, generated password should be shared with Puppet Enterprise Support personnel
Classes
puppet_operations_appliance::exporter
Sets up target nodes with nessary services and access for the puppet_operations_appliance When Applied to the Infrastructure Agent Node group, Will dynamically configure all matching nodes to allow access to key elements of Puppet Enterprise to the puppet_operations_appliance
Examples
include puppet_operations_appliance::exporter
Parameters
The following parameters are available in the puppet_operations_appliance::exporter
class:
importer_ips
appliance_host
pg_user
pg_group
pg_psql_path
nfsmount_log
nfsmount_etc
nfsmount_opt
logdir
importer_ips
Data type: Array
An array of importer node ip addresses Defaults to the output of a PuppetDB query
Default value: puppet_operations_appliance::get_importer_ips()
appliance_host
Data type: Optional[String]
The certname of the puppet_operations_appliance
Default value: undef
pg_user
Data type: String
The postgres user PE uses
Default value: 'pe-postgres'
pg_group
Data type: String
The postgres group PE uses the default is pg_user
Default value: $pg_user
pg_psql_path
Data type: String
The path to the postgres binary in pe
Default value: '/opt/puppetlabs/server/bin/psql'
nfsmount_log
Data type: Boolean
Trigger to turn NFS Mounts for logging On Or Off
Default value: true
nfsmount_etc
Data type: Boolean
Trigger to turn NFS Mounts for /etc/puppetlabs On Or Off
Default value: true
nfsmount_opt
Data type: Boolean
Trigger to turn NFS Mounts for /opt/puppetlabs On Or Off
Default value: true
logdir
Data type: Enum['/var/log/', '/var/log/puppetlabs/']
Allows the scope of logging to be narrowed
Default value: '/var/log/'
puppet_operations_appliance::importer
Class to consume the resources provided by the exporter class. when applied to a node, all tooling agttributed to puppet_operations_appliance will be set up
Examples
include puppet_operations_appliance::importer
puppet_operations_appliance::remove_exporter
In the event puppet_operations_appliance should be uninstalled on all or some of the exporter nodes, this will stop NFS service, and remove the database components if applied to a postgres node
Examples
include rpuppet_operations_appliance::remove_exporter
Functions
puppet_operations_appliance::get_importer_ips
Type: Puppet Language
The puppet_operations_appliance::get_importer_ips function.
puppet_operations_appliance::get_importer_ips()
The puppet_operations_appliance::get_importer_ips function.
Returns: Array
List of IP addresses of the Puppet_operations_appliance(s) or an empty array
puppet_operations_appliance::get_postgres_hosts
Type: Puppet Language
Function to provide a list of pe_postgresql hosts to the puppet_operations_appliance
puppet_operations_appliance::get_postgres_hosts()
Function to provide a list of pe_postgresql hosts to the puppet_operations_appliance
Returns: Array
List of FQDN
puppet_operations_appliance::get_puppet_servers
Type: Puppet Language
Function to return a list of components running pe_puppetserver to puppet_operations_appliance
puppet_operations_appliance::get_puppet_servers()
Function to return a list of components running pe_puppetserver to puppet_operations_appliance
Returns: Array
List of Fqdn of nodes with the Master profile
puppet_operations_appliance::get_puppetdb_hosts
Type: Puppet Language
The puppet_operations_appliance::get_puppetdb_hosts function.
puppet_operations_appliance::get_puppetdb_hosts()
The puppet_operations_appliance::get_puppetdb_hosts function.
Returns: Array
List of node running Puppetdb
puppet_operations_appliance::license_uuid
Type: Puppet Language
If no $content parameter specified, tries to read the license file from /etc/puppetlabs/license.key
puppet_operations_appliance::license_uuid(Optional[String] $content)
If no $content parameter specified, tries to read the license file from /etc/puppetlabs/license.key
Returns: String
the uuid from a Puppet license file supplied in $content
content
Data type: Optional[String]
An array of puppet_operaions appliance ip addresses Defaults to the output of a PuppetDB query
Tasks
supportuser
Creates pesupport user and PE Support Role, generated password should be shared with Puppet Enterprise Support personnel
Supports noop? false
What are tasks?
Modules can contain tasks that take action outside of a desired state managed by Puppet. It’s perfect for troubleshooting or deploying one-off changes, distributing scripts to run across your infrastructure, or automating changes that need to happen in a particular order as part of an application deployment.
Tasks in this module release
supportuser
Creates pesupport user and PE Support Role, generated password should be shared with Puppet Enterprise Support personnel
Change log
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v1.0.0 (2022-11-09)
Changed
- Rebrand to Puppet_Operations_appliance #85 (MartyEwings)
- (SUP-3734) Switch to Operational Dashboards #84 (MartyEwings)
v0.3.0 (2021-12-03)
Added
- (SUP-2817) Consider the distributed architecture of PE_XL and make log scope configurable #81 (MartyEwings)
v0.2.0 (2021-06-28)
Added
- Make NFS mounts optional #66 (MartyEwings)
Fixed
- (sup-2385) Resolve unresponsive RSAN node as a result of missing NFS Server #64 (MartyEwings)
v0.1.3 (2021-06-10)
Fixed
- Update Readme for Beta Launch #59 (MartyEwings)
0.1.2 (2021-05-07)
Fixed
- (SUP-2412) changed privatekey permissions for psql client #51 (MartyEwings)
- Fix for Issue 49 - New replica installation #50 (MartyEwings)
- Fix #46 (SUP-2384) #47 (MartyEwings)
- (SUP-2386) updating documentation and dependancies [SUP-2386] #45 (MartyEwings)
0.1.1 (2021-01-18)
Fixed
- Metadata and spelling corrections #42 (MartyEwings)
0.1.0 (2021-01-15)
Added
- Documentation and release prep #41 (MartyEwings)
- remove mocha deprecation warnings #39 (MartyEwings)
- {WIP} remove exporter class state from infra nodes #36 (MartyEwings)
- Feature - PE Client tools Deployment #12 (MartyEwings)
- Morgan lillie #11 (morgan-lillie)
- W.I.P. PR2: New functions created to query for each item - calling of functions in importer.pp #10 (liamjohnsexton)
- add codeownerfiles #9 (MartyEwings)
Fixed
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/postgresql (>= 6.6.0 < 9.0.0)
- puppetlabs/puppet_operational_dashboards (>= 1.7.0 < 2.0.0)
- derdanne/nfs (>= 2.1.5 < 3.0.0)
- puppetlabs/stdlib (>= 6.5.0 < 9.0.0)