Mark Bergsma has submitted this change and it was merged.

Change subject: Introduce LVS role class
......................................................................


Introduce LVS role class

Change-Id: I4b1085d7c0cd0b2488b27c5ea4c2f65acaf0d7cc
---
M manifests/lvs.pp
A manifests/role/lvs.pp
M manifests/site.pp
3 files changed, 116 insertions(+), 184 deletions(-)

Approvals:
  Mark Bergsma: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/manifests/lvs.pp b/manifests/lvs.pp
index 092d850..c3b5fc6 100644
--- a/manifests/lvs.pp
+++ b/manifests/lvs.pp
@@ -1,9 +1,5 @@
 # lvs.pp
 
-import "generic-definitions.pp"
-
-@monitor_group { "lvs": description => "LVS" }
-
 # Global options
 class lvs::configuration {
 
@@ -272,6 +268,7 @@
                                'eqiad' => "10.2.2.16",
                        },
                        'mobile' => {
+                               'pmtpa' => {},
                                'eqiad' => { 'mobilelb' => "208.80.154.236", 
'mobilelb6' => "2620:0:861:ed1a::c", 'mobilesvc' => "10.2.2.26"},
                                'esams' => { 'mobilelb' => '91.198.174.236', 
'mobilelb6' => '2620:0:862:ed1a::c', 'mobilesvc' => '10.2.3.26'},
                                'ulsfo' => { 'mobilelb' => '198.35.26.108',  
'mobilelb6' => '2620:0:863:ed1a::c', 'mobilesvc' => '10.2.4.26'},
@@ -300,6 +297,7 @@
                                'eqiad' => "10.2.2.28",
                        },
                        'parsoidcache' => {
+                               'pmtpa' => {},
                                'eqiad' => { 'parsoidlb' => '208.80.154.248', 
'parsoidlb6' => '2620:0:861:ed1a::3:14', 'parsoidsvc' => '10.2.2.29' },
                        },
                        'search' => {
@@ -352,6 +350,51 @@
                        'parsoid' => {},
                        'parsoidcache' => {},
                        'search' => {},
+               }
+       }
+
+       $subnet_ips = {
+               'public1-a-eqiad' => {
+                       'lvs1004' => "208.80.154.58",
+                       'lvs1005' => "208.80.154.59",
+                       'lvs1006' => "208.80.154.60",
+               },
+               'public1-b-eqiad' => {
+                       'lvs1001' => "208.80.154.140",
+                       'lvs1002' => "208.80.154.141",
+                       'lvs1003' => "208.80.154.142",
+               },
+               'public1-c-eqiad' => {
+                       'lvs1001' => "208.80.154.78",
+                       'lvs1002' => "208.80.154.68",
+                       'lvs1003' => "208.80.154.69",
+                       'lvs1004' => "208.80.154.70",
+                       'lvs1005' => "208.80.154.71",
+                       'lvs1006' => "208.80.154.72",
+               },
+               'private1-a-eqiad' => {
+                       'lvs1001' => "10.64.1.1",
+                       'lvs1002' => "10.64.1.2",
+                       'lvs1003' => "10.64.1.3",
+                       'lvs1004' => "10.64.1.4",
+                       'lvs1005' => "10.64.1.5",
+                       'lvs1006' => "10.64.1.6",
+               },
+               'private1-b-eqiad' => {
+                       'lvs1001' => "10.64.17.1",
+                       'lvs1002' => "10.64.17.2",
+                       'lvs1003' => "10.64.17.3",
+                       'lvs1004' => "10.64.17.4",
+                       'lvs1005' => "10.64.17.5",
+                       'lvs1006' => "10.64.17.6",
+               },
+               'private1-c-eqiad' => {
+                       'lvs1001' => "10.64.33.1",
+                       'lvs1002' => "10.64.33.2",
+                       'lvs1003' => "10.64.33.3",
+                       'lvs1004' => "10.64.33.4",
+                       'lvs1005' => "10.64.33.5",
+                       'lvs1006' => "10.64.33.6",
                }
        }
 
@@ -767,7 +810,7 @@
        require "lvs::configuration"
        include pybal
 
-       system::role { "lvs::balancer": description => "LVS balancer" }
+       system::role { "lvs::balancer": description => "LVS balancer", ensure 
=> absent }
 
        package { ethtool:
                ensure => installed;
diff --git a/manifests/role/lvs.pp b/manifests/role/lvs.pp
new file mode 100644
index 0000000..f39b293
--- /dev/null
+++ b/manifests/role/lvs.pp
@@ -0,0 +1,59 @@
+# role/lvs.pp
+
+@monitor_group { "lvs": description => "LVS" }
+
+class role::lvs::balancer {
+    system::role { "role::lvs::balancer": description => "LVS balancer" }
+
+    $cluster = "lvs"
+
+    # Older PyBal is very dependent on recursive DNS, to the point where it is 
a SPOF
+    # So we'll have every LVS server run their own recursor
+    $nameservers_prefix = [ $::ipaddress ]
+    include dns::recursor
+
+    include lvs::configuration
+    $sip = $lvs::configuration::lvs_service_ips[$::realm]
+
+    $lvs_balancer_ips = $::hostname ? {
+        /^(amslvs[13]|lvs[26]|lvs100[14]|lvs400[13])$/ => [
+            $sip['text'][$::site],
+            $sip['bits'][$::site],
+            $sip['mobile'][$::site],
+            ],
+        /^(amslvs[24]|lvs400[24])$/ => [
+            $sip['upload'][$::site],
+            ],
+        /^(lvs[15]|lvs100[25])$/ => [
+            $sip['upload'][$::site],
+            $sip['payments'][$::site],
+            $sip['dns_rec'][$::site],
+            $sip['osm'][$::site],
+            $sip['misc_web'][$::site],
+            $sip['parsoidcache'][$::site],
+            ],
+        /^(lvs[34]|lvs100[36])$/ => [
+            $sip['apaches'][$::site],
+            $sip['api'][$::site],
+            $sip['rendering'][$::site],
+            $sip['search_pool1'][$::site],
+            $sip['search_pool2'][$::site],
+            $sip['search_pool3'][$::site],
+            $sip['search_pool4'][$::site],
+            $sip['search_pool5'][$::site],
+            $sip['search_prefix'][$::site],
+            $sip['swift'][$::site],
+            $sip['parsoid'][$::site],
+            $sip['search'][$::site]
+            ],
+    }
+
+    include base,
+        ganglia
+
+    class { "lvs::balancer": service_ips => $lvs_balancer_ips }
+
+    if $::site in ['pmtpa', 'eqiad'] {
+        include lvs::balancer::runcommand
+    }
+}
\ No newline at end of file
diff --git a/manifests/site.pp b/manifests/site.pp
index d2026fa..d279b10 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -62,37 +62,13 @@
 # Node definitions (alphabetic order)
 
 node /^amslvs[1-4]\.esams\.wikimedia\.org$/ {
-    $cluster = "lvs"
-
     if $::hostname =~ /^amslvs[12]$/ {
         $ganglia_aggregator = true
     }
 
-    # Older PyBal is very dependent on recursive DNS, to the point where it is 
a SPOF
-    # So we'll have every LVS server run their own recursor
-    $nameservers_prefix = [ $ipaddress ]
-    include dns::recursor
-
-    include lvs::configuration
-    $sip = $lvs::configuration::lvs_service_ips[$::realm]
-
-    $lvs_balancer_ips = $::hostname ? {
-        /^amslvs[13]$/ => [
-            $sip['text'][$::site],
-            $sip['bits'][$::site],
-            $sip['mobile'][$::site],
-            ],
-        /^amslvs[24]$/ => [
-            $sip['upload'][$::site],
-            ]
-    }
+    include role::lvs::balancer
 
     interface::add_ip6_mapped { "main": interface => "eth0" }
-
-    include base,
-        ganglia
-
-    class { "lvs::balancer": service_ips => $lvs_balancer_ips }
 
     # Make sure GRO is off
     interface::offload { "eth0 gro": interface => "eth0", setting => "gro", 
value => "off" }
@@ -1430,51 +1406,11 @@
 }
 
 node /lvs[1-6]\.wikimedia\.org/ {
-    $cluster = "lvs"
-
     if $::hostname =~ /^lvs[12]$/ {
         $ganglia_aggregator = true
     }
 
-    # Older PyBal is very dependent on recursive DNS, to the point where it is 
a SPOF
-    # So we'll have every LVS server run their own recursor
-    $nameservers_prefix = [ $ipaddress ]
-    include dns::recursor
-
-    include lvs::configuration
-    $sip = $lvs::configuration::lvs_service_ips[$::realm]
-
-    $lvs_balancer_ips = $::hostname ? {
-        /^lvs[15]$/ => [
-            $sip['upload'][$::site],
-            $sip['payments'][$::site],
-            $sip['dns_rec'][$::site],
-            $sip['osm'][$::site],
-            $sip['misc_web'][$::site],
-            ],
-        /^lvs[26]$/ => [
-            $sip['text'][$::site],
-            $sip['bits'][$::site],
-            ],
-        /^lvs[34]$/ => [
-            $sip['apaches'][$::site],
-            $sip['rendering'][$::site],
-            $sip['api'][$::site],
-            $sip['search_pool1'][$::site],
-            $sip['search_pool2'][$::site],
-            $sip['search_pool3'][$::site],
-            $sip['search_pool4'][$::site],
-            $sip['search_pool5'][$::site],
-            $sip['search_prefix'][$::site],
-            $sip['swift'][$::site],
-            ]
-    }
-
-    include base,
-        ganglia,
-        lvs::balancer::runcommand
-
-    class { "lvs::balancer": service_ips => $lvs_balancer_ips }
+    include role::lvs::balancer
 
     $ips = {
         'internal' => {
@@ -1502,100 +1438,16 @@
 }
 
 node /lvs100[1-6]\.wikimedia\.org/ {
-    $cluster = "lvs"
-
     if $::hostname =~ /^lvs100[12]$/ {
         $ganglia_aggregator = true
     }
 
-    # Older PyBal is very dependent on recursive DNS, to the point where it is 
a SPOF
-    # So we'll have every LVS server run their own recursor
-    $nameservers_prefix = [ $ipaddress ]
-    include dns::recursor
+    include role::lvs::balancer
+
+    interface::add_ip6_mapped { "main": interface => "eth0" }
 
     include lvs::configuration
-    $sip = $lvs::configuration::lvs_service_ips[$::realm]
-
-    $lvs_balancer_ips = $::hostname? {
-        /^lvs100[14]$/ => [
-            $sip['text'][$::site],
-            $sip['bits'][$::site],
-            $sip['mobile'][$::site],
-            ],
-        /^lvs100[25]$/ => [
-            $sip['upload'][$::site],
-            $sip['payments'][$::site],
-            $sip['dns_rec'][$::site],
-            $sip['osm'][$::site],
-            $sip['misc_web'][$::site],
-            $sip['parsoidcache'][$::site],
-            ],
-        /^lvs100[36]$/ => [
-            $sip['apaches'][$::site],
-            $sip['api'][$::site],
-            $sip['rendering'][$::site],
-            $sip['search_pool1'][$::site],
-            $sip['search_pool2'][$::site],
-            $sip['search_pool3'][$::site],
-            $sip['search_pool4'][$::site],
-            $sip['search_pool5'][$::site],
-            $sip['search_prefix'][$::site],
-            $sip['swift'][$::site],
-            $sip['parsoid'][$::site],
-            $sip['search'][$::site]
-            ]
-    }
-
-    include base,
-        ganglia,
-        lvs::balancer::runcommand
-
-    class { "lvs::balancer": service_ips => $lvs_balancer_ips }
-
-    $ips = {
-        'public1-a-eqiad' => {
-            'lvs1004' => "208.80.154.58",
-            'lvs1005' => "208.80.154.59",
-            'lvs1006' => "208.80.154.60",
-        },
-        'public1-b-eqiad' => {
-            'lvs1001' => "208.80.154.140",
-            'lvs1002' => "208.80.154.141",
-            'lvs1003' => "208.80.154.142",
-        },
-        'public1-c-eqiad' => {
-            'lvs1001' => "208.80.154.78",
-            'lvs1002' => "208.80.154.68",
-            'lvs1003' => "208.80.154.69",
-            'lvs1004' => "208.80.154.70",
-            'lvs1005' => "208.80.154.71",
-            'lvs1006' => "208.80.154.72",
-        },
-        'private1-a-eqiad' => {
-            'lvs1001' => "10.64.1.1",
-            'lvs1002' => "10.64.1.2",
-            'lvs1003' => "10.64.1.3",
-            'lvs1004' => "10.64.1.4",
-            'lvs1005' => "10.64.1.5",
-            'lvs1006' => "10.64.1.6",
-        },
-        'private1-b-eqiad' => {
-            'lvs1001' => "10.64.17.1",
-            'lvs1002' => "10.64.17.2",
-            'lvs1003' => "10.64.17.3",
-            'lvs1004' => "10.64.17.4",
-            'lvs1005' => "10.64.17.5",
-            'lvs1006' => "10.64.17.6",
-        },
-        'private1-c-eqiad' => {
-            'lvs1001' => "10.64.33.1",
-            'lvs1002' => "10.64.33.2",
-            'lvs1003' => "10.64.33.3",
-            'lvs1004' => "10.64.33.4",
-            'lvs1005' => "10.64.33.5",
-            'lvs1006' => "10.64.33.6",
-        }
-    }
+    $ips = $lvs::configuration::subnet_ips
 
     # Set up tagged interfaces to all subnets with real servers in them
     case $::hostname {
@@ -1675,40 +1527,18 @@
 
 # ULSFO lvs servers
 node /^lvs400[1-4]\.ulsfo\.wmnet$/ {
-    $cluster = 'lvs'
-
     # lvs4001 and lvs4003 are in different racks
     if $::hostname =~ /^lvs400[13]$/ {
         $ganglia_aggregator = true
     }
 
-    include base,
-        ganglia
-
-    # Older PyBal is very dependent on recursive DNS, to the point where it is 
a SPOF
-    # So we'll have every LVS server run their own recursor
-    $nameservers_prefix = [ $ipaddress ]
-    include dns::recursor
-
-    include lvs::configuration
-    $sip = $lvs::configuration::lvs_service_ips[$::realm]
-
-    $lvs_balancer_ips = $::hostname ? {
-        /^lvs400[13]$/ => [
-            $sip['text'][$::site],
-            $sip['bits'][$::site],
-            $sip['mobile'][$::site],
-        ],
-        /^lvs400[24]$/ => [
-            $sip['upload'][$::site],
-        ],
-    }
-
-    class { "lvs::balancer": service_ips => $lvs_balancer_ips }
+    include role::lvs::balancer
 
     interface::add_ip6_mapped { "main": interface => "eth0" }
+
     # Make sure GRO is off
     interface::offload { "eth0 gro": interface => "eth0", setting => "gro", 
value => "off" }
+
     # bnx2x is buggy with TPA (LRO) + LVS
     interface::offload { "eth0 lro": interface => "eth0", setting => "lro", 
value => "off" }
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4b1085d7c0cd0b2488b27c5ea4c2f65acaf0d7cc
Gerrit-PatchSet: 3
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

Reply via email to