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