Gilles has uploaded a new change for review.

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

Change subject: [WIP] Apache Traffic Server role
......................................................................

[WIP] Apache Traffic Server role

This role only aims to cache thumbnails generated by thumbor,
it doesn't try to cache articles. The rationale is that we might want
to put ATS in front of the upload cache in production.

Purging hasn't been tested/implemented yet.

Bug: T112949
Change-Id: I289825e4b838a187dc6baf593c90102da2529df8
---
M puppet/hieradata/common.yaml
A puppet/modules/role/manifests/trafficserver.pp
A puppet/modules/role/settings/trafficserver.yaml
A puppet/modules/trafficserver/manifests/init.pp
A puppet/modules/trafficserver/templates/cache.config.erb
A puppet/modules/trafficserver/templates/records.config.erb
A puppet/modules/trafficserver/templates/regex_remap.config.erb
A puppet/modules/trafficserver/templates/remap.config.erb
8 files changed, 94 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/13/242813/1

diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml
index a1bf0fa..e6403f6 100644
--- a/puppet/hieradata/common.yaml
+++ b/puppet/hieradata/common.yaml
@@ -305,6 +305,8 @@
 
 statsd::port: 8125
 
+trafficserver::port: 6090
+
 thumbor::deploy_dir: "%{hiera('mwv::vendor_dir')}/thumbor"
 thumbor::cfg_file: /etc/thumbor.conf
 
diff --git a/puppet/modules/role/manifests/trafficserver.pp 
b/puppet/modules/role/manifests/trafficserver.pp
new file mode 100644
index 0000000..5b4a82b
--- /dev/null
+++ b/puppet/modules/role/manifests/trafficserver.pp
@@ -0,0 +1,15 @@
+# == Class: role::trafficserver
+#
+# Installs an Apache Traffic Server instance, which only caches thumbnails
+# generated by thumbor.
+#
+class role::trafficserver {
+       include ::role::thumbor
+    include ::trafficserver
+
+    mediawiki::settings { 'trafficserver':
+        values => {
+            'wgUploadBaseUrl' => 'http://127.0.0.1:6090',
+        }
+    }
+}
diff --git a/puppet/modules/role/settings/trafficserver.yaml 
b/puppet/modules/role/settings/trafficserver.yaml
new file mode 100644
index 0000000..3a6d379
--- /dev/null
+++ b/puppet/modules/role/settings/trafficserver.yaml
@@ -0,0 +1,2 @@
+forward_ports:
+  6090: 6090
diff --git a/puppet/modules/trafficserver/manifests/init.pp 
b/puppet/modules/trafficserver/manifests/init.pp
new file mode 100644
index 0000000..6a167bc
--- /dev/null
+++ b/puppet/modules/trafficserver/manifests/init.pp
@@ -0,0 +1,60 @@
+# == Class: trafficserver
+#
+# This Puppet class installs and configures an Apache Traffic Server instance.
+#
+# === Parameters
+#
+# [*port*]
+#   Port Apache Traffic Server should listen to.
+#
+class trafficserver (
+    $port
+) {
+    package { 'trafficserver':
+        ensure => 'present'
+    }
+
+    file { '/etc/trafficserver/records.config':
+        content => template('trafficserver/records.config.erb'),
+        mode    => '0644',
+        owner   => 'trafficserver',
+        group   => 'trafficserver',
+        require => Package['trafficserver'],
+    }
+
+    file { '/etc/trafficserver/remap.config':
+        content => template('trafficserver/remap.config.erb'),
+        mode    => '0644',
+        owner   => 'trafficserver',
+        group   => 'trafficserver',
+        require => Package['trafficserver'],
+    }
+
+    file { '/etc/trafficserver/cache.config':
+        content => template('trafficserver/cache.config.erb'),
+        mode    => '0644',
+        owner   => 'trafficserver',
+        group   => 'trafficserver',
+        require => Package['trafficserver'],
+    }
+
+    file { '/etc/trafficserver/regex_remap.config':
+        content => template('trafficserver/regex_remap.config.erb'),
+        mode    => '0644',
+        owner   => 'trafficserver',
+        group   => 'trafficserver',
+        require => Package['trafficserver'],
+    }
+
+    service { 'trafficserver':
+        ensure    => running,
+        provider  => init,
+        require   => Package['trafficserver'],
+        subscribe => [
+            File['/etc/trafficserver/records.config'],
+            File['/etc/trafficserver/remap.config'],
+            File['/etc/trafficserver/cache.config'],
+            File['/etc/trafficserver/regex_remap.config'],
+        ],
+    }
+}
diff --git a/puppet/modules/trafficserver/templates/cache.config.erb 
b/puppet/modules/trafficserver/templates/cache.config.erb
new file mode 100644
index 0000000..5ae9570
--- /dev/null
+++ b/puppet/modules/trafficserver/templates/cache.config.erb
@@ -0,0 +1 @@
+url_regex=.* ttl-in-cache=365d
\ No newline at end of file
diff --git a/puppet/modules/trafficserver/templates/records.config.erb 
b/puppet/modules/trafficserver/templates/records.config.erb
new file mode 100644
index 0000000..d39cd4c
--- /dev/null
+++ b/puppet/modules/trafficserver/templates/records.config.erb
@@ -0,0 +1,12 @@
+CONFIG proxy.config.admin.user_id STRING trafficserver
+CONFIG proxy.config.http.cache.http INT 1
+CONFIG proxy.config.reverse_proxy.enabled INT 1
+CONFIG proxy.config.url_remap.remap_required INT 1
+CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
+CONFIG proxy.config.http.server_ports STRING <%= @port %>
+CONFIG proxy.config.log.logfile_dir STRING /var/log/trafficserver
+CONFIG proxy.config.output.logfile STRING traffic.out
+CONFIG proxy.config.log.logging_enabled INT 3
+CONFIG proxy.config.http.cache.required_headers INT 0
+CONFIG proxy.config.http.insert_response_via_str INT 3
+LOCAL proxy.local.cluster.type INT 3
\ No newline at end of file
diff --git a/puppet/modules/trafficserver/templates/regex_remap.config.erb 
b/puppet/modules/trafficserver/templates/regex_remap.config.erb
new file mode 100644
index 0000000..0d5e51f
--- /dev/null
+++ b/puppet/modules/trafficserver/templates/regex_remap.config.erb
@@ -0,0 +1 @@
+^/images/thumb/([^/]+)/([^/]+)/([^/]+)/([0-9]+)px-.* 
$s://localhost:8888/unsafe/$4x/$s://localhost:8080/images/$1/$2/$3
\ No newline at end of file
diff --git a/puppet/modules/trafficserver/templates/remap.config.erb 
b/puppet/modules/trafficserver/templates/remap.config.erb
new file mode 100644
index 0000000..2a08e62
--- /dev/null
+++ b/puppet/modules/trafficserver/templates/remap.config.erb
@@ -0,0 +1 @@
+map /images/thumb/ http://localhost:8888 @plugin=regex_remap.so 
@pparam=/etc/trafficserver/regex_remap.config
\ No newline at end of file

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I289825e4b838a187dc6baf593c90102da2529df8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Gilles <gdu...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to