Giuseppe Lavagetto has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/357824 )

Change subject: role::lvs::balancer: convert to role/profile (step 1)
......................................................................

role::lvs::balancer: convert to role/profile (step 1)

Collect all pybal configuration in a single profile, partially
untangling it from the lvs classes; also remove the now-unused class
lvs::pybal_configuration, whose content belonged to the profile.

This should be a noop, the only difference being dropping support for
trusty - that we don't use on loadbalancers anymore anyways.

Change-Id: If9b36ac91fe4f4eef33d296f3dc7065d4190141a
---
M hieradata/regex.yaml
M hieradata/role/codfw/lvs/balancer.yaml
M hieradata/role/common/lvs/balancer.yaml
M hieradata/role/eqiad/lvs/balancer.yaml
M hieradata/role/esams/lvs/balancer.yaml
M hieradata/role/ulsfo/lvs/balancer.yaml
M modules/lvs/manifests/balancer.pp
D modules/lvs/manifests/pybal_configuration.pp
A modules/profile/manifests/pybal.pp
M modules/role/manifests/lvs/balancer.pp
10 files changed, 67 insertions(+), 58 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/24/357824/1

diff --git a/hieradata/regex.yaml b/hieradata/regex.yaml
index 4f9f056..11d4b14 100644
--- a/hieradata/regex.yaml
+++ b/hieradata/regex.yaml
@@ -200,7 +200,7 @@
       value: standard
 lvs_temp_bgp_disable:
   __regex: !ruby/regexp /^lvs10(0[7-9]|1[0-2])\.eqiad\.wmnet$/
-  lvs::pybal_configuration::bgp: no
+  profile::pybal::bgp: no
 maps_test:
   __regex: !ruby/regexp /^maps-test200[1-4]\.codfw\.wmnet$/
   cassandra::target_version: '2.2'
diff --git a/hieradata/role/codfw/lvs/balancer.yaml 
b/hieradata/role/codfw/lvs/balancer.yaml
index e42e8c5..1853616 100644
--- a/hieradata/role/codfw/lvs/balancer.yaml
+++ b/hieradata/role/codfw/lvs/balancer.yaml
@@ -1,5 +1,4 @@
 debdeploy::grains:
   debdeploy-lvs-codfw:
     value: standard
-pybal::configuration::config: etcd
-pybal::configuration::config_host: conf2001.codfw.wmnet
+profile::pybal::config_host: conf2001.codfw.wmnet
diff --git a/hieradata/role/common/lvs/balancer.yaml 
b/hieradata/role/common/lvs/balancer.yaml
index 87258ef..c38139a 100644
--- a/hieradata/role/common/lvs/balancer.yaml
+++ b/hieradata/role/common/lvs/balancer.yaml
@@ -4,3 +4,4 @@
   listen_address: "%{::ipaddress}"
 prometheus::node_exporter::collectors_extra:
   - ipvs
+profile::pybal::config_source: etcd
diff --git a/hieradata/role/eqiad/lvs/balancer.yaml 
b/hieradata/role/eqiad/lvs/balancer.yaml
index 1ede6b5..307292d 100644
--- a/hieradata/role/eqiad/lvs/balancer.yaml
+++ b/hieradata/role/eqiad/lvs/balancer.yaml
@@ -1,5 +1,4 @@
 debdeploy::grains:
   debdeploy-lvs-eqiad:
     value: standard
-pybal::configuration::config: etcd
-pybal::configuration::config_host: conf2002.codfw.wmnet
+profile::pybal::config_host: conf2002.codfw.wmnet
diff --git a/hieradata/role/esams/lvs/balancer.yaml 
b/hieradata/role/esams/lvs/balancer.yaml
index 5c36c55..178d805 100644
--- a/hieradata/role/esams/lvs/balancer.yaml
+++ b/hieradata/role/esams/lvs/balancer.yaml
@@ -1,5 +1,4 @@
 debdeploy::grains:
   debdeploy-lvs-esams:
     value: standard
-pybal::configuration::config: etcd
-pybal::configuration::config_host: conf2002.codfw.wmnet
+profile::pybal::config_host: conf2002.codfw.wmnet
diff --git a/hieradata/role/ulsfo/lvs/balancer.yaml 
b/hieradata/role/ulsfo/lvs/balancer.yaml
index e45a195..85770b5 100644
--- a/hieradata/role/ulsfo/lvs/balancer.yaml
+++ b/hieradata/role/ulsfo/lvs/balancer.yaml
@@ -1,5 +1,4 @@
 debdeploy::grains:
   debdeploy-lvs-ulsfo:
     value: standard
-pybal::configuration::config: etcd
-pybal::configuration::config_host: conf2001.codfw.wmnet
+profile::pybal::config_host: conf2001.codfw.wmnet
diff --git a/modules/lvs/manifests/balancer.pp 
b/modules/lvs/manifests/balancer.pp
index 8c425bc..5336768 100644
--- a/modules/lvs/manifests/balancer.pp
+++ b/modules/lvs/manifests/balancer.pp
@@ -5,31 +5,17 @@
 #   - $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(
     $lvs_services,
     $lvs_class_hosts,
-    $pybal_global_options,
-    $site,
     $service_ips=[],
     $conftool_prefix = '/conftool/v1',
     ) {
 
-    include ::pybal
-    include ::pybal::confd
     include ::cpufrequtils # defaults to "performance", Ubuntu default is 
"ondemand"
     include ::initramfs
 
     # ethtool is also a package needed but it is included from base
-
-    class { '::pybal::configuration':
-        global_options  => $pybal_global_options,
-        lvs_services    => $lvs_services,
-        lvs_class_hosts => $lvs_class_hosts,
-        site            => $site,
-        conftool_prefix => $conftool_prefix,
-    }
 
     file { '/etc/modprobe.d/lvs.conf':
         ensure  => present,
diff --git a/modules/lvs/manifests/pybal_configuration.pp 
b/modules/lvs/manifests/pybal_configuration.pp
deleted file mode 100644
index 8ed360d..0000000
--- a/modules/lvs/manifests/pybal_configuration.pp
+++ /dev/null
@@ -1,25 +0,0 @@
-# lvs/configuration.pp
-
-class lvs::pybal_configuration (
-    $bgp = hiera('lvs::pybal_configuration::bgp', 'yes'),
-) {
-    $pybal = {
-        'bgp' => $bgp,
-        'bgp-peer-address' => $::hostname ? {
-            /^lvs100[1-3]$/ => '208.80.154.196', # cr1-eqiad
-            /^lvs100[4-6]$/ => '208.80.154.197', # cr2-eqiad
-            /^lvs100[789]$/ => '208.80.154.196', # cr1-eqiad
-            'lvs1010'       => '208.80.154.197', # cr2-eqiad
-            /^lvs200[1-3]$/ => '208.80.153.192', # cr1-codfw
-            /^lvs200[4-6]$/ => '208.80.153.193', # cr2-codfw
-            /^lvs300[12]$/  => '91.198.174.244',  # cr2-esams
-            /^lvs300[34]$/  => '91.198.174.245',  # cr1-esams
-            /^lvs400[12]$/  => '198.35.26.192',   # cr1-ulsfo
-            /^lvs400[34]$/  => '198.35.26.193',   # cr2-ulsfo
-            default         => '(unspecified)'
-            },
-        'bgp-nexthop-ipv4' => $facts['ipaddress'],
-        'bgp-nexthop-ipv6' => inline_template("<%= require 'ipaddr'; 
(IPAddr.new(@ipaddress6).mask(64) | IPAddr.new(\"::\" + @ipaddress.gsub('.', 
':'))).to_s() %>"),
-        'instrumentation' => 'yes',
-    }
-}
diff --git a/modules/profile/manifests/pybal.pp 
b/modules/profile/manifests/pybal.pp
new file mode 100644
index 0000000..31a2973
--- /dev/null
+++ b/modules/profile/manifests/pybal.pp
@@ -0,0 +1,54 @@
+# == class profile::pybal
+#
+# Configures pybal on a server, lvs or otherwise.
+class profile::pybal(
+    $bgp = hiera('profile::pybal::bgp'),
+    $conftool_prefix = hiera('conftool_prefix'),
+    $config_source = hiera('profile::pybal::config_source'),
+    $config_host = hiera('profile::pybal::config_host'),
+) {
+
+    require_os('Debian >= jessie')
+
+    # Includes all the common configs.
+    include ::lvs::configuration
+
+
+    # TODO: move bgp-peer-address to a parameter? it will require
+    # regex hiera, so maybe not
+    $global_options = {
+        'bgp' => $bgp,
+        'bgp-peer-address' => $::hostname ? {
+            /^lvs100[1-3]$/ => '208.80.154.196', # cr1-eqiad
+            /^lvs100[4-6]$/ => '208.80.154.197', # cr2-eqiad
+            /^lvs100[789]$/ => '208.80.154.196', # cr1-eqiad
+            'lvs1010'       => '208.80.154.197', # cr2-eqiad
+            /^lvs200[1-3]$/ => '208.80.153.192', # cr1-codfw
+            /^lvs200[4-6]$/ => '208.80.153.193', # cr2-codfw
+            /^lvs300[12]$/  => '91.198.174.244',  # cr2-esams
+            /^lvs300[34]$/  => '91.198.174.245',  # cr1-esams
+            /^lvs400[12]$/  => '198.35.26.192',   # cr1-ulsfo
+            /^lvs400[34]$/  => '198.35.26.193',   # cr2-ulsfo
+            default         => '(unspecified)'
+            },
+        'bgp-nexthop-ipv4' => $facts['ipaddress'],
+        'bgp-nexthop-ipv6' => inline_template("<%= require 'ipaddr'; 
(IPAddr.new(@ipaddress6).mask(64) | IPAddr.new(\"::\" + @ipaddress.gsub('.', 
':'))).to_s() %>"),
+        'instrumentation' => 'yes',
+    }
+
+    # Base class, not parametrized
+    class { '::pybal': }
+
+    class { '::pybal::configuration':
+        global_options  => $global_options,
+        lvs_services    => $::lvs::configuration::lvs_services,
+        lvs_class_hosts => $lvs::configuration::lvs_class_hosts,
+        site            => $::site,
+        conftool_prefix => $conftool_prefix,
+        config          => $config_source,
+        config_host     => $config_host
+    }
+
+    class { '::pybal::monitoring': }
+
+}
diff --git a/modules/role/manifests/lvs/balancer.pp 
b/modules/role/manifests/lvs/balancer.pp
index 233694d..62fa40b 100644
--- a/modules/role/manifests/lvs/balancer.pp
+++ b/modules/role/manifests/lvs/balancer.pp
@@ -8,7 +8,7 @@
     }
 
     include ::lvs::configuration
-    include ::lvs::pybal_configuration
+
     $sip = $lvs::configuration::service_ips
 
     # This is a temporary refactoring, we should do more to clean up here.
@@ -137,17 +137,14 @@
 
     # TODO: refactor the whole set of classes
     class { '::lvs::balancer':
-        service_ips          => $lvs_balancer_ips,
-        lvs_services         => $lvs::configuration::lvs_services,
-        lvs_class_hosts      => $lvs::configuration::lvs_class_hosts,
-        pybal_global_options => $lvs::pybal_configuration::pybal,
-        site                 => $::site,
-        conftool_prefix      => hiera('conftool_prefix'),
+        service_ips     => $lvs_balancer_ips,
+        lvs_services    => $lvs::configuration::lvs_services,
+        lvs_class_hosts => $lvs::configuration::lvs_class_hosts,
+        site            => $::site,
+        conftool_prefix => hiera('conftool_prefix'),
     }
 
-    if os_version('debian >= jessie') {
-        include ::pybal::monitoring
-    }
+    include ::profile::pybal
 
     if $::site in ['eqiad', 'codfw'] {
         include ::lvs::balancer::runcommand

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If9b36ac91fe4f4eef33d296f3dc7065d4190141a
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to