Ryan Lane has submitted this change and it was merged.

Change subject: Add labsproxy module for replacing instanceproxy
......................................................................


Add labsproxy module for replacing instanceproxy

Supports [<port>].<instance>.proxy.wmflabs.org syntax
to reach any instance at any port

Change-Id: I10617f504e4902d521fea63326d20865df9de3b0
---
M manifests/role/labsproxy.pp
A modules/labsproxy/files/proxy.conf
A modules/labsproxy/files/proxy.lua
A modules/labsproxy/manifests/init.pp
4 files changed, 52 insertions(+), 6 deletions(-)

Approvals:
  Ryan Lane: Looks good to me, approved
  jenkins-bot: Verified

Objections:
  Hashar: There's a problem with this change, please improve



diff --git a/manifests/role/labsproxy.pp b/manifests/role/labsproxy.pp
index 85ba77b..d625ec5 100644
--- a/manifests/role/labsproxy.pp
+++ b/manifests/role/labsproxy.pp
@@ -60,10 +60,5 @@
 
 # A dynamic HTTP routing proxy, based on nginx+lua+redis
 class role::proxy-project {
-    class { '::redis':
-        persist   => "aof",
-        dir       => "/var/lib/redis",
-        maxmemory => "512MB",
-        monitor   => true
-    }
+    class { '::labsproxy': }
 }
diff --git a/modules/labsproxy/files/proxy.conf 
b/modules/labsproxy/files/proxy.conf
new file mode 100644
index 0000000..e3e361d
--- /dev/null
+++ b/modules/labsproxy/files/proxy.conf
@@ -0,0 +1,14 @@
+server {
+    resolver 10.4.0.1;
+
+    location / {
+        set $backend '';
+        set $vhost '';
+
+        access_by_lua_file /etc/nginx/proxy.lua;
+
+        proxy_redirect off;
+        proxy_pass $backend;
+        proxy_set_header Host $vhost;
+    }
+}
diff --git a/modules/labsproxy/files/proxy.lua 
b/modules/labsproxy/files/proxy.lua
new file mode 100644
index 0000000..77a73d7
--- /dev/null
+++ b/modules/labsproxy/files/proxy.lua
@@ -0,0 +1,14 @@
+-- Lua file run by nginx that does appropriate routing
+-- Gets domain name, figures out instance name from it, and routes there
+local frontend = ngx.re.match(ngx.var.http_host, "^([^:]*)")[1]
+local instance_match = ngx.re.match(frontend, 
"(\\d+)?\\.?([^.]+)\\.proxy\\.wmflabs\\.org$")
+
+local instance_port = 80
+local instance_name = instance_match[2]
+
+if instance_match[1] ~= nil then
+        instance_port = instance_match[1]
+end
+
+ngx.var.backend = "http://"; .. instance_name .. ":" .. instance_port
+ngx.var.vhost = instance_name
diff --git a/modules/labsproxy/manifests/init.pp 
b/modules/labsproxy/manifests/init.pp
new file mode 100644
index 0000000..4476d03
--- /dev/null
+++ b/modules/labsproxy/manifests/init.pp
@@ -0,0 +1,23 @@
+class labsproxy ($redis_maxmemory="512MB") {
+    class { '::redis':
+        persist   => "aof",
+        dir       => "/var/lib/redis",
+        maxmemory => $redis_maxmemory,
+    }
+
+    package { 'nginx-extras': }
+
+    file { '/etc/nginx/sites-available/default':
+        ensure  => 'file',
+        source  => 'puppet:///modules/labsproxy/proxy.conf',
+        require => Package['nginx-extras'],
+        notify  => Service['nginx']
+    }
+
+    file { '/etc/nginx/proxy.lua':
+        ensure  => 'file',
+        source  => 'puppet:///modules/labsproxy/proxy.lua',
+        require => Package['nginx-extras'],
+        notify  => Service['nginx']
+    }
+}

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I10617f504e4902d521fea63326d20865df9de3b0
Gerrit-PatchSet: 3
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: Andrew Bogott <abog...@wikimedia.org>
Gerrit-Reviewer: Hashar <has...@free.fr>
Gerrit-Reviewer: Ryan Lane <rl...@wikimedia.org>
Gerrit-Reviewer: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: coren <mpellet...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot

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

Reply via email to