Ottomata has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/282166

Change subject: Create new eventlogging::analytics role in modules/role, use 
scap for deployment
......................................................................

Create new eventlogging::analytics role in modules/role, use scap for deployment

This is only the deployment of a new cloned repo to eventlog1001, it does not 
affect
the running deployment or daemons.

Bug: T118772
Change-Id: Ib37ec5a3aba1a9e018a700d4271b4930d4dc5472
---
M hieradata/common/scap/server.yaml
M manifests/role/eventlogging.pp
M manifests/site.pp
A modules/eventlogging/manifests/dependencies.pp
M modules/eventlogging/manifests/deployment/target.pp
M modules/eventlogging/manifests/init.pp
M modules/eventlogging/manifests/server.pp
M modules/role/manifests/eventbus/eventbus.pp
A modules/role/manifests/eventlogging/README.md
A modules/role/manifests/eventlogging/analytics.pp
10 files changed, 97 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/66/282166/1

diff --git a/hieradata/common/scap/server.yaml 
b/hieradata/common/scap/server.yaml
index 6554a5c..c10d380 100644
--- a/hieradata/common/scap/server.yaml
+++ b/hieradata/common/scap/server.yaml
@@ -49,4 +49,12 @@
   # eventlogging/analytics is the original EventLogging server deployment.
   eventlogging/analytics:
     repository: eventlogging
-    scap_repository: eventlogging/scap/analytics
\ No newline at end of file
+    scap_repository: eventlogging/scap/analytics
+
+  # eventlogging/common is a default deployment of eventlogging to
+  # places that don't need service management or regular updates.
+  # This is meant to be used for CLI uses of eventlogging.  webperf
+  # and stat1002 and others use this.
+  eventlogging/common:
+    repository: eventlogging
+    scap_repository: eventlogging/scap/common
diff --git a/manifests/role/eventlogging.pp b/manifests/role/eventlogging.pp
index 08b3e09..6051696 100644
--- a/manifests/role/eventlogging.pp
+++ b/manifests/role/eventlogging.pp
@@ -76,7 +76,7 @@
     $kafka_server_side_raw_uri = 
"${kafka_base_uri}?topic=eventlogging-server-side"
     $kafka_client_side_raw_uri = 
"${kafka_base_uri}?topic=eventlogging-client-side"
 
-    class { '::eventlogging': }
+    include ::eventlogging
 
     # This check was written for eventlog1001, so only include it there.,
     if $::hostname == 'eventlog1001' {
diff --git a/manifests/site.pp b/manifests/site.pp
index 64bad1a..f38de3e 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -993,7 +993,12 @@
         eventlogging::processor,
         eventlogging::consumer::mysql,
         eventlogging::consumer::files,
-        logging::mediawiki::errors
+        logging::mediawiki::errors,
+        # TODO: This is in trial mode while we migrate away
+        # from manifests/role classes into module/role, and
+        # use scap3 for deployment.
+        eventlogging::analytics
+
 
     include standard
     include base::firewall
diff --git a/modules/eventlogging/manifests/dependencies.pp 
b/modules/eventlogging/manifests/dependencies.pp
new file mode 100644
index 0000000..3580504
--- /dev/null
+++ b/modules/eventlogging/manifests/dependencies.pp
@@ -0,0 +1,31 @@
+# == Class: eventlogging::dependencies
+#
+# EventLogging is a platform for modeling, logging and processing
+# arbitrary schemaed JSON data.
+#
+# This class only installs dependencies.  To set up a deployment target, use
+# the eventlogging::deployment::target define.  If you want to configure an
+# eventlogging server that will run eventlogging service daemons, include the
+# eventlogging::server class, or use one or more of the
+# eventlogging::service::* defines.
+#
+# If you want just a unmanaged clone of eventlogging source code to use,
+# use the eventlogging class.
+#
+class eventlogging::dependencies {
+    # Install all eventlogging dependencies from .debs.
+    require_package([
+        'python-dateutil',
+        'python-jsonschema',
+        'python-kafka',
+        'python-mysqldb',
+        'python-pygments',
+        'python-pykafka',
+        'python-pymongo',
+        'python-six',
+        'python-sqlalchemy',
+        'python-statsd',
+        'python-yaml',
+        'python-zmq',
+    ])
+}
diff --git a/modules/eventlogging/manifests/deployment/target.pp 
b/modules/eventlogging/manifests/deployment/target.pp
index ac489fa..07a46ea 100644
--- a/modules/eventlogging/manifests/deployment/target.pp
+++ b/modules/eventlogging/manifests/deployment/target.pp
@@ -8,6 +8,9 @@
 #
 # == Parameters
 #
+# [*package_name*]
+#   The name of the scap3 deployment package Default: eventlogging/$title
+#
 # [*service_name*]
 #   service_name to pass to scap::target for sudo rules.  Default: undef
 #
@@ -30,16 +33,15 @@
 #   }
 #
 define eventlogging::deployment::target(
+    $package_name = "eventlogging/${title}",
     $service_name = undef,
     $sudo_rules   = undef,
 ) {
     # Install eventlogging dependencies from .deb packages.
-    include eventlogging
+    include eventlogging::dependencies
 
-    # eventlogging code for eventbus is configured to deploy
-    # from the eventlogging/eventbus deploy target
-    # via scap/scap.cfg on the deployment host.
     scap::target { "eventlogging/${title}":
+        package_name      => $package_name,
         deploy_user       => 'eventlogging',
         public_key_source => 
"puppet:///modules/eventlogging/deployment/eventlogging_rsa.pub.${::realm}",
         service_name      => $service_name,
diff --git a/modules/eventlogging/manifests/init.pp 
b/modules/eventlogging/manifests/init.pp
index ca7eb4b..0d62e55 100644
--- a/modules/eventlogging/manifests/init.pp
+++ b/modules/eventlogging/manifests/init.pp
@@ -1,29 +1,14 @@
-# == Class: eventlogging
+# == Class eventlogging
 #
-# EventLogging is a platform for modeling, logging and processing
-# arbitrary schemaed JSON data.
+# TODO: Implement the following as part of T118772:
 #
-# This class only installs dependencies and sets up eventlogging code
-# deployment.  If you want to configure an eventlogging server that
-# will run eventlogging service daemons, include the eventlogging::server
-# class, or use one or more of the eventlogging::service::* defines.
+# Currently, this class only installs EventLogging dependencies
+# and ensures that an unmanaged cloned at /usr/local/src/eventlogging
+# exists.  If you want to update eventlogging code, you must manually
+# pull it.
 #
 class eventlogging {
-    # Install all eventlogging dependencies from .debs.
-    require_package([
-        'python-dateutil',
-        'python-jsonschema',
-        'python-kafka',
-        'python-mysqldb',
-        'python-pygments',
-        'python-pykafka',
-        'python-pymongo',
-        'python-six',
-        'python-sqlalchemy',
-        'python-statsd',
-        'python-yaml',
-        'python-zmq',
-    ])
+    include eventlogging::dependencies
 
     # TEMPORARY HACK!!!
     # TODO: use scap everywhere: T118772
diff --git a/modules/eventlogging/manifests/server.pp 
b/modules/eventlogging/manifests/server.pp
index 234c716..34bd6ec 100644
--- a/modules/eventlogging/manifests/server.pp
+++ b/modules/eventlogging/manifests/server.pp
@@ -54,7 +54,7 @@
     $eventlogging_path   = '/srv/deployment/eventlogging/eventlogging',
 )
 {
-    require ::eventlogging
+    require ::eventlogging::dependencies
 
     group { 'eventlogging':
         ensure => present,
diff --git a/modules/role/manifests/eventbus/eventbus.pp 
b/modules/role/manifests/eventbus/eventbus.pp
index 0d4c766..ed31252 100644
--- a/modules/role/manifests/eventbus/eventbus.pp
+++ b/modules/role/manifests/eventbus/eventbus.pp
@@ -12,6 +12,9 @@
     require ::eventschemas
     require ::role::kafka::main::config
 
+    # eventlogging code for eventbus is configured to deploy
+    # from the eventlogging/eventbus deploy target
+    # via scap/scap.cfg on the deployment host.
     eventlogging::deployment::target { 'eventbus':
         service_name        => 'eventlogging-service-eventbus',
     }
diff --git a/modules/role/manifests/eventlogging/README.md 
b/modules/role/manifests/eventlogging/README.md
new file mode 100644
index 0000000..2840649
--- /dev/null
+++ b/modules/role/manifests/eventlogging/README.md
@@ -0,0 +1,18 @@
+# EventLogging role classes
+
+At the very least, each of these classes sets up a distinct scap deployment
+target for deploying the EventLogging python codebase.  The
+eventlogging::deployment::target define in the eventlogging module
+sets up EventLoggging dependencies via the eventlogging::dependencies
+class, and also a scap::target for deploying the eventlogging code.
+
+- analytics: The original Analytics deployment of EventLogging.  This
+  role sets up and manages EventLogging daemon processes for processing
+  Analytics events.
+
+- common: (TODO) A minimal role that only installs dependencies and the
+  codebase. For historical reasons, this is symlinked to
+  /srv/deployment/eventlogging/eventlogging on targets.
+
+TODO: Move eventbus/eventbus.pp role here to role::eventlogging::eventbus.
+
diff --git a/modules/role/manifests/eventlogging/analytics.pp 
b/modules/role/manifests/eventlogging/analytics.pp
new file mode 100644
index 0000000..c269b56
--- /dev/null
+++ b/modules/role/manifests/eventlogging/analytics.pp
@@ -0,0 +1,15 @@
+# == Class role::eventlogging::analytics
+#
+class role::eventlogging::analytics {
+    system::role { 'role::eventlogging::analytics':
+        description => 'EventLogging Analytics Processor and Consumer',
+    }
+
+    eventlogging::deployment::target { 'analytics':
+        # TODO: Do we need this sudo rule for 'eventlogging' user here?
+        # Allow eventlogging user to run eventloggingctl as root.
+        # sudo_rules => ['ALL=(root) NOPASSWD: /sbin/eventloggingctl *']
+    }
+
+    # TODO: Move manifests/role/eventlogging.pp classes here.
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/282166
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib37ec5a3aba1a9e018a700d4271b4930d4dc5472
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ottomata <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to