Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rebrand to Puppet_Operations_appliance #85

Merged
merged 5 commits into from Nov 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
108 changes: 42 additions & 66 deletions README.md
@@ -1,18 +1,17 @@
# rsan
# Puppet Operations Appliance

#### Table of Contents

- [rsan](#rsan)
- [Puppet Operations Appliance](#puppet-operations-appliance)
- [Table of Contents](#table-of-contents)
- [RSAN is currently part of a Beta Program](#rsan-is-currently-part-of-a-beta-program)
- [Description](#description)
- [Setup](#setup)
- [What RSAN modifies in your PE Installation](#what-rsan-modifies-in-your-pe-installation)
- [What Puppet_Operations_Appliance modifies in your PE Installation](#what-puppet_operations_appliance-modifies-in-your-pe-installation)
- [Setup Requirements](#setup-requirements)
- [Module Dependencies](#module-dependencies)
- [Minimum Hardware requirements](#minimum-hardware-requirements)
- [OS Restrictions](#os-restrictions)
- [Beginning with rsan](#beginning-with-rsan)
- [Beginning with Puppet_Operations_Appliance](#beginning-with-puppet_operations_appliance)
- [Usage](#usage)
- [Live Telemetry Display](#live-telemetry-display)
- [Infrastructure node file and log access](#infrastructure-node-file-and-log-access)
Expand All @@ -26,33 +25,18 @@
- [Contributions](#contributions)


## RSAN is currently part of a Beta Program

The Puppet Enterprise Support team is opening an exciting Beta to help us remove some obstacles our customers have reported when engaging the Support Team for incident resolution.
The Remote Support Service Beta is a combination of a Service provided by the Support team and Puppet Module named RSAN (Remote Support Access Node).
Puppet Enterprise Support will work with you to see how your organization can access the RSAN deployment and how that process should be implemented. , Currently we have two access options; direct as an incoming VPN connection from the Puppet Support Member, or a simple screen share on the video conferencing software of your choice.

How you can get involved


As an existing Puppet Enterprise customer with access to the [Support Portal](http://support.puppet.com), open a Priority 4 ticket with the subject “Participate in the RSAN beta” and a support engineer will engage with you regarding access methods and any help installing the module you may need.


## Description

The Remote Support Access Node (RSAN) will allow Puppet support engineers to conduct live troubleshooting, resolving problems more quickly and efficiently and lead to a reduction of system disruption to the customer.
Customers currently must deliver large volumes of data to support and resolution time is hindered by transfer logistics and privacy concerns. This same data must then be processed by internal support engineers leading to artificially decreased capacity of the support team.

The RSAN platform is designed to be a contained infrastructure endpoint in the customer Puppet Enterprise environment, collating data and access, useful in incident resolution for the target customer deployment.
The node will allow for read-only access to Puppet Enterprise Component Data and configuration, and limit other access through Puppet Enterprise’s built-in Role Based Access Control(RBAC).
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 RSAN modifies in your PE Installation
### What Puppet_Operations_Appliance modifies in your PE Installation

RSAN will Export NFS mounts of key directories from each infrastructure node, while also setting up requirements for gathering of metrics and Database access for the RSAN node.
Software required for the proper functioning of the RSAN will be deployed on the target agent node.
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
Expand All @@ -66,15 +50,13 @@ Software required for the proper functioning of the RSAN will be deployed on the
- puppetlabs/stdlib (>= 4.5.0 < 9.0.0)
- puppetlabs/concat (>= 1.1.2 < 7.0.0)
- puppetlabs/transition (>= 0.1.0 < 1.0.0)
- herculesteam/augeasproviders_core (>= 2.1.5 < 4.0.0)
- herculesteam/augeasproviders_shellvar (>= 1.2.0 < 5.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)
- puppetlabs-puppetserver_gem (>= 1.1.1 < 3.0.0)


#### Minimum Hardware requirements

Expand All @@ -85,49 +67,49 @@ Software required for the proper functioning of the RSAN will be deployed on the

#### OS Restrictions

RSAN 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.
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 rsan
### Beginning with Puppet_Operations_Appliance

RSAN has two main classes for use in the installation:
Puppet_Operations_Appliance has two main classes for use in the installation:

- rsan::exporter - to be applied to all Puppet infrastructure agents - Console node group "PE Infrastructure Agent"
- rsan::importer - to be applied to a single node which will be come the Remote Support Access Node(RSAN)
- 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)->RSAN Agent->Infrastructure Agent(s)->RSAN Agent
Infrastructure Agent(s)->Puppet_Operations_Appliance Agent->Infrastructure Agent(s)->Puppet_Operations_Appliance Agent

## Usage
The following outlines the main features of RSAN and how to consume them
The following outlines the main features of Puppet_Operations_Appliance and how to consume them
### Live Telemetry Display

The Rsan node will host an instance of the [Puppet Operational Dashboard](https://forge.puppet.com/modules/puppetlabs/puppet_operational_dashboards)
The Puppet_Operations_Appliance node will host an instance of the [Puppet Operational Dashboard](https://forge.puppet.com/modules/puppetlabs/puppet_operational_dashboards)

The Dashboard can be accessed on

**URL:** http://<RSAN-ip\>:3000\
**URL:** http://<Puppet_Operations_Appliance-ip\>:3000\
**User:** admin\
**Password:** admin

For advanced configuration and documentation please see [Puppet Operational Dashboard](https://forge.puppet.com/modules/puppetlabs/puppet_operational_dashboards)

### Infrastructure node file and log access

The RSAN node will, by default, mount `/var/log/`, `/opt/puppetlabs` and `/etc/puppetlabs` from each of the Puppet Enterprise Infrastructure nodes on the RSAN platform in the following location, as read-only file systems.
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 RSAN Class assumes the RSAN 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 RSAN Host:
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

```
rsan::exporter::rsan_importer_ips:
puppet_operations_appliance::exporter::importer_ips:
- 1.2.3.4
```

Expand All @@ -137,28 +119,28 @@ Console Class Declaration
["1.2.3.4"]
```

The RSAN::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:
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

```
rsan::exporter::nfsmount: false
puppet_operations_appliance::exporter::nfsmount: false
```

### PE Client tools

The RSAN node will deploy Puppet Client tools for use by Puppet Enterprise on the RSAN platform, For More information please see the Puppet Enterprise Documentation:
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:

[PE Client tools](https://puppet.com/docs/pe/2019.8/installing_pe_client_tools.html)
[PE Client tools](https://puppet.com/docs/pe/latest/installing_pe_client_tools.html)

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.
<br>
#### Creating Support User
<br>
Run the following task against the Primary Puppet Enterprise Server\
For information on executing PE tasks see the [Puppet Enterprise Documentation](https://puppet.com/docs/pe/2019.8/tasks_in_pe.html)\
RSAN::supportuser\
For information on executing PE tasks see the [Puppet Enterprise Documentation](https://puppet.com/docs/pe/latest/tasks_in_pe.html)\
Puppet_Operations_Appliance::supportuser\
When successful the task will return a password, this should be delivered to Puppet Enterprise Support personnel.
<br>
<br>
Expand All @@ -168,18 +150,18 @@ The Task creates the following user and role:

**User:** pesupport

**Role:** PE Suport Role
**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](https://puppet.com/docs/pe/2019.8/rbac_permissions_intro.html)
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](https://puppet.com/docs/pe/latest/rbac_permissions_intro.html)

### Puppet Enterprise Database Access

The RSAN 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](https://www.postgresql.org/docs/11/sql-grant.html) privilege and is therefore READONLY in nature.
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](https://www.postgresql.org/docs/11/sql-grant.html) privilege and is therefore READONLY in nature.

To use this function execute the following command from the CLI of the RSAN host
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=rsan sslmode=verify-full sslcert=$(puppet config print hostcert) sslkey=$(puppet config print hostprivkey) sslrootcert=$(puppet config print localcacert) dbname=<pe_db_name>"
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:
Expand All @@ -193,36 +175,30 @@ Where valid options for <pe_db_name> are:

## Uninstallation

To Uninstall RSAN from your Puppet Enterprise Infrastructure.
To Uninstall Puppet_Operations_Appliance from your Puppet Enterprise Infrastructure.


- Remove the following Classification:
rsan::exporter\
rsan::importer
Puppet_Operations_Appliance::exporter\
Puppet_Operations_Appliance::importer

- Add the following classification to the "PE Infrastructure Agent" node group
rsan::remove_exporter
Puppet_Operations_Appliance::remove_exporter

- Remove the following classification to the "PE Infrastructure Agent" node group
rsan::remove_exporter
Puppet_Operations_Appliance::remove_exporter

- Run Puppet on all nodes in "PE Infrastructure Agent" node group

- Decommission the RSAN platform
- Decommission the Puppet_Operations_Appliance platform


## Limitations
- The RSAN importer class should only be applied one agent node
- All features are currently enabled and can not be individually disabled, this will be addressed in future releases
- The current version does not have any built in remote access capability
- The Puppet_Operations_Appliance importer class should only be applied one agent node

## Known Issues

- PuppetDB Metric Collection fails due to CVE-2020-7943 [27](https://github.com/puppetlabs/RSAN/issues/27)

Please refer to the documentation of Puppet Metrics Dashboard for recommended work arounds

- RSAN NFS volumes are mounted RW, but exported RO [26](https://github.com/puppetlabs/RSAN/issues/26)
- Puppet_Operations_Appliance NFS volumes are mounted RW, but exported RO [26](https://github.com/puppetlabs/Puppet_Operations_Appliance/issues/26)

There is no impact to the end user

Expand Down
@@ -1,19 +1,19 @@
# @return [Array] List of IP addresses for RSAN nodes or an empty array
function rsan::get_rsan_importer_ips() {
# @return [Array] List of IP addresses of the Puppet_operations_appliance(s) or an empty array
function puppet_operations_appliance::get_importer_ips() {
if $settings::storeconfigs {
$rsan_importer_ips =
$importer_ips =
puppetdb_query('facts[value]{
name = "ipaddress" and
certname in resources[certname] {
type = "Class" and
title = "Rsan::Importer" and
title = "Puppet_operations_appliance::Importer" and
nodes {
deactivated is null and
expired is null
}
}
}').map |$data| { $data['value'] }
} else {
$rsan_importer_ips = []
$importer_ips = []
}
}
4 changes: 2 additions & 2 deletions functions/get_postgres_hosts.pp
@@ -1,6 +1,6 @@
# Function to provide a list of pe_postgresql hosts to RSAN
# Function to provide a list of pe_postgresql hosts to the puppet_operations_appliance
# @return [Array] List of FQDN
function rsan::get_postgres_hosts() {
function puppet_operations_appliance::get_postgres_hosts() {
$postgres_hosts =
puppetdb_query('resources[certname] {
type = "Class" and
Expand Down
4 changes: 2 additions & 2 deletions functions/get_puppet_servers.pp
@@ -1,6 +1,6 @@
# Function to return a list of components running pe_puppetserver to RSAN
# Function to return a list of components running pe_puppetserver to puppet_operations_appliance
# @return [Array] List of Fqdn of nodes with the Master profile
function rsan::get_puppet_servers() {
function puppet_operations_appliance::get_puppet_servers() {
$puppet_servers =
puppetdb_query('nodes[certname] {
resources {
Expand Down
2 changes: 1 addition & 1 deletion functions/get_puppetdb_hosts.pp
@@ -1,5 +1,5 @@
# @return [Array] List of node running Puppetdb
function rsan::get_puppetdb_hosts() {
function puppet_operations_appliance::get_puppetdb_hosts() {
if $settings::storeconfigs {
$puppetdb_hosts =
puppetdb_query('resources[certname] {
Expand Down
4 changes: 2 additions & 2 deletions functions/license_uuid.pp
Expand Up @@ -2,9 +2,9 @@
# If no $content parameter specified, tries to read the license file
# from /etc/puppetlabs/license.key
# @param [Optional[String]] content
# An array of rsan ip addresses
# An array of puppet_operaions appliance ip addresses
# Defaults to the output of a PuppetDB query
function rsan::license_uuid(Optional[String] $content) >> String {
function puppet_operations_appliance::license_uuid(Optional[String] $content) >> String {
$license_file_path = '/etc/puppetlabs/license.key'
if $content {
$_content = parseyaml($content)
Expand Down