Hashar has uploaded a new change for review.
https://gerrit.wikimedia.org/r/62582
Change subject: lame work in progress
......................................................................
lame work in progress
Change-Id: I8321c83a26ac082fa4ebf7f31ffb5ed5382b5322
---
D manifests/protoproxy.pp
M manifests/role/protoproxy.pp
A modules/protoproxy/manifests/instance.pp
A modules/protoproxy/manifests/package.pp
A modules/protoproxy/manifests/service.pp
5 files changed, 436 insertions(+), 377 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/operations/puppet
refs/changes/82/62582/1
diff --git a/manifests/protoproxy.pp b/manifests/protoproxy.pp
deleted file mode 100644
index 4ad62c8..0000000
--- a/manifests/protoproxy.pp
+++ /dev/null
@@ -1,373 +0,0 @@
-define proxy_configuration( $proxy_addresses, $proxy_server_name,
$proxy_server_cert_name, $proxy_backend, $enabled="false",
$proxy_listen_flags='', $proxy_port='80', $ipv6_enabled='false',
$ssl_backend={} ) {
-
- nginx_site {
- "${name}":
- template => "proxy",
- install => "template",
- enable => $enabled,
- require => Package["nginx"];
- }
-
-}
-
-class protoproxy::proxy_sites {
-
- if $enable_ipv6_proxy {
- $desc = "SSL and IPv6 proxy"
- } else {
- $desc = "SSL proxy"
- }
- system_role { "protoproxy::proxy_sites": description => $desc }
-
- # FIXME: pull from lvs::configuration
- class { "lvs::realserver":
- realserver_ips => $::site ? {
- "pmtpa" => [ "208.80.152.200", "208.80.152.201",
"208.80.152.202", "208.80.152.203", "208.80.152.204", "208.80.152.205",
"208.80.152.206", "208.80.152.207", "208.80.152.208", "208.80.152.209",
"208.80.152.210", "208.80.152.211", "208.80.152.3", "208.80.152.118",
"208.80.152.218", "208.80.152.219", "2620:0:860:ed1a::", "2620:0:860:ed1a::1",
"2620:0:860:ed1a::2", "2620:0:860:ed1a::3", "2620:0:860:ed1a::4",
"2620:0:860:ed1a::5", "2620:0:860:ed1a::6", "2620:0:860:ed1a::7",
"2620:0:860:ed1a::8", "2620:0:860:ed1a::9", "2620:0:860:ed1a::a",
"2620:0:860:ed1a::b", "2620:0:860:ed1a::c", "2620:0:860:ed1a::12",
"2620:0:860:ed1a::13" ],
- "eqiad" => [ "208.80.154.224", "208.80.154.225",
"208.80.154.226", "208.80.154.227", "208.80.154.228", "208.80.154.229",
"208.80.154.230", "208.80.154.231", "208.80.154.232", "208.80.154.233",
"208.80.154.234", "208.80.154.235", "208.80.154.236", "208.80.154.242",
"208.80.154.243", "2620:0:861:ed1a::", "2620:0:861:ed1a::1",
"2620:0:861:ed1a::2", "2620:0:861:ed1a::3", "2620:0:861:ed1a::4",
"2620:0:861:ed1a::5", "2620:0:861:ed1a::6", "2620:0:861:ed1a::7",
"2620:0:861:ed1a::8", "2620:0:861:ed1a::9", "2620:0:861:ed1a::a",
"2620:0:861:ed1a::b", "2620:0:861:ed1a::c", "2620:0:861:ed1a::12",
"2620:0:861:ed1a::13" ],
- "esams" => [ "91.198.174.224", "91.198.174.225",
"91.198.174.233", "91.198.174.234", "91.198.174.226", "91.198.174.227",
"91.198.174.228", "91.198.174.229", "91.198.174.230", "91.198.174.231",
"91.198.174.232", "91.198.174.235", "2620:0:862:ed1a::", "2620:0:862:ed1a::1",
"2620:0:862:ed1a::2", "2620:0:862:ed1a::3", "2620:0:862:ed1a::4",
"2620:0:862:ed1a::5", "2620:0:862:ed1a::6", "2620:0:862:ed1a::7",
"2620:0:862:ed1a::8", "2620:0:862:ed1a::9", "2620:0:862:ed1a::a",
"2620:0:862:ed1a::b", "2620:0:862:ed1a::c" ]
- }
- }
-
- require protoproxy::package
- include protoproxy::service
- include protoproxy::ganglia
-
- # Tune kernel settings
- include generic::sysctl::high-http-performance
-
- $nginx_worker_connections = '32768'
- $nginx_use_ssl = true
-
- install_certificate{ "star.wikimedia.org": }
- install_certificate{ "star.wikipedia.org": }
- install_certificate{ "star.wiktionary.org": }
- install_certificate{ "star.wikiquote.org": }
- install_certificate{ "star.wikibooks.org": }
- install_certificate{ "star.wikisource.org": }
- install_certificate{ "star.wikinews.org": }
- install_certificate{ "star.wikiversity.org": }
- install_certificate{ "star.mediawiki.org": }
- install_certificate{ "star.wikimediafoundation.org": }
- install_certificate{ "star.wikidata.org": }
- install_certificate{ "star.wikivoyage.org": }
- install_certificate{ "unified.wikimedia.org": }
-
- file {
- "/etc/nginx/nginx.conf":
- content => template('nginx/nginx.conf.erb'),
- notify => Service['nginx'],
- require => Package['nginx'];
- }
-
- file {
- "/etc/logrotate.d/nginx":
- content => template('nginx/logrotate'),
- require => Package['nginx'];
- }
-
- nginx_site {
- "localhost.conf":
- install => "true",
- enable => "true",
- require => Package["nginx"];
- }
-
- proxy_configuration{ wikimedia:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.200", "[2620:0:860:ed1a::]" ],
- "eqiad" => [ "208.80.154.224", "[2620:0:861:ed1a::]" ],
- "esams" => [ "91.198.174.224", "[2620:0:862:ed1a::]" ]
- },
- proxy_server_name => '*.wikimedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.200" }
- },
- ipv6_enabled => 'true',
- enabled => 'true',
- proxy_listen_flags => 'default ssl'
- }
- proxy_configuration{ bits:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.210", "[2620:0:860:ed1a::a]" ],
- "eqiad" => [ "208.80.154.234", "[2620:0:861:ed1a::a]" ],
- "esams" => [ "91.198.174.233", "[2620:0:862:ed1a::a]" ]
- },
- proxy_server_name => 'bits.wikimedia.org
geoiplookup.wikimedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.23" },
- "eqiad" => { "primary" => "10.2.2.23" },
- "esams" => { "primary" => "10.2.3.23", "secondary" =>
"208.80.152.210" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ upload:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.211", "[2620:0:860:ed1a::b]" ],
- "eqiad" => [ "208.80.154.235", "[2620:0:861:ed1a::b]" ],
- "esams" => [ "91.198.174.234", "[2620:0:862:ed1a::b]" ]
- },
- proxy_server_name => 'upload.wikimedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.24" },
- "eqiad" => { "primary" => "10.2.2.24" },
- "esams" => { "primary" => "10.2.3.24", "secondary" =>
"208.80.152.211" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikipedia:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.201", "[2620:0:860:ed1a::1]" ],
- "eqiad" => [ "208.80.154.225", "[2620:0:861:ed1a::1]" ],
- "esams" => [ "91.198.174.225", "[2620:0:862:ed1a::1]" ]
- },
- proxy_server_name => '*.wikipedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.201" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wiktionary:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.202", "[2620:0:860:ed1a::2]" ],
- "eqiad" => [ "208.80.154.226", "[2620:0:861:ed1a::2]" ],
- "esams" => [ "91.198.174.226", "[2620:0:862:ed1a::2]" ]
- },
- proxy_server_name => '*.wiktionary.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.202" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikiquote:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.203", "[2620:0:860:ed1a::3]" ],
- "eqiad" => [ "208.80.154.227", "[2620:0:861:ed1a::3]" ],
- "esams" => [ "91.198.174.227", "[2620:0:862:ed1a::3]" ]
- },
- proxy_server_name => '*.wikiquote.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.203" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikibooks:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.204", "[2620:0:860:ed1a::4]" ],
- "eqiad" => [ "208.80.154.228", "[2620:0:861:ed1a::4]" ],
- "esams" => [ "91.198.174.228", "[2620:0:862:ed1a::4]" ]
- },
- proxy_server_name => '*.wikibooks.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.204" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikisource:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.205", "[2620:0:860:ed1a::5]" ],
- "eqiad" => [ "208.80.154.229", "[2620:0:861:ed1a::5]" ],
- "esams" => [ "91.198.174.229", "[2620:0:862:ed1a::5]" ]
- },
- proxy_server_name => '*.wikisource.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.205" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikinews:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.206", "[2620:0:860:ed1a::6]" ],
- "eqiad" => [ "208.80.154.230", "[2620:0:861:ed1a::6]" ],
- "esams" => [ "91.198.174.230", "[2620:0:862:ed1a::6]" ]
- },
- proxy_server_name => '*.wikinews.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.206" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikiversity:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.207", "[2620:0:860:ed1a::7]" ],
- "eqiad" => [ "208.80.154.231", "[2620:0:861:ed1a::7]" ],
- "esams" => [ "91.198.174.231", "[2620:0:862:ed1a::7]" ]
- },
- proxy_server_name => '*.wikiversity.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.207" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ mediawiki:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.208", "[2620:0:860:ed1a::8]" ],
- "eqiad" => [ "208.80.154.232", "[2620:0:861:ed1a::8]" ],
- "esams" => [ "91.198.174.232", "[2620:0:862:ed1a::8]" ]
- },
- proxy_server_name => '*.mediawiki.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.208" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ wikimediafoundation:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.209", "[2620:0:860:ed1a::9]" ],
- "eqiad" => [ "208.80.154.233", "[2620:0:861:ed1a::9]" ],
- "esams" => [ "91.198.174.235", "[2620:0:862:ed1a::9]" ]
- },
- proxy_server_name => '*.wikimediafoundation.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- "esams" => { "primary" => "10.2.3.25", "secondary" =>
"208.80.152.209" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- proxy_configuration{ mobilewikipedia:
- proxy_addresses => {
- "pmtpa" => [ "127.0.0.1", "[2620:0:860:ed1a::c]" ],
- "eqiad" => [ "208.80.154.236", "[2620:0:861:ed1a::c]" ],
- "esams" => [ "127.0.0.1", "[2620:0:862:ed1a::c]" ]
- },
- proxy_server_name => '*.m.wikipedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.26" },
- "eqiad" => { "primary" => "10.2.2.26" },
- "esams" => { "primary" => "10.2.3.26", "secondary" =>
"208.80.154.236" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- # wikidata.org
- if $::site != "esams" {
- proxy_configuration{ wikidata:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.218",
"[2620:0:860:ed1a::12]" ],
- "eqiad" => [ "208.80.154.242",
"[2620:0:861:ed1a::12]" ],
- # "esams" => [ "127.0.0.1" ]
- },
- proxy_server_name => '*.wikidata.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- # "esams" => { "primary" => "10.2.3.25" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- }
- # wikivoyage.org
- if $::site != "esams" {
- proxy_configuration{ wikivoyage:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.219",
"[2620:0:860:ed1a::13]" ],
- "eqiad" => [ "208.80.154.243",
"[2620:0:861:ed1a::13]" ],
- # "esams" => [ "127.0.0.1" ]
- },
- proxy_server_name => '*.wikivoyage.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.2.1.25" },
- "eqiad" => { "primary" => "10.2.2.25" },
- # "esams" => { "primary" => "10.2.3.25" }
- },
- ipv6_enabled => 'true',
- enabled => 'true'
- }
- }
- # Misc services
- proxy_configuration{ videos:
- proxy_addresses => {
- "pmtpa" => [ "208.80.152.200", "[2620:0:860:2::80:2]" ],
- "eqiad" => [ "208.80.154.224", "[2620:0:862:3::80:2]" ],
- "esams" => [ "91.198.174.224", "[2620:0:862:1::80:2]" ]
},
- proxy_server_name => 'videos.wikimedia.org',
- proxy_server_cert_name => 'unified.wikimedia.org',
- proxy_backend => {
- "pmtpa" => { "primary" => "10.64.16.146" },
- "eqiad" => { "primary" => "10.64.16.146" },
- "esams" => { "primary" => "208.80.152.200", "secondary"
=> "208.80.152.200" }
- },
- ssl_backend => { "esams" => "true" },
- enabled => 'true'
- }
-
-}
-
-class protoproxy::package {
-
- package { ['nginx']:
- ensure => latest;
- }
-
- file {
- "/etc/nginx/sites-enabled/default":
- ensure => absent;
- }
-
-}
-
-class protoproxy::service {
- require protoproxy::proxy_sites
-
- service { ['nginx']:
- enable => true,
- ensure => running;
- }
-}
-
-class protoproxy::ganglia {
- file {
- "/usr/lib/ganglia/python_modules/apache_status.py":
- source =>
"puppet:///files/ganglia/plugins/apache_status.py",
- notify => Service[gmond];
- "/etc/ganglia/conf.d/apache_status.pyconf":
- source =>
"puppet:///files/ganglia/plugins/apache_status.pyconf",
- notify => Service[gmond];
- }
-}
-
diff --git a/manifests/role/protoproxy.pp b/manifests/role/protoproxy.pp
index 97b8717..47b91b1 100644
--- a/manifests/role/protoproxy.pp
+++ b/manifests/role/protoproxy.pp
@@ -1,11 +1,377 @@
-class role::protoproxy::ssl {
- $cluster = "ssl"
+class role::protoproxy::ssl::common {
+ $nginx_worker_connections = '32768'
+ $nginx_use_ssl = true
+
+ file { '/etc/nginx/nginx.conf':
+ content => template('nginx/nginx.conf.erb'),
+ notify => Service['nginx'],
+ require => Package['nginx'],
+ }
+
+ file { '/etc/logrotate.d/nginx':
+ content => template('nginx/logrotate'),
+ require => Package['nginx'],
+ }
+
+ nginx_site { 'localhost.conf':
+ install => true,
+ enable => true,
+ require => Package['nginx'],
+ }
+
+}
+
+class role::protoproxy::ssl {
+ system_role { 'protoproxy::proxy_sites': description => 'SSL and IPv6 proxy'
}
+
+ $cluster = 'ssl'
$enable_ipv6_proxy = true
include standard,
certificates::wmf_ca,
- protoproxy::proxy_sites
+ role::protoproxy::ssl::common
- monitor_service { "https": description => "HTTPS", check_command =>
"check_ssl_cert!*.wikimedia.org", critical => true }
+ # FIXME: pull from lvs::configuration
+ class { 'lvs::realserver':
+ realserver_ips => $::site ? {
+ 'pmtpa' => [ '208.80.152.200', '208.80.152.201', '208.80.152.202',
'208.80.152.203', '208.80.152.204', '208.80.152.205', '208.80.152.206',
'208.80.152.207', '208.80.152.208', '208.80.152.209', '208.80.152.210',
'208.80.152.211', '208.80.152.3', '208.80.152.118', '208.80.152.218',
'208.80.152.219', '2620:0:860:ed1a::', '2620:0:860:ed1a::1',
'2620:0:860:ed1a::2', '2620:0:860:ed1a::3', '2620:0:860:ed1a::4',
'2620:0:860:ed1a::5', '2620:0:860:ed1a::6', '2620:0:860:ed1a::7',
'2620:0:860:ed1a::8', '2620:0:860:ed1a::9', '2620:0:860:ed1a::a',
'2620:0:860:ed1a::b', '2620:0:860:ed1a::c', '2620:0:860:ed1a::12',
'2620:0:860:ed1a::13' ],
+ 'eqiad' => [ '208.80.154.224', '208.80.154.225', '208.80.154.226',
'208.80.154.227', '208.80.154.228', '208.80.154.229', '208.80.154.230',
'208.80.154.231', '208.80.154.232', '208.80.154.233', '208.80.154.234',
'208.80.154.235', '208.80.154.236', '208.80.154.242', '208.80.154.243',
'2620:0:861:ed1a::', '2620:0:861:ed1a::1', '2620:0:861:ed1a::2',
'2620:0:861:ed1a::3', '2620:0:861:ed1a::4', '2620:0:861:ed1a::5',
'2620:0:861:ed1a::6', '2620:0:861:ed1a::7', '2620:0:861:ed1a::8',
'2620:0:861:ed1a::9', '2620:0:861:ed1a::a', '2620:0:861:ed1a::b',
'2620:0:861:ed1a::c', '2620:0:861:ed1a::12', '2620:0:861:ed1a::13' ],
+ 'esams' => [ '91.198.174.224', '91.198.174.225', '91.198.174.233',
'91.198.174.234', '91.198.174.226', '91.198.174.227', '91.198.174.228',
'91.198.174.229', '91.198.174.230', '91.198.174.231', '91.198.174.232',
'91.198.174.235', '2620:0:862:ed1a::', '2620:0:862:ed1a::1',
'2620:0:862:ed1a::2', '2620:0:862:ed1a::3', '2620:0:862:ed1a::4',
'2620:0:862:ed1a::5', '2620:0:862:ed1a::6', '2620:0:862:ed1a::7',
'2620:0:862:ed1a::8', '2620:0:862:ed1a::9', '2620:0:862:ed1a::a',
'2620:0:862:ed1a::b', '2620:0:862:ed1a::c' ],
+ }
+ }
+
+ install_certificate{ 'star.wikimedia.org': }
+ install_certificate{ 'star.wikipedia.org': }
+ install_certificate{ 'star.wiktionary.org': }
+ install_certificate{ 'star.wikiquote.org': }
+ install_certificate{ 'star.wikibooks.org': }
+ install_certificate{ 'star.wikisource.org': }
+ install_certificate{ 'star.wikinews.org': }
+ install_certificate{ 'star.wikiversity.org': }
+ install_certificate{ 'star.mediawiki.org': }
+ install_certificate{ 'star.wikimediafoundation.org': }
+ install_certificate{ 'star.wikidata.org': }
+ install_certificate{ 'star.wikivoyage.org': }
+ install_certificate{ 'unified.wikimedia.org': }
+
+ protoproxy::instance{ 'wikimedia':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.200', '[2620:0:860:ed1a::]' ],
+ 'eqiad' => [ '208.80.154.224', '[2620:0:861:ed1a::]' ],
+ 'esams' => [ '91.198.174.224', '[2620:0:862:ed1a::]' ]
+ },
+ proxy_server_name => '*.wikimedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.200' }
+ },
+ ipv6_enabled => true,
+ enabled => true,
+ proxy_listen_flags => 'default ssl'
+ }
+ protoproxy::instance{ 'bits':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.210', '[2620:0:860:ed1a::a]' ],
+ 'eqiad' => [ '208.80.154.234', '[2620:0:861:ed1a::a]' ],
+ 'esams' => [ '91.198.174.233', '[2620:0:862:ed1a::a]' ]
+ },
+ proxy_server_name => 'bits.wikimedia.org geoiplookup.wikimedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.23' },
+ 'eqiad' => { 'primary' => '10.2.2.23' },
+ 'esams' => { 'primary' => '10.2.3.23', 'secondary' => '208.80.152.210' }
+ },
+ ipv6_enabled => true,
+ enabled => true
+ }
+ protoproxy::instance{ 'upload':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.211', '[2620:0:860:ed1a::b]' ],
+ 'eqiad' => [ '208.80.154.235', '[2620:0:861:ed1a::b]' ],
+ 'esams' => [ '91.198.174.234', '[2620:0:862:ed1a::b]' ]
+ },
+ proxy_server_name => 'upload.wikimedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.24' },
+ 'eqiad' => { 'primary' => '10.2.2.24' },
+ 'esams' => { 'primary' => '10.2.3.24', 'secondary' => '208.80.152.211' }
+ },
+ ipv6_enabled => true,
+ enabled => true
+ }
+ protoproxy::instance{ 'wikipedia':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.201', '[2620:0:860:ed1a::1]' ],
+ 'eqiad' => [ '208.80.154.225', '[2620:0:861:ed1a::1]' ],
+ 'esams' => [ '91.198.174.225', '[2620:0:862:ed1a::1]' ]
+ },
+ proxy_server_name => '*.wikipedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.201' }
+ },
+ ipv6_enabled => true,
+ enabled => true,
+ }
+ protoproxy::instance{ 'wiktionary':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.202', '[2620:0:860:ed1a::2]' ],
+ 'eqiad' => [ '208.80.154.226', '[2620:0:861:ed1a::2]' ],
+ 'esams' => [ '91.198.174.226', '[2620:0:862:ed1a::2]' ]
+ },
+ proxy_server_name => '*.wiktionary.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.202' }
+ },
+ ipv6_enabled => true,
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikiquote':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.203', '[2620:0:860:ed1a::3]' ],
+ 'eqiad' => [ '208.80.154.227', '[2620:0:861:ed1a::3]' ],
+ 'esams' => [ '91.198.174.227', '[2620:0:862:ed1a::3]' ]
+ },
+ proxy_server_name => '*.wikiquote.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.203' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikibooks':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.204', '[2620:0:860:ed1a::4]' ],
+ 'eqiad' => [ '208.80.154.228', '[2620:0:861:ed1a::4]' ],
+ 'esams' => [ '91.198.174.228', '[2620:0:862:ed1a::4]' ]
+ },
+ proxy_server_name => '*.wikibooks.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.204' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikisource':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.205', '[2620:0:860:ed1a::5]' ],
+ 'eqiad' => [ '208.80.154.229', '[2620:0:861:ed1a::5]' ],
+ 'esams' => [ '91.198.174.229', '[2620:0:862:ed1a::5]' ]
+ },
+ proxy_server_name => '*.wikisource.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.205' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikinews':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.206', '[2620:0:860:ed1a::6]' ],
+ 'eqiad' => [ '208.80.154.230', '[2620:0:861:ed1a::6]' ],
+ 'esams' => [ '91.198.174.230', '[2620:0:862:ed1a::6]' ]
+ },
+ proxy_server_name => '*.wikinews.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.206' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikiversity':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.207', '[2620:0:860:ed1a::7]' ],
+ 'eqiad' => [ '208.80.154.231', '[2620:0:861:ed1a::7]' ],
+ 'esams' => [ '91.198.174.231', '[2620:0:862:ed1a::7]' ]
+ },
+ proxy_server_name => '*.wikiversity.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.207' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'mediawiki':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.208', '[2620:0:860:ed1a::8]' ],
+ 'eqiad' => [ '208.80.154.232', '[2620:0:861:ed1a::8]' ],
+ 'esams' => [ '91.198.174.232', '[2620:0:862:ed1a::8]' ]
+ },
+ proxy_server_name => '*.mediawiki.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.208' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'wikimediafoundation':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.209', '[2620:0:860:ed1a::9]' ],
+ 'eqiad' => [ '208.80.154.233', '[2620:0:861:ed1a::9]' ],
+ 'esams' => [ '91.198.174.235', '[2620:0:862:ed1a::9]' ]
+ },
+ proxy_server_name => '*.wikimediafoundation.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ 'esams' => { 'primary' => '10.2.3.25', 'secondary' => '208.80.152.209' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ protoproxy::instance{ 'mobilewikipedia':
+ proxy_addresses => {
+ 'pmtpa' => [ '127.0.0.1', '[2620:0:860:ed1a::c]' ],
+ 'eqiad' => [ '208.80.154.236', '[2620:0:861:ed1a::c]' ],
+ 'esams' => [ '127.0.0.1', '[2620:0:862:ed1a::c]' ]
+ },
+ proxy_server_name => '*.m.wikipedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.26' },
+ 'eqiad' => { 'primary' => '10.2.2.26' },
+ 'esams' => { 'primary' => '10.2.3.26', 'secondary' => '208.80.154.236' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ # wikidata.org
+ if $::site != 'esams' {
+ protoproxy::instance{ wikidata:
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.218', '[2620:0:860:ed1a::12]' ],
+ 'eqiad' => [ '208.80.154.242', '[2620:0:861:ed1a::12]' ],
+ # 'esams' => [ '127.0.0.1' ]
+ },
+ proxy_server_name => '*.wikidata.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ # 'esams' => { 'primary' => '10.2.3.25' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ }
+ # wikivoyage.org
+ if $::site != 'esams' {
+ protoproxy::instance{ 'wikivoyage':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.219', '[2620:0:860:ed1a::13]' ],
+ 'eqiad' => [ '208.80.154.243', '[2620:0:861:ed1a::13]' ],
+ # 'esams' => [ '127.0.0.1' ]
+ },
+ proxy_server_name => '*.wikivoyage.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.2.1.25' },
+ 'eqiad' => { 'primary' => '10.2.2.25' },
+ # 'esams' => { 'primary' => '10.2.3.25' }
+ },
+ ipv6_enabled => 'true',
+ enabled => 'true'
+ }
+ }
+ # Misc services
+ protoproxy::instance{ 'videos':
+ proxy_addresses => {
+ 'pmtpa' => [ '208.80.152.200', '[2620:0:860:2::80:2]' ],
+ 'eqiad' => [ '208.80.154.224', '[2620:0:862:3::80:2]' ],
+ 'esams' => [ '91.198.174.224', '[2620:0:862:1::80:2]' ] },
+ proxy_server_name => 'videos.wikimedia.org',
+ proxy_server_cert_name => 'unified.wikimedia.org',
+ proxy_backend => {
+ 'pmtpa' => { 'primary' => '10.64.16.146' },
+ 'eqiad' => { 'primary' => '10.64.16.146' },
+ 'esams' => { 'primary' => '208.80.152.200', 'secondary' =>
'208.80.152.200' }
+ },
+ ssl_backend => { 'esams' => 'true' },
+ enabled => 'true'
+ }
+
+ monitor_service { 'https':
+ description => 'HTTPS',
+ check_command => 'check_ssl_cert!*.wikimedia.org',
+ critical => true,
+ }
+
+ # Ganglia
+ file { '/usr/lib/ganglia/python_modules/apache_status.py':
+ source => 'puppet:///files/ganglia/plugins/apache_status.py',
+ notify => Service[gmond];
+ }
+ file { '/etc/ganglia/conf.d/apache_status.pyconf':
+ source => 'puppet:///files/ganglia/plugins/apache_status.pyconf',
+ notify => Service[gmond];
+ }
+
+}
+
+class role::protoproxy::ssl::beta::common {
+ $cluster = 'ssl'
+
+ $enable_ipv6_proxy = false
+
+ include standard,
+ certificates::wmf_labs_ca,
+ role::protoproxy::ssl::common
+
+ # TODO install_certificate
+ install_certificate { 'star.wmflabs.org': }
+
+}
+
+# Because beta does not have a frontend LVS to redirect the requests made
+# to port 443, we have to setup a nginx proxy on each of the caches.
+
+class role::protoproxy::ssl::beta::bits {
+
+ system_role { 'role::protoproxy::ssl:beta::bits': description => 'SSL proxy
on beta for bits', }
+
+ include role::protoproxy::ssl::beta::common
+
+ protoproxy::instance { 'bits':
+ proxy_adddresses => {
+ 'pmtpa' => [ '10.4.0.51' ], # deployment-cache-bits03
+ },
+ proxy_server_name => 'bits.beta.wmflabs.org',
+ proxy_server_cert_name => 'star.wmfabs.org',
+ proxy_backend => {
+ # send all traffic to the local cache
+ 'pmtpa' => { 'primary' => '127.0.0.1' }
+ },
+ ipv6_enabled => false,
+ enabled => true,
+ }
+
}
diff --git a/modules/protoproxy/manifests/instance.pp
b/modules/protoproxy/manifests/instance.pp
new file mode 100644
index 0000000..a43df84
--- /dev/null
+++ b/modules/protoproxy/manifests/instance.pp
@@ -0,0 +1,47 @@
+# Definition: protoproxy::instance
+#
+# This class creates a Nginx installation.
+#
+# FIXME document parameters
+#
+# Parameters:
+# - $proxy_addresses
+# - $proxy_addresses
+# - $proxy_server_name
+# - $proxy_server_cert_name
+# - $proxy_backend
+# - $enabled
+# - $proxy_listen_flags
+# - $proxy_port
+# - $ipv6_enabled
+# - $ssl_backend
+#
+# Actions:
+# Install nginx package and creates a configuration out of a template.
+#
+# Requires:
+# nginx_site definition and the nginx package
+#
+# Example usage:
+#
+# See wikimedia role::protoproxy
+define protoproxy::instance(
+ $proxy_addresses,
+ $proxy_server_name,
+ $proxy_server_cert_name,
+ $proxy_backend,
+ $enabled=false,
+ $proxy_listen_flags='',
+ $proxy_port='80',
+ $ipv6_enabled=false,
+ $ssl_backend={},
+) {
+
+ nginx_site { $name:
+ enable => $enabled,
+ template => 'proxy',
+ install => 'template',
+ require => Package['nginx'],
+ }
+
+}
diff --git a/modules/protoproxy/manifests/package.pp
b/modules/protoproxy/manifests/package.pp
new file mode 100644
index 0000000..fb4e574
--- /dev/null
+++ b/modules/protoproxy/manifests/package.pp
@@ -0,0 +1,11 @@
+class protoproxy::package {
+
+ package { ['nginx']:
+ ensure => latest;
+ }
+
+ file { '/etc/nginx/sites-enabled/default':
+ ensure => absent;
+ }
+
+}
diff --git a/modules/protoproxy/manifests/service.pp
b/modules/protoproxy/manifests/service.pp
new file mode 100644
index 0000000..08bc3fe
--- /dev/null
+++ b/modules/protoproxy/manifests/service.pp
@@ -0,0 +1,8 @@
+class protoproxy::service {
+# FIXME require protoproxy::proxy_sites
+
+ service { ['nginx']:
+ ensure => running,
+ enable => true,
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/62582
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8321c83a26ac082fa4ebf7f31ffb5ed5382b5322
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Hashar <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits