Alexandros Kosiaris has uploaded a new change for review.
https://gerrit.wikimedia.org/r/239369
Change subject: WIP: modularize otrs
......................................................................
WIP: modularize otrs
This was a single role before, move it to the module/role paradigm,
splitting up the various classes and moving templates/files around. Add
tests as well
TODO: Write a better commit message for this
Change-Id: I04cc8d734cd83acc2ce4c4d26cea9c0fbd1da2ec
---
M manifests/role/otrs.pp
R modules/otrs/files/crontab.otrs
R modules/otrs/files/idle_agent_report
R modules/otrs/files/otrs.TicketExport2Mbox.pl
R modules/otrs/files/train_spamassassin
R modules/otrs/files/wmf.ico
A modules/otrs/manifests/init.pp
A modules/otrs/manifests/mail.pp
A modules/otrs/manifests/web.pp
R modules/otrs/templates/Config.pm.erb
R modules/otrs/templates/exim4.conf.otrs.erb
R modules/otrs/templates/system_filter.conf.otrs.erb
R modules/otrs/templates/ticket.wikimedia.org.erb
A modules/otrs/tests/Makefile
A modules/otrs/tests/mail.pp
A modules/otrs/tests/otrs.pp
A modules/otrs/tests/web.pp
17 files changed, 196 insertions(+), 168 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/69/239369/1
diff --git a/manifests/role/otrs.pp b/manifests/role/otrs.pp
index f81f557..7e58032 100644
--- a/manifests/role/otrs.pp
+++ b/manifests/role/otrs.pp
@@ -9,20 +9,14 @@
system::role { 'role::otrs::webserver':
description => 'OTRS Web Application Server',
}
-
- mailalias { 'root':
- recipient => '[email protected]',
- }
-
include standard
- include webserver::apache
- include network::constants
+ include ::otrs
+
include passwords::mysql::otrs
$otrs_database_user = $::passwords::mysql::otrs::user
$otrs_database_pw = $::passwords::mysql::otrs::pass
- $ssl_settings = ssl_ciphersuite('apache-2.2', 'compat', '365')
ferm::service { 'otrs_http':
proto => 'tcp',
@@ -40,165 +34,6 @@
srange => '($EXTERNAL_NETWORKS)',
}
- user { 'otrs':
- home => '/var/lib/otrs',
- groups => 'www-data',
- shell => '/bin/bash',
- managehome => true,
- system => true,
- }
-
- $packages = [
- 'libapache-dbi-perl',
- 'libdbd-mysql-perl',
- 'libgd-graph-perl',
- 'libgd-text-perl',
- 'libio-socket-ssl-perl',
- 'libjson-xs-perl',
- 'libnet-ldap-perl',
- 'libpdf-api2-perl',
- 'libsoap-lite-perl',
- 'libtext-csv-xs-perl',
- 'libtimedate-perl',
- 'mysql-client',
- 'perl-doc',
- ]
-
- package { $packages:
- ensure => 'present',
- }
-
- # can conflict with ferm module
- if ! defined(Package['libnet-dns-perl']){
- package { 'libnet-dns-perl':
- ensure => present,
- }
- }
-
- file { '/opt/otrs/Kernel/Config.pm':
- ensure => 'file',
- owner => 'otrs',
- group => 'www-data',
- mode => '0440',
- content => template('otrs/Config.pm.erb'),
- }
-
- apache::site { 'ticket.wikimedia.org':
- content => template('apache/sites/ticket.wikimedia.org.erb'),
- }
-
- file { '/etc/cron.d/otrs':
- ensure => 'file',
- owner => 'root',
- group => 'root',
- mode => '0444',
- source => 'puppet:///files/otrs/crontab.otrs',
- }
-
- file { '/var/spool/spam':
- ensure => 'directory',
- owner => 'otrs',
- group => 'www-data',
- mode => '0775',
- }
-
- file { '/opt/otrs/bin/otrs.TicketExport2Mbox.pl':
- ensure => 'file',
- owner => 'otrs',
- group => 'www-data',
- mode => '0755',
- source => 'puppet:///files/otrs/otrs.TicketExport2Mbox.pl',
- }
-
- file { '/opt/otrs/bin/cgi-bin/idle_agent_report':
- ensure => 'file',
- owner => 'otrs',
- group => 'www-data',
- mode => '0755',
- source => 'puppet:///files/otrs/idle_agent_report',
- }
-
- file {
'/opt/otrs/var/httpd/htdocs/skins/Agent/default/img/icons/product.ico':
- ensure => 'file',
- owner => 'otrs',
- group => 'www-data',
- mode => '0664',
- source => 'puppet:///files/otrs/wmf.ico',
- }
-
- file { '/usr/local/bin/train_spamassassin':
- ensure => 'file',
- owner => 'root',
- group => 'root',
- mode => '0555',
- source => 'puppet:///files/otrs/train_spamassassin',
- }
-
- file { '/opt/otrs/Kernel/Output/HTML/OTRS':
- ensure => link,
- target => '/opt/otrs/Kernel/Output/HTML/Standard',
- }
-
- sslcert::certificate { 'ticket.wikimedia.org': }
- include ::apache::mod::perl
- include ::apache::mod::rewrite
- include ::apache::mod::ssl
- include ::apache::mod::headers
-
- include clamav
- class { 'spamassassin':
- required_score => '3.5',# (5.0)
- use_bayes => '1', # 0|(1)
- bayes_auto_learn => '0', # 0|(1)
- short_report_template => true, # true|(false)
- trusted_networks => $network::constants::all_networks,
- custom_scores => {
- 'RP_MATCHES_RCVD' => '-0.500',
- 'SPF_SOFTFAIL' => '2.000',
- 'SUSPICIOUS_RECIPS' => '2.000',
- 'DEAR_SOMETHING' => '1.500',
- },
- debug_logging => '--debug spf',
- }
-
- include passwords::exim
- $otrs_mysql_password = $passwords::exim::otrs_mysql_password
-
- class { 'exim4':
- variant => 'heavy',
- config => template('exim/exim4.conf.otrs.erb'),
- filter => template('exim/system_filter.conf.otrs.erb'),
- require => [
- Class['spamassassin'],
- Class['clamav'],
- ]
- }
- include exim4::ganglia
-
- file { '/etc/exim4/defer_domains':
- ensure => present,
- owner => 'root',
- group => 'Debian-exim',
- mode => '0444',
- require => Class['exim4'],
- }
-
- file { '/etc/exim4/wikimedia_domains':
- ensure => present,
- owner => 'root',
- group => 'root',
- mode => '0444',
- source => 'puppet:///files/exim/wikimedia_domains',
- require => Class['exim4'],
- }
-
- cron { 'otrs_train_spamassassin':
- ensure => 'present',
- user => 'root',
- minute => '5',
- command => '/usr/local/bin/train_spamassassin',
- }
-
monitoring::service { 'smtp':
description => 'OTRS SMTP',
check_command => 'check_smtp',
@@ -209,4 +44,10 @@
check_command => 'check_ssl_http!ticket.wikimedia.org',
}
+ # can conflict with ferm module
+ if ! defined(Package['libnet-dns-perl']){
+ package { 'libnet-dns-perl':
+ ensure => present,
+ }
+ }
}
diff --git a/files/otrs/crontab.otrs b/modules/otrs/files/crontab.otrs
similarity index 100%
rename from files/otrs/crontab.otrs
rename to modules/otrs/files/crontab.otrs
diff --git a/files/otrs/idle_agent_report b/modules/otrs/files/idle_agent_report
similarity index 100%
rename from files/otrs/idle_agent_report
rename to modules/otrs/files/idle_agent_report
diff --git a/files/otrs/otrs.TicketExport2Mbox.pl
b/modules/otrs/files/otrs.TicketExport2Mbox.pl
similarity index 100%
rename from files/otrs/otrs.TicketExport2Mbox.pl
rename to modules/otrs/files/otrs.TicketExport2Mbox.pl
diff --git a/files/otrs/train_spamassassin
b/modules/otrs/files/train_spamassassin
similarity index 100%
rename from files/otrs/train_spamassassin
rename to modules/otrs/files/train_spamassassin
diff --git a/files/otrs/wmf.ico b/modules/otrs/files/wmf.ico
similarity index 100%
rename from files/otrs/wmf.ico
rename to modules/otrs/files/wmf.ico
Binary files differ
diff --git a/modules/otrs/manifests/init.pp b/modules/otrs/manifests/init.pp
new file mode 100644
index 0000000..a1d0c8a
--- /dev/null
+++ b/modules/otrs/manifests/init.pp
@@ -0,0 +1,79 @@
+# vim: set ts=4 et sw=4:
+
+class otrs {
+ include otrs::mail
+ include otrs::web
+
+ $packages = [
+ 'libapache-dbi-perl',
+ 'libdbd-mysql-perl',
+ 'libgd-graph-perl',
+ 'libgd-text-perl',
+ 'libio-socket-ssl-perl',
+ 'libjson-xs-perl',
+ 'libnet-ldap-perl',
+ 'libpdf-api2-perl',
+ 'libsoap-lite-perl',
+ 'libtext-csv-xs-perl',
+ 'libtimedate-perl',
+ 'mysql-client',
+ 'perl-doc',
+ ]
+
+ package { $packages:
+ ensure => 'present',
+ }
+
+ user { 'otrs':
+ home => '/var/lib/otrs',
+ groups => 'www-data',
+ shell => '/bin/bash',
+ managehome => true,
+ system => true,
+ }
+
+ file { '/opt/otrs/Kernel/Config.pm':
+ ensure => 'file',
+ owner => 'otrs',
+ group => 'www-data',
+ mode => '0440',
+ source => template('otrs/Config.pm.erb'),
+ }
+
+ file { '/etc/cron.d/otrs':
+ ensure => 'file',
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ source => 'puppet:///modules/otrs/crontab.otrs',
+ }
+
+ file { '/opt/otrs/bin/otrs.TicketExport2Mbox.pl':
+ ensure => 'file',
+ owner => 'otrs',
+ group => 'www-data',
+ mode => '0755',
+ source => 'puppet:///modules/otrs/otrs.TicketExport2Mbox.pl',
+ }
+
+ file { '/opt/otrs/bin/cgi-bin/idle_agent_report':
+ ensure => 'file',
+ owner => 'otrs',
+ group => 'www-data',
+ mode => '0755',
+ source => 'puppet:///modules/otrs/idle_agent_report',
+ }
+
+ file {
'/opt/otrs/var/httpd/htdocs/skins/Agent/default/img/icons/product.ico':
+ ensure => 'file',
+ owner => 'otrs',
+ group => 'www-data',
+ mode => '0664',
+ source => 'puppet:///modules/otrs/wmf.ico',
+ }
+
+ file { '/opt/otrs/Kernel/Output/HTML/OTRS':
+ ensure => link,
+ target => '/opt/otrs/Kernel/Output/HTML/Standard',
+ }
+}
diff --git a/modules/otrs/manifests/mail.pp b/modules/otrs/manifests/mail.pp
new file mode 100644
index 0000000..5897947
--- /dev/null
+++ b/modules/otrs/manifests/mail.pp
@@ -0,0 +1,74 @@
+class otrs::mail(
+ $otrs_mysql_password,
+ $trusted_networks,
+){
+ include clamav
+ include exim4::ganglia
+
+ class { 'exim4':
+ variant => 'heavy',
+ config => template('otrs/exim4.conf.otrs.erb'),
+ filter => template('otrs/system_filter.conf.otrs.erb'),
+ require => [
+ Class['spamassassin'],
+ Class['clamav'],
+ ]
+ }
+ class { 'spamassassin':
+ required_score => '3.5',# (5.0)
+ use_bayes => '1', # 0|(1)
+ bayes_auto_learn => '0', # 0|(1)
+ short_report_template => true, # true|(false)
+ trusted_networks => $trusted_networks,
+ custom_scores => {
+ 'RP_MATCHES_RCVD' => '-0.500',
+ 'SPF_SOFTFAIL' => '2.000',
+ 'SUSPICIOUS_RECIPS' => '2.000',
+ 'DEAR_SOMETHING' => '1.500',
+ },
+ debug_logging => '--debug spf',
+ }
+
+ mailalias { 'root':
+ recipient => '[email protected]',
+ }
+
+ file { '/etc/exim4/defer_domains':
+ ensure => present,
+ owner => 'root',
+ group => 'Debian-exim',
+ mode => '0444',
+ require => Class['exim4'],
+ }
+
+ file { '/etc/exim4/wikimedia_domains':
+ ensure => present,
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ source => 'puppet:///files/exim/wikimedia_domains',
+ require => Class['exim4'],
+ }
+
+ file { '/usr/local/bin/train_spamassassin':
+ ensure => 'file',
+ owner => 'root',
+ group => 'root',
+ mode => '0555',
+ source => 'puppet:///modules/otrs/train_spamassassin',
+ }
+
+ cron { 'otrs_train_spamassassin':
+ ensure => 'present',
+ user => 'root',
+ minute => '5',
+ command => '/usr/local/bin/train_spamassassin',
+ }
+
+ file { '/var/spool/spam':
+ ensure => 'directory',
+ owner => 'otrs',
+ group => 'www-data',
+ mode => '0775',
+ }
+}
diff --git a/modules/otrs/manifests/web.pp b/modules/otrs/manifests/web.pp
new file mode 100644
index 0000000..0a87617
--- /dev/null
+++ b/modules/otrs/manifests/web.pp
@@ -0,0 +1,12 @@
+class otrs::web {
+ include ::apache::mod::perl
+ include ::apache::mod::rewrite
+ include ::apache::mod::ssl
+ include ::apache::mod::headers
+
+ sslcert::certificate { 'ticket.wikimedia.org': }
+ $ssl_settings = ssl_ciphersuite('apache-2.2', 'compat', '365')
+ apache::site { 'ticket.wikimedia.org':
+ content => template('otrs/ticket.wikimedia.org.erb'),
+ }
+}
diff --git a/templates/otrs/Config.pm.erb b/modules/otrs/templates/Config.pm.erb
similarity index 100%
rename from templates/otrs/Config.pm.erb
rename to modules/otrs/templates/Config.pm.erb
diff --git a/templates/exim/exim4.conf.otrs.erb
b/modules/otrs/templates/exim4.conf.otrs.erb
similarity index 97%
rename from templates/exim/exim4.conf.otrs.erb
rename to modules/otrs/templates/exim4.conf.otrs.erb
index 8dcc4d9..7130b82 100644
--- a/templates/exim/exim4.conf.otrs.erb
+++ b/modules/otrs/templates/exim4.conf.otrs.erb
@@ -28,7 +28,7 @@
domainlist defer_domains = lsearch;CONFDIR/defer_domains
# Standard lists
-hostlist wikimedia_nets = <; <%=
scope.lookupvar('network::constants::all_networks').join(" ; ") %>
+hostlist wikimedia_nets = <; <%= @trusted_networks.join(" ; ") %>
hostlist relay_from_hosts = <; @[] ; 127.0.0.1 ; ::1 ;
# Interfaces
diff --git a/templates/exim/system_filter.conf.otrs.erb
b/modules/otrs/templates/system_filter.conf.otrs.erb
similarity index 100%
rename from templates/exim/system_filter.conf.otrs.erb
rename to modules/otrs/templates/system_filter.conf.otrs.erb
diff --git a/templates/apache/sites/ticket.wikimedia.org.erb
b/modules/otrs/templates/ticket.wikimedia.org.erb
similarity index 100%
rename from templates/apache/sites/ticket.wikimedia.org.erb
rename to modules/otrs/templates/ticket.wikimedia.org.erb
diff --git a/modules/otrs/tests/Makefile b/modules/otrs/tests/Makefile
new file mode 100644
index 0000000..76cd656
--- /dev/null
+++ b/modules/otrs/tests/Makefile
@@ -0,0 +1,13 @@
+MANIFESTS=$(wildcard *.pp)
+OBJS=$(MANIFESTS:.pp=.po)
+TESTS_DIR=$(dir $(CURDIR))
+MODULE_DIR=$(TESTS_DIR:/=)
+MODULES_DIR=$(dir $(MODULE_DIR))
+
+all: test
+
+test: $(OBJS)
+
+%.po: %.pp
+ puppet parser validate $<
+ puppet apply --noop --modulepath $(MODULES_DIR) $<
diff --git a/modules/otrs/tests/mail.pp b/modules/otrs/tests/mail.pp
new file mode 100644
index 0000000..bf35305
--- /dev/null
+++ b/modules/otrs/tests/mail.pp
@@ -0,0 +1,3 @@
+#
+
+include ::otrs::mail
diff --git a/modules/otrs/tests/otrs.pp b/modules/otrs/tests/otrs.pp
new file mode 100644
index 0000000..5188b67
--- /dev/null
+++ b/modules/otrs/tests/otrs.pp
@@ -0,0 +1,3 @@
+#
+
+include ::otrs
diff --git a/modules/otrs/tests/web.pp b/modules/otrs/tests/web.pp
new file mode 100644
index 0000000..7ede5f6
--- /dev/null
+++ b/modules/otrs/tests/web.pp
@@ -0,0 +1,3 @@
+#
+
+include otrs::web.pp
--
To view, visit https://gerrit.wikimedia.org/r/239369
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I04cc8d734cd83acc2ce4c4d26cea9c0fbd1da2ec
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Alexandros Kosiaris <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits