From 2d6f08fcce8a8369f052df229003a2ad5b1c7b4f Mon Sep 17 00:00:00 2001
From: "christopher.lawrence" <chris.lawrence@puppet.com>
Date: Mon, 30 Mar 2020 12:19:25 +0100
Subject: [PATCH] added in and tidy up of metrics

---
 data/nodes/peadm-01.pe.yaml                   |  6 +++++-
 data/nodes/puppet.plaform9.puppet.net         |  6 ++++++
 manifests/site.pp                             | 20 -------------------
 site-modules/profile/manifests/monitor.pp     | 11 ++++++++++
 .../profile/manifests/puppetserver.pp         |  7 ++++++-
 .../manifests/puppetserver/bootstrap.pp       |  9 ---------
 .../manifests/puppetserver/nfs_export.pp      | 19 ++++++++++++------
 .../profile/manifests/tools/docker_install.pp | 12 ++++++-----
 .../{ => tools}/metrics_dashboard.pp          |  0
 .../profile/manifests/tools/nfs_mount.pp      | 18 ++++++++---------
 site-modules/role/manifests/monitoring.pp     |  6 ++++++
 11 files changed, 63 insertions(+), 51 deletions(-)
 create mode 100644 data/nodes/puppet.plaform9.puppet.net
 create mode 100644 site-modules/profile/manifests/monitor.pp
 rename site-modules/profile/manifests/{ => tools}/metrics_dashboard.pp (100%)
 create mode 100644 site-modules/role/manifests/monitoring.pp

diff --git a/data/nodes/peadm-01.pe.yaml b/data/nodes/peadm-01.pe.yaml
index 4dc744a..c5cd3f5 100644
--- a/data/nodes/peadm-01.pe.yaml
+++ b/data/nodes/peadm-01.pe.yaml
@@ -1,3 +1,7 @@
 ---
-profile::puppetserver::authority: false
+profile::puppetserver::authority: true
 profile::puppetserver::authority::validity: '7200'
+profile::puppetserver::nfs_export: true
+puppet_enterprise::profile::master::r10k_remote: "git@github.com:chlawren/control-repo.git"
+puppet_enterprise::profile::master::r10k_private_key: "/etc/puppetlabs/puppetserver/ssh/id-control_repo.rsa"
+puppet_enterprise::profile::master::code_manager_auto_configure: true
diff --git a/data/nodes/puppet.plaform9.puppet.net b/data/nodes/puppet.plaform9.puppet.net
new file mode 100644
index 0000000..4d8b431
--- /dev/null
+++ b/data/nodes/puppet.plaform9.puppet.net
@@ -0,0 +1,6 @@
+---
+profile::puppetserver::authority: true
+profile::puppetserver::authority::validity: '7200'
+puppet_enterprise::profile::master::r10k_remote: "git@github.com:chlawren/control-repo.git"
+puppet_enterprise::profile::master::r10k_private_key: "/etc/puppetlabs/puppetserver/ssh/id-control_repo.rsa"
+puppet_enterprise::profile::master::code_manager_auto_configure: true
diff --git a/manifests/site.pp b/manifests/site.pp
index 22d49b1..e0769a9 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -36,26 +36,6 @@ node 'puppet' {
 
 }
 
-node 'peadm-03.pe' {
-
-    include profile::tools::docker_install
-    include profile::tools::nfs_mount
-
-}
-
-node 'agent-02' {
-
-    include profile::tools::nfs_mount
-
-}
-
-node 'peadm-04.pe' {
-    
-    include profile::metrics_dashboard
-    include profile::tools::nfs_mount
-
-}
-
 node default {
 
     if $trusted['extensions']['pp_role'] {
diff --git a/site-modules/profile/manifests/monitor.pp b/site-modules/profile/manifests/monitor.pp
new file mode 100644
index 0000000..581c856
--- /dev/null
+++ b/site-modules/profile/manifests/monitor.pp
@@ -0,0 +1,11 @@
+class profile::monitoring (
+  Boolean $docker_install = false,
+  Boolean $nfs_mount      = false,
+) {
+  if $docker_install {
+    class { '::profile::tools::docker_install': }
+  }
+  if $nfs_mount {
+    class { '::profile::tools::nfs_mount': }
+  }
+}
diff --git a/site-modules/profile/manifests/puppetserver.pp b/site-modules/profile/manifests/puppetserver.pp
index 0cb6d8a..e2eb0f8 100644
--- a/site-modules/profile/manifests/puppetserver.pp
+++ b/site-modules/profile/manifests/puppetserver.pp
@@ -1,7 +1,8 @@
 class profile::puppetserver (
   Boolean $puppetserver      = true,
   Boolean $authority         = false,
-  Boolean $nfs_export        = true,
+  Boolean $nfs_export        = false,
+  Boolean $metrics_collect   = false,
 ) {
   if $puppetserver {
     class { '::profile::puppetserver::bootstrap': }
@@ -12,4 +13,8 @@ class profile::puppetserver (
   if $nfs_export {
     class { '::profile::puppetserver::nfs_export': }
   }
+  if $metrics_collect {
+    include metrics_collector
+  fi
+  }
 }
diff --git a/site-modules/profile/manifests/puppetserver/bootstrap.pp b/site-modules/profile/manifests/puppetserver/bootstrap.pp
index 2e738a9..033650a 100644
--- a/site-modules/profile/manifests/puppetserver/bootstrap.pp
+++ b/site-modules/profile/manifests/puppetserver/bootstrap.pp
@@ -31,13 +31,4 @@ class profile::puppetserver::bootstrap {
     group  => 'pe-puppet',
     mode   => '0750',
   }
-
-#  pe_node_group { 'puppetmaster-dashboard':
-#      ensure               => 'present',
-#      classes              => {'puppet_metrics_dashboard::profile::master::postgres_access' => { }},
-#      description          => 'Puppetmaster Dashboard workaround group',
-#      environment          => 'production',
-#      parent               => 'All Nodes',
-#      rule                 => ['or', ['=', 'name', $facts['puppet_master_server']]],
-#    }
 }
diff --git a/site-modules/profile/manifests/puppetserver/nfs_export.pp b/site-modules/profile/manifests/puppetserver/nfs_export.pp
index 59f9ab2..8b62124 100644
--- a/site-modules/profile/manifests/puppetserver/nfs_export.pp
+++ b/site-modules/profile/manifests/puppetserver/nfs_export.pp
@@ -1,16 +1,23 @@
 class profile::puppetserver::nfs_export (
+   
+  $domain         = $::domain,
+  $server_enabled = true, 
+  $export_root    = '/export', 
+  $nfs_v4         = 'true',
+  $server_export  = '/opt/puppetlabs/puppet-metrics-collector',
+  $export_mount   = 'mounted',
 
 ) {
     class { '::nfs':
-      server_enabled => true,
-      nfs_v4 => true,
-      nfs_v4_idmap_domain => 'peadm.01.pe',
-      nfs_v4_export_root  => '/export',
+      server_enabled => $server_enabled,
+      nfs_v4 => $nfs_v4,
+      nfs_v4_idmap_domain => $domain,
+      nfs_v4_export_root  => '$export_root',
       nfs_v4_export_root_clients => '*(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash)',
     }
 
-    nfs::server::export { '/opt/puppetlabs/puppet-metrics-collector':
-      ensure  => 'mounted',
+    nfs::server::export { $server_export:
+      ensure  => $export_mount,
       clients => '*(rw,insecure,async,no_root_squash,no_subtree_check)',
     }
 }
diff --git a/site-modules/profile/manifests/tools/docker_install.pp b/site-modules/profile/manifests/tools/docker_install.pp
index 44a1ec3..5df58de 100644
--- a/site-modules/profile/manifests/tools/docker_install.pp
+++ b/site-modules/profile/manifests/tools/docker_install.pp
@@ -2,14 +2,16 @@ class profile::tools::docker_install (
   $docker_version  = '19.03',
   $compose_version = '1.24',
 ) {
-  class { 'docker':
-    ensure  => present,
-    version => '$docker_version',
-  }
+  yumrepo { 'docker':
+    ensure   => 'present',
+    baseurl  => 'https://download.docker.com/linux/centos/7/x86_64/stable',
+    descr    => 'Docker',
+    gpgcheck => 'True',
+    gpgkey   => 'https://download.docker.com/linux/centos/gpg',
+}
 
  class {'docker::compose':
   ensure  => present,
   version => '$compose_version',
   }
-
 }
diff --git a/site-modules/profile/manifests/metrics_dashboard.pp b/site-modules/profile/manifests/tools/metrics_dashboard.pp
similarity index 100%
rename from site-modules/profile/manifests/metrics_dashboard.pp
rename to site-modules/profile/manifests/tools/metrics_dashboard.pp
diff --git a/site-modules/profile/manifests/tools/nfs_mount.pp b/site-modules/profile/manifests/tools/nfs_mount.pp
index a392771..06b801b 100644
--- a/site-modules/profile/manifests/tools/nfs_mount.pp
+++ b/site-modules/profile/manifests/tools/nfs_mount.pp
@@ -2,14 +2,14 @@ class profile::tools::nfs_mount (
   $server = 'puppet',
 ) {
   class { '::nfs':
-      server_enabled => false,
-      client_enabled => true,
-      nfs_v4_client => false,
-      nfs_v4_idmap_domain => $::domain,
-    }
+    server_enabled => false,
+    client_enabled => true,
+    nfs_v4_client => false,
+    nfs_v4_idmap_domain => $::domain,
+   }
 
-    nfs::client::mount { '/mnt/puppet-metrics-collector':
-        server => $server,
-        share => '/export/puppet-metrics-collector',
-    }
+  nfs::client::mount { '/mnt/puppet-metrics-collector':
+    server => $server,
+    share => '/export/puppet-metrics-collector',
+  }
 }
diff --git a/site-modules/role/manifests/monitoring.pp b/site-modules/role/manifests/monitoring.pp
new file mode 100644
index 0000000..fcc1eef
--- /dev/null
+++ b/site-modules/role/manifests/monitoring.pp
@@ -0,0 +1,6 @@
+class role::metrics {
+
+    include profile::base
+    include profile::tools::nfs_mount
+    include profile::tools::docker_install
+}