Mark Bergsma has submitted this change and it was merged.
Change subject: LVS: Convert to a module
......................................................................
LVS: Convert to a module
Change-Id: I07cf6227f3d443df006cb18c2dbf73b9c03ad280
---
M manifests/site.pp
R modules/lvs/files/pybal/check-apache
A modules/lvs/manifests/balancer.pp
A modules/lvs/manifests/balancer/runcommand.pp
R modules/lvs/manifests/configuration.pp
A modules/lvs/manifests/init.pp
A modules/lvs/manifests/monitor.pp
A modules/lvs/manifests/realserver.pp
R modules/lvs/templates/wikimedia-lvs-realserver.erb
9 files changed, 330 insertions(+), 327 deletions(-)
Approvals:
Mark Bergsma: Looks good to me, approved
jenkins-bot: Verified
diff --git a/manifests/site.pp b/manifests/site.pp
index 6484fbb..d421c42 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -14,7 +14,6 @@
import "gerrit.pp"
import "imagescaler.pp"
import "iptables.pp"
-import "lvs.pp"
import "mail.pp"
import "memcached.pp"
import "misc/*.pp"
diff --git a/files/pybal/check-apache b/modules/lvs/files/pybal/check-apache
similarity index 100%
rename from files/pybal/check-apache
rename to modules/lvs/files/pybal/check-apache
diff --git a/modules/lvs/manifests/balancer.pp
b/modules/lvs/manifests/balancer.pp
new file mode 100644
index 0000000..c3118a3
--- /dev/null
+++ b/modules/lvs/manifests/balancer.pp
@@ -0,0 +1,59 @@
+# lvs/balancer.pp
+
+# Class: lvs::balancer
+# Parameters:
+# - $service_ips: list of service IPs to bind to loopback
+# - $lvs_services: A configuration hash of LVS services
+# - $lvs_class_hosts: A configuration hash of PyBal class hosts
+# - $pybal_global_options: A configuration hash of PyBal global options
+# - $site: Site name used in PyBal configuration
+class lvs::balancer(
+ $service_ips=[],
+ $lvs_services,
+ $lvs_class_hosts,
+ $pybal_global_options,
+ $site
+ ) {
+
+ include pybal
+
+ system::role { "lvs::balancer": description => "LVS balancer", ensure =>
absent }
+
+ package { ethtool:
+ ensure => installed;
+ }
+
+ class { 'pybal::configuration':
+ global_options => $pybal_global_options,
+ lvs_services => $lvs_services,
+ lvs_class_hosts => $lvs_class_hosts,
+ site => $site
+ }
+
+ # Tune the ip_vs conn_tab_bits parameter
+ file { "/etc/modprobe.d/lvs.conf":
+ content => "# This file is managed by Puppet!\noptions ip_vs
conn_tab_bits=20\n";
+ }
+
+ # Bind balancer IPs to the loopback interface
+ class { "lvs::realserver": realserver_ips => $service_ips }
+
+ sysctl::parameters { 'lvs':
+ values => {
+ # Turn OFF RP filter
+ 'net.ipv4.conf.default.rp_filter' => 0,
+ 'net.ipv4.conf.all.rp_filter' => 0,
+
+ # Turn off IP forwarding for security
+ # LVS servers sit on all subnets
+ 'net.ipv4.ip_forward' => 0,
+
+ # Disable the route cache
+ # It is prone to DDoS attacks, and was even
+ # removed in >= 3.6 kernels.
+ 'net.ipv4.rt_cache_rebuild_count' => -1,
+ },
+ }
+
+ generic::upstart_job { "enable-rps": install => "true", start => "true" }
+}
diff --git a/modules/lvs/manifests/balancer/runcommand.pp
b/modules/lvs/manifests/balancer/runcommand.pp
new file mode 100644
index 0000000..fd57c38
--- /dev/null
+++ b/modules/lvs/manifests/balancer/runcommand.pp
@@ -0,0 +1,24 @@
+# lvs/balancer/runcommand.pp
+
+# Supporting the PyBal RunCommand monitor
+class lvs::balancer::runcommand {
+ Class[lvs::balancer] -> Class[lvs::balancer::runcommand]
+
+ file {
+ "/etc/pybal/runcommand":
+ owner => root,
+ group => root,
+ mode => 0755,
+ ensure => directory;
+ "/etc/pybal/runcommand/check-apache":
+ owner => root,
+ group => root,
+ mode => 0555,
+ source => "puppet:///modules/${module_name}/pybal/check-apache";
+ "/root/.ssh/pybal-check":
+ owner => root,
+ group => root,
+ mode => 0600,
+ source => "puppet:///private/pybal/pybal-check";
+ }
+}
diff --git a/manifests/lvs.pp b/modules/lvs/manifests/configuration.pp
similarity index 68%
rename from manifests/lvs.pp
rename to modules/lvs/manifests/configuration.pp
index 701b2ef..0c59d3f 100644
--- a/manifests/lvs.pp
+++ b/modules/lvs/manifests/configuration.pp
@@ -1,6 +1,5 @@
-# lvs.pp
+# lvs/configuration.pp
-# Global options
class lvs::configuration {
$lvs_class_hosts = {
@@ -797,329 +796,5 @@
'IdleConnection' => $idleconnection_monitor_options,
},
},
- }
-}
-
-# Class: lvs::balancer
-# Parameters:
-# - $service_ips: list of service IPs to bind to loopback
-# - $lvs_services: A configuration hash of LVS services
-# - $lvs_class_hosts: A configuration hash of PyBal class hosts
-# - $pybal_global_options: A configuration hash of PyBal global options
-# - $site: Site name used in PyBal configuration
-class lvs::balancer(
- $service_ips=[],
- $lvs_services,
- $lvs_class_hosts,
- $pybal_global_options,
- $site
- ) {
-
- include pybal
-
- system::role { "lvs::balancer": description => "LVS balancer", ensure =>
absent }
-
- package { ethtool:
- ensure => installed;
- }
-
- class { 'pybal::configuration':
- global_options => $pybal_global_options,
- lvs_services => $lvs_services,
- lvs_class_hosts => $lvs_class_hosts,
- site => $site
- }
-
- # Tune the ip_vs conn_tab_bits parameter
- file { "/etc/modprobe.d/lvs.conf":
- content => "# This file is managed by Puppet!\noptions ip_vs
conn_tab_bits=20\n";
- }
-
- # Bind balancer IPs to the loopback interface
- class { "lvs::realserver": realserver_ips => $service_ips }
-
- sysctl::parameters { 'lvs':
- values => {
- # Turn OFF RP filter
- 'net.ipv4.conf.default.rp_filter' => 0,
- 'net.ipv4.conf.all.rp_filter' => 0,
-
- # Turn off IP forwarding for security
- # LVS servers sit on all subnets
- 'net.ipv4.ip_forward' => 0,
-
- # Disable the route cache
- # It is prone to DDoS attacks, and was even
- # removed in >= 3.6 kernels.
- 'net.ipv4.rt_cache_rebuild_count' => -1,
- },
- }
-
- generic::upstart_job { "enable-rps": install => "true", start => "true" }
-}
-
-# Supporting the PyBal RunCommand monitor
-class lvs::balancer::runcommand {
- Class[lvs::balancer] -> Class[lvs::balancer::runcommand]
-
- file {
- "/etc/pybal/runcommand":
- owner => root,
- group => root,
- mode => 0755,
- ensure => directory;
- "/etc/pybal/runcommand/check-apache":
- owner => root,
- group => root,
- mode => 0755,
- source => "puppet:///files/pybal/check-apache";
- "/root/.ssh/pybal-check":
- owner => root,
- group => root,
- mode => 0600,
- source => "puppet:///private/pybal/pybal-check";
- }
-}
-
-# Class: lvs::realserver
-#
-# Sets up a server to be used as a 'real server' by LVS
-#
-# Parameters:
-# - $realserver_ips
-# Array or hash (name => ip) of service IPs to answer on
-class lvs::realserver($realserver_ips=[]) {
-
- file { "/etc/default/wikimedia-lvs-realserver":
- mode => 0444,
- owner => root,
- group => root,
- content => template("lvs/wikimedia-lvs-realserver.erb");
- }
-
- exec { "/usr/sbin/dpkg-reconfigure -p critical -f noninteractive
wikimedia-lvs-realserver":
- require => Package["wikimedia-lvs-realserver"],
- path => "/bin:/sbin:/usr/bin:/usr/sbin",
- subscribe => File["/etc/default/wikimedia-lvs-realserver"],
- refreshonly => true;
- }
-
- package { wikimedia-lvs-realserver:
- ensure => latest,
- require => File["/etc/default/wikimedia-lvs-realserver"];
- }
-}
-
-define lvs::monitor_service_custom ( $description="LVS", $ip_address,
$port=80, $check_command, $retries=3 ) {
- # Virtual resource for the monitoring host
- @monitor_host { $title: ip_address => $ip_address, group => "lvs",
critical => "true" }
- @monitor_service { $title: host => $title, group => "lvs", description =>
$description, check_command => $check_command, critical => "true", retries =>
$retries }
-}
-
-define lvs::monitor_service_http ( $ip_address, $check_command,
$critical="true", $contact_group="admins" ) {
- # Virtual resource for the monitoring host
- @monitor_host { $title: ip_address => $ip_address, group => "lvs",
critical => "true", contact_group => $contact_group }
- @monitor_service { $title: host => $title, group => "lvs", description =>
"LVS HTTP IPv4", check_command => $check_command, critical => $critical,
contact_group => $contact_group }
-}
-
-define lvs::monitor_service_https ( $ip_address, $check_command, $port=443,
$critical="true" ) {
- $title_https = "${title}_https"
- # Virtual resource for the monitoring host
- @monitor_host { $title_https: ip_address => $ip_address, group => "lvs",
critical => "true" }
- @monitor_service { $title_https: host => $title, group => "lvs",
description => "LVS HTTPS IPv4", check_command => $check_command, critical =>
$critical }
-}
-
-define lvs::monitor_service_http_https ( $ip_address, $uri, $critical="true",
$contact_group="admins" ) {
- # Virtual resource for the monitoring host
- @monitor_host { $title:
- ip_address => $ip_address,
- group => "lvs",
- critical => "true",
- contact_group => $contact_group
- }
-
- @monitor_service { $title:
- host => $title,
- group => "lvs",
- description => "LVS HTTP IPv4",
- check_command => "check_http_lvs!${uri}",
- critical => $critical
- }
-
- @monitor_service { "${title}_https":
- host => $title,
- group => "lvs",
- description => "LVS HTTPS IPv4",
- check_command => "check_https_url!${uri}",
- critical => $critical
- }
-}
-
-define lvs::monitor_service6_http_https ( $ip_address, $uri, $critical="true"
) {
- # Virtual resource for the monitoring host
- @monitor_host { "${title}_ipv6":
- ip_address => $ip_address,
- group => "lvs",
- critical => "true"
- }
-
- @monitor_service { "${title}_ipv6":
- host => "${title}_ipv6",
- group => "lvs",
- description => "LVS HTTP IPv6",
- check_command => "check_http_lvs!${uri}",
- critical => $critical
- }
-
- @monitor_service { "${title}_ipv6_https":
- host => "${title}_ipv6",
- group => "lvs",
- description => "LVS HTTPS IPv6",
- check_command => "check_https_url!${uri}",
- critical => $critical
- }
-}
-
-class lvs::monitor {
- include lvs::configuration
-
- $ip = $lvs::configuration::lvs_service_ips['production']
-
- # INTERNAL
-
- lvs::monitor_service_http { "appservers.svc.pmtpa.wmnet": ip_address =>
"10.2.1.1", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page" }
- lvs::monitor_service_http { "appservers.svc.eqiad.wmnet": ip_address =>
"10.2.2.1", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page" }
- lvs::monitor_service_http { "api.svc.pmtpa.wmnet": ip_address =>
"10.2.1.22", check_command =>
"check_http_lvs!en.wikipedia.org!/w/api.php?action=query&meta=siteinfo" }
- lvs::monitor_service_http { "api.svc.eqiad.wmnet": ip_address =>
"10.2.2.22", check_command =>
"check_http_lvs!en.wikipedia.org!/w/api.php?action=query&meta=siteinfo" }
- lvs::monitor_service_http { "rendering.svc.pmtpa.wmnet": ip_address =>
"10.2.1.21", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page"
}
- lvs::monitor_service_http { "rendering.svc.eqiad.wmnet": ip_address =>
"10.2.2.21", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page"
}
- lvs::monitor_service_http { "ms-fe.pmtpa.wmnet": ip_address =>
"10.2.1.27", check_command =>
"check_http_lvs!ms-fe.pmtpa.wmnet!/monitoring/backend" }
- lvs::monitor_service_http { "ms-fe.eqiad.wmnet": ip_address =>
"10.2.2.27", check_command =>
"check_http_lvs!ms-fe.eqiad.wmnet!/monitoring/backend" }
- lvs::monitor_service_http { "parsoid.svc.eqiad.wmnet": ip_address =>
"10.2.2.28", check_command => "check_http_on_port!8000", contact_group =>
"admins,parsoid" }
- lvs::monitor_service_http { "search.svc.eqiad.wmnet": ip_address =>
"10.2.2.30", check_command => "check_http_on_port!9200", contact_group =>
"admins" }
-
- lvs::monitor_service_custom { "search-pool1.svc.eqiad.wmnet": ip_address
=> "10.2.2.11", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
- lvs::monitor_service_custom { "search-pool2.svc.eqiad.wmnet": ip_address
=> "10.2.2.12", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
- lvs::monitor_service_custom { "search-pool3.svc.eqiad.wmnet": ip_address
=> "10.2.2.13", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
- lvs::monitor_service_custom { "search-pool4.svc.eqiad.wmnet": ip_address
=> "10.2.2.14", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
- lvs::monitor_service_custom { "search-pool5.svc.eqiad.wmnet": ip_address
=> "10.2.2.16", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
- lvs::monitor_service_custom { "search-prefix.svc.eqiad.wmnet": ip_address
=> "10.2.2.15", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
-
- # PMTPA
-
- # FIXME: remove after pmtpa decommissioning
- lvs::monitor_service6_custom { "payments.wikimedia.org":
- ip_address => "208.80.155.5",
- port => 443,
- check_command =>
"check_https_url!payments.wikimedia.org!/index.php/Special:SystemStatus",
- retries => 20
- }
-
- # EQIAD
- lvs::monitor_service_http_https {
- 'text-lb.eqiad.wikimedia.org':
- ip_address => $ip['text']['eqiad']['textlb'],
- uri => 'en.wikipedia.org!/wiki/Main_Page';
- 'bits-lb.eqiad.wikimedia.org':
- ip_address => $ip['bits']['eqiad']['bitslb'],
- uri =>
'bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png';
- 'upload-lb.eqiad.wikimedia.org':
- ip_address => $ip['upload']['eqiad']['uploadlb'],
- uri => 'upload.wikimedia.org!/monitoring/backend';
- 'mobile-lb.eqiad.wikimedia.org':
- ip_address => $ip['mobile']['eqiad']['mobilelb'],
- uri => 'en.m.wikipedia.org!/wiki/Main_Page';
- 'misc-web-lb.eqiad.wikimedia.org':
- ip_address => $ip['misc_web']['eqiad']['misc_web'],
- uri => 'varnishcheck!/';
- }
-
- lvs::monitor_service6_http_https {
- 'text-lb.eqiad.wikimedia.org':
- ip_address => $ip['text']['eqiad']['textlb6'],
- uri => 'en.wikipedia.org!/wiki/Main_Page';
- 'bits-lb.eqiad.wikimedia.org':
- ip_address => $ip['bits']['eqiad']['bitslb6'],
- uri =>
'bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png';
- 'upload-lb.eqiad.wikimedia.org':
- ip_address => $ip['upload']['eqiad']['uploadlb6'],
- uri => 'upload.wikimedia.org!/monitoring/backend';
- 'mobile-lb.eqiad.wikimedia.org':
- ip_address => $ip['mobile']['eqiad']['mobilelb6'],
- uri => 'en.m.wikipedia.org!/wiki/Main_Page';
- 'misc-web-lb.eqiad.wikimedia.org':
- ip_address => $ip['misc_web']['eqiad']['misc_web6'],
- uri => 'varnishcheck!/';
- }
-
- lvs::monitor_service_http { 'parsoid-lb.eqiad.wikimedia.org':
- ip_address => $ip['parsoidcache']['eqiad']['parsoidlb'],
- check_command => "check_http_on_port!80",
- contact_group => "admins,parsoid"
- }
- # TODO: ipv6
-
- # ESAMS
-
- lvs::monitor_service_http_https {
- "text-lb.esams.wikimedia.org":
- ip_address => $ip['text']['esams']['textlb'],
- uri => "en.wikipedia.org!/wiki/Main_Page";
- "bits-lb.esams.wikimedia.org":
- ip_address => $ip['bits']['esams']['bitslb'],
- uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
- "upload-lb.esams.wikimedia.org":
- ip_address => $ip['upload']['esams']['uploadlb'],
- uri => "upload.wikimedia.org!/monitoring/backend";
- "mobile-lb.esams.wikimedia.org":
- ip_address => $ip['mobile']['esams']['mobilelb'],
- uri => "en.m.wikipedia.org!/wiki/Main_Page";
- }
-
- lvs::monitor_service6_http_https {
- "text-lb.esams.wikimedia.org":
- ip_address => $ip['text']['esams']['textlb6'],
- uri => "en.wikipedia.org!/wiki/Main_Page";
- "bits-lb.esams.wikimedia.org":
- ip_address => $ip['bits']['esams']['bitslb6'],
- uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
- "upload-lb.esams.wikimedia.org":
- ip_address => $ip['upload']['esams']['uploadlb6'],
- uri => "upload.wikimedia.org!/monitoring/backend";
- "mobile-lb.esams.wikimedia.org":
- ip_address => $ip['mobile']['esams']['mobilelb6'],
- uri => "en.m.wikipedia.org!/wiki/Main_Page";
- }
-
- # ULSFO
-
- lvs::monitor_service6_http_https {
- "text-lb.ulsfo.wikimedia.org":
- ip_address => $ip['text']['ulsfo']['textlb'],
- uri => "en.wikipedia.org!/wiki/Main_Page";
- "bits-lb.ulsfo.wikimedia.org":
- ip_address => $ip['bits']['ulsfo']['bitslb'],
- uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
- "upload-lb.ulsfo.wikimedia.org":
- ip_address => $ip['upload']['ulsfo']['uploadlb'],
- uri => "upload.wikimedia.org!/monitoring/backend";
- "mobile-lb.ulsfo.wikimedia.org":
- ip_address => $ip['mobile']['ulsfo']['mobilelb'],
- uri => "en.m.wikipedia.org!/wiki/Main_Page";
- }
-
- lvs::monitor_service6_http_https {
- "text-lb.ulsfo.wikimedia.org":
- ip_address => $ip['text']['ulsfo']['textlb6'],
- uri => "en.wikipedia.org!/wiki/Main_Page";
- "bits-lb.ulsfo.wikimedia.org":
- ip_address => $ip['bits']['ulsfo']['bitslb6'],
- uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
- "upload-lb.ulsfo.wikimedia.org":
- ip_address => $ip['upload']['ulsfo']['uploadlb6'],
- uri => "upload.wikimedia.org!/monitoring/backend";
- "mobile-lb.ulsfo.wikimedia.org":
- ip_address => $ip['mobile']['ulsfo']['mobilelb6'],
- uri => "en.m.wikipedia.org!/wiki/Main_Page";
}
}
diff --git a/modules/lvs/manifests/init.pp b/modules/lvs/manifests/init.pp
new file mode 100644
index 0000000..143dcbf
--- /dev/null
+++ b/modules/lvs/manifests/init.pp
@@ -0,0 +1,71 @@
+# lvs/init.pp
+
+define lvs::monitor_service_custom ( $description="LVS", $ip_address,
$port=80, $check_command, $retries=3 ) {
+ # Virtual resource for the monitoring host
+ @monitor_host { $title: ip_address => $ip_address, group => "lvs",
critical => "true" }
+ @monitor_service { $title: host => $title, group => "lvs", description =>
$description, check_command => $check_command, critical => "true", retries =>
$retries }
+}
+
+define lvs::monitor_service_http ( $ip_address, $check_command,
$critical="true", $contact_group="admins" ) {
+ # Virtual resource for the monitoring host
+ @monitor_host { $title: ip_address => $ip_address, group => "lvs",
critical => "true", contact_group => $contact_group }
+ @monitor_service { $title: host => $title, group => "lvs", description =>
"LVS HTTP IPv4", check_command => $check_command, critical => $critical,
contact_group => $contact_group }
+}
+
+define lvs::monitor_service_https ( $ip_address, $check_command, $port=443,
$critical="true" ) {
+ $title_https = "${title}_https"
+ # Virtual resource for the monitoring host
+ @monitor_host { $title_https: ip_address => $ip_address, group => "lvs",
critical => "true" }
+ @monitor_service { $title_https: host => $title, group => "lvs",
description => "LVS HTTPS IPv4", check_command => $check_command, critical =>
$critical }
+}
+
+define lvs::monitor_service_http_https ( $ip_address, $uri, $critical="true",
$contact_group="admins" ) {
+ # Virtual resource for the monitoring host
+ @monitor_host { $title:
+ ip_address => $ip_address,
+ group => "lvs",
+ critical => "true",
+ contact_group => $contact_group
+ }
+
+ @monitor_service { $title:
+ host => $title,
+ group => "lvs",
+ description => "LVS HTTP IPv4",
+ check_command => "check_http_lvs!${uri}",
+ critical => $critical
+ }
+
+ @monitor_service { "${title}_https":
+ host => $title,
+ group => "lvs",
+ description => "LVS HTTPS IPv4",
+ check_command => "check_https_url!${uri}",
+ critical => $critical
+ }
+}
+
+define lvs::monitor_service6_http_https ( $ip_address, $uri, $critical="true"
) {
+ # Virtual resource for the monitoring host
+ @monitor_host { "${title}_ipv6":
+ ip_address => $ip_address,
+ group => "lvs",
+ critical => "true"
+ }
+
+ @monitor_service { "${title}_ipv6":
+ host => "${title}_ipv6",
+ group => "lvs",
+ description => "LVS HTTP IPv6",
+ check_command => "check_http_lvs!${uri}",
+ critical => $critical
+ }
+
+ @monitor_service { "${title}_ipv6_https":
+ host => "${title}_ipv6",
+ group => "lvs",
+ description => "LVS HTTPS IPv6",
+ check_command => "check_https_url!${uri}",
+ critical => $critical
+ }
+}
diff --git a/modules/lvs/manifests/monitor.pp b/modules/lvs/manifests/monitor.pp
new file mode 100644
index 0000000..743e11f
--- /dev/null
+++ b/modules/lvs/manifests/monitor.pp
@@ -0,0 +1,145 @@
+# lvs/monitor.pp
+
+class lvs::monitor {
+ include lvs::configuration
+
+ $ip = $lvs::configuration::lvs_service_ips['production']
+
+ # INTERNAL
+
+ lvs::monitor_service_http { "appservers.svc.pmtpa.wmnet": ip_address =>
"10.2.1.1", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page" }
+ lvs::monitor_service_http { "appservers.svc.eqiad.wmnet": ip_address =>
"10.2.2.1", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page" }
+ lvs::monitor_service_http { "api.svc.pmtpa.wmnet": ip_address =>
"10.2.1.22", check_command =>
"check_http_lvs!en.wikipedia.org!/w/api.php?action=query&meta=siteinfo" }
+ lvs::monitor_service_http { "api.svc.eqiad.wmnet": ip_address =>
"10.2.2.22", check_command =>
"check_http_lvs!en.wikipedia.org!/w/api.php?action=query&meta=siteinfo" }
+ lvs::monitor_service_http { "rendering.svc.pmtpa.wmnet": ip_address =>
"10.2.1.21", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page"
}
+ lvs::monitor_service_http { "rendering.svc.eqiad.wmnet": ip_address =>
"10.2.2.21", check_command => "check_http_lvs!en.wikipedia.org!/wiki/Main_Page"
}
+ lvs::monitor_service_http { "ms-fe.pmtpa.wmnet": ip_address =>
"10.2.1.27", check_command =>
"check_http_lvs!ms-fe.pmtpa.wmnet!/monitoring/backend" }
+ lvs::monitor_service_http { "ms-fe.eqiad.wmnet": ip_address =>
"10.2.2.27", check_command =>
"check_http_lvs!ms-fe.eqiad.wmnet!/monitoring/backend" }
+ lvs::monitor_service_http { "parsoid.svc.eqiad.wmnet": ip_address =>
"10.2.2.28", check_command => "check_http_on_port!8000", contact_group =>
"admins,parsoid" }
+ lvs::monitor_service_http { "search.svc.eqiad.wmnet": ip_address =>
"10.2.2.30", check_command => "check_http_on_port!9200", contact_group =>
"admins" }
+
+ lvs::monitor_service_custom { "search-pool1.svc.eqiad.wmnet": ip_address
=> "10.2.2.11", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+ lvs::monitor_service_custom { "search-pool2.svc.eqiad.wmnet": ip_address
=> "10.2.2.12", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+ lvs::monitor_service_custom { "search-pool3.svc.eqiad.wmnet": ip_address
=> "10.2.2.13", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+ lvs::monitor_service_custom { "search-pool4.svc.eqiad.wmnet": ip_address
=> "10.2.2.14", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+ lvs::monitor_service_custom { "search-pool5.svc.eqiad.wmnet": ip_address
=> "10.2.2.16", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+ lvs::monitor_service_custom { "search-prefix.svc.eqiad.wmnet": ip_address
=> "10.2.2.15", port => 8123, description => "LVS Lucene", check_command =>
"check_lucene" }
+
+ # PMTPA
+
+ # FIXME: remove after pmtpa decommissioning
+ lvs::monitor_service6_custom { "payments.wikimedia.org":
+ ip_address => "208.80.155.5",
+ port => 443,
+ check_command =>
"check_https_url!payments.wikimedia.org!/index.php/Special:SystemStatus",
+ retries => 20
+ }
+
+ # EQIAD
+ lvs::monitor_service_http_https {
+ 'text-lb.eqiad.wikimedia.org':
+ ip_address => $ip['text']['eqiad']['textlb'],
+ uri => 'en.wikipedia.org!/wiki/Main_Page';
+ 'bits-lb.eqiad.wikimedia.org':
+ ip_address => $ip['bits']['eqiad']['bitslb'],
+ uri =>
'bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png';
+ 'upload-lb.eqiad.wikimedia.org':
+ ip_address => $ip['upload']['eqiad']['uploadlb'],
+ uri => 'upload.wikimedia.org!/monitoring/backend';
+ 'mobile-lb.eqiad.wikimedia.org':
+ ip_address => $ip['mobile']['eqiad']['mobilelb'],
+ uri => 'en.m.wikipedia.org!/wiki/Main_Page';
+ 'misc-web-lb.eqiad.wikimedia.org':
+ ip_address => $ip['misc_web']['eqiad']['misc_web'],
+ uri => 'varnishcheck!/';
+ }
+
+ lvs::monitor_service6_http_https {
+ 'text-lb.eqiad.wikimedia.org':
+ ip_address => $ip['text']['eqiad']['textlb6'],
+ uri => 'en.wikipedia.org!/wiki/Main_Page';
+ 'bits-lb.eqiad.wikimedia.org':
+ ip_address => $ip['bits']['eqiad']['bitslb6'],
+ uri =>
'bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png';
+ 'upload-lb.eqiad.wikimedia.org':
+ ip_address => $ip['upload']['eqiad']['uploadlb6'],
+ uri => 'upload.wikimedia.org!/monitoring/backend';
+ 'mobile-lb.eqiad.wikimedia.org':
+ ip_address => $ip['mobile']['eqiad']['mobilelb6'],
+ uri => 'en.m.wikipedia.org!/wiki/Main_Page';
+ 'misc-web-lb.eqiad.wikimedia.org':
+ ip_address => $ip['misc_web']['eqiad']['misc_web6'],
+ uri => 'varnishcheck!/';
+ }
+
+ lvs::monitor_service_http { 'parsoid-lb.eqiad.wikimedia.org':
+ ip_address => $ip['parsoidcache']['eqiad']['parsoidlb'],
+ check_command => "check_http_on_port!80",
+ contact_group => "admins,parsoid"
+ }
+ # TODO: ipv6
+
+ # ESAMS
+
+ lvs::monitor_service_http_https {
+ "text-lb.esams.wikimedia.org":
+ ip_address => $ip['text']['esams']['textlb'],
+ uri => "en.wikipedia.org!/wiki/Main_Page";
+ "bits-lb.esams.wikimedia.org":
+ ip_address => $ip['bits']['esams']['bitslb'],
+ uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
+ "upload-lb.esams.wikimedia.org":
+ ip_address => $ip['upload']['esams']['uploadlb'],
+ uri => "upload.wikimedia.org!/monitoring/backend";
+ "mobile-lb.esams.wikimedia.org":
+ ip_address => $ip['mobile']['esams']['mobilelb'],
+ uri => "en.m.wikipedia.org!/wiki/Main_Page";
+ }
+
+ lvs::monitor_service6_http_https {
+ "text-lb.esams.wikimedia.org":
+ ip_address => $ip['text']['esams']['textlb6'],
+ uri => "en.wikipedia.org!/wiki/Main_Page";
+ "bits-lb.esams.wikimedia.org":
+ ip_address => $ip['bits']['esams']['bitslb6'],
+ uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
+ "upload-lb.esams.wikimedia.org":
+ ip_address => $ip['upload']['esams']['uploadlb6'],
+ uri => "upload.wikimedia.org!/monitoring/backend";
+ "mobile-lb.esams.wikimedia.org":
+ ip_address => $ip['mobile']['esams']['mobilelb6'],
+ uri => "en.m.wikipedia.org!/wiki/Main_Page";
+ }
+
+ # ULSFO
+
+ lvs::monitor_service6_http_https {
+ "text-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['text']['ulsfo']['textlb'],
+ uri => "en.wikipedia.org!/wiki/Main_Page";
+ "bits-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['bits']['ulsfo']['bitslb'],
+ uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
+ "upload-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['upload']['ulsfo']['uploadlb'],
+ uri => "upload.wikimedia.org!/monitoring/backend";
+ "mobile-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['mobile']['ulsfo']['mobilelb'],
+ uri => "en.m.wikipedia.org!/wiki/Main_Page";
+ }
+
+ lvs::monitor_service6_http_https {
+ "text-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['text']['ulsfo']['textlb6'],
+ uri => "en.wikipedia.org!/wiki/Main_Page";
+ "bits-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['bits']['ulsfo']['bitslb6'],
+ uri =>
"bits.wikimedia.org!/skins-1.5/common/images/poweredby_mediawiki_88x31.png";
+ "upload-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['upload']['ulsfo']['uploadlb6'],
+ uri => "upload.wikimedia.org!/monitoring/backend";
+ "mobile-lb.ulsfo.wikimedia.org":
+ ip_address => $ip['mobile']['ulsfo']['mobilelb6'],
+ uri => "en.m.wikipedia.org!/wiki/Main_Page";
+ }
+}
diff --git a/modules/lvs/manifests/realserver.pp
b/modules/lvs/manifests/realserver.pp
new file mode 100644
index 0000000..6bc045a
--- /dev/null
+++ b/modules/lvs/manifests/realserver.pp
@@ -0,0 +1,30 @@
+# lvs/realserver.pp
+
+# Class: lvs::realserver
+#
+# Sets up a server to be used as a 'real server' by LVS
+#
+# Parameters:
+# - $realserver_ips
+# Array or hash (name => ip) of service IPs to answer on
+class lvs::realserver($realserver_ips=[]) {
+
+ file { "/etc/default/wikimedia-lvs-realserver":
+ mode => 0444,
+ owner => root,
+ group => root,
+ content => template("${module_name}/wikimedia-lvs-realserver.erb");
+ }
+
+ exec { "/usr/sbin/dpkg-reconfigure -p critical -f noninteractive
wikimedia-lvs-realserver":
+ require => Package["wikimedia-lvs-realserver"],
+ path => "/bin:/sbin:/usr/bin:/usr/sbin",
+ subscribe => File["/etc/default/wikimedia-lvs-realserver"],
+ refreshonly => true;
+ }
+
+ package { wikimedia-lvs-realserver:
+ ensure => latest,
+ require => File["/etc/default/wikimedia-lvs-realserver"];
+ }
+}
diff --git a/templates/lvs/wikimedia-lvs-realserver.erb
b/modules/lvs/templates/wikimedia-lvs-realserver.erb
similarity index 100%
rename from templates/lvs/wikimedia-lvs-realserver.erb
rename to modules/lvs/templates/wikimedia-lvs-realserver.erb
--
To view, visit https://gerrit.wikimedia.org/r/102673
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I07cf6227f3d443df006cb18c2dbf73b9c03ad280
Gerrit-PatchSet: 2
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Mark Bergsma <[email protected]>
Gerrit-Reviewer: Mark Bergsma <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits