]> git.openstreetmap.org Git - chef.git/commitdiff
Merge remote-tracking branch 'github/pull/225'
authorTom Hughes <tom@compton.nu>
Thu, 4 Apr 2019 17:33:04 +0000 (18:33 +0100)
committerTom Hughes <tom@compton.nu>
Thu, 4 Apr 2019 17:33:04 +0000 (18:33 +0100)
74 files changed:
.rubocop_todo.yml
Gemfile.lock
cookbooks/apt/recipes/default.rb
cookbooks/apt/templates/default/preferences.erb [new file with mode: 0644]
cookbooks/bind/templates/default/db.10.erb
cookbooks/dev/recipes/default.rb
cookbooks/devices/templates/default/udev.rules.erb
cookbooks/dhcpd/templates/default/dhcpd.conf.erb
cookbooks/dmca/files/default/html/index.php
cookbooks/foundation/recipes/board.rb
cookbooks/foundation/recipes/dwg.rb
cookbooks/foundation/recipes/mwg.rb
cookbooks/foundation/recipes/wiki.rb
cookbooks/geodns/recipes/default.rb
cookbooks/geodns/templates/default/config.erb
cookbooks/hardware/attributes/default.rb
cookbooks/hardware/metadata.rb
cookbooks/hardware/recipes/default.rb
cookbooks/hardware/templates/default/cciss-vol-statusd.erb [new file with mode: 0755]
cookbooks/hardware/templates/default/irqbalance.erb
cookbooks/mediawiki/resources/site.rb
cookbooks/mediawiki/templates/default/mw-ext-MobileFrontend.inc.php.erb
cookbooks/munin/files/default/plugins/chrony [new file with mode: 0755]
cookbooks/networking/recipes/default.rb
cookbooks/networking/templates/default/interfaces.erb [deleted file]
cookbooks/networking/templates/default/resolved.conf.erb [new file with mode: 0644]
cookbooks/ntp/attributes/default.rb
cookbooks/ntp/recipes/default.rb
cookbooks/ntp/templates/default/chrony.conf.erb [new file with mode: 0644]
cookbooks/ntp/templates/default/ntp.conf.erb [deleted file]
cookbooks/openssh/templates/default/ssh_known_hosts.erb
cookbooks/piwik/attributes/default.rb
cookbooks/piwik/templates/default/cron.erb
cookbooks/web/attributes/default.rb
cookbooks/web/recipes/backend.rb
cookbooks/web/recipes/frontend.rb
cookbooks/web/recipes/rails.rb
cookbooks/web/resources/rails_port.rb
cookbooks/web/templates/default/apache.backend.erb
cookbooks/web/templates/default/apache.frontend.erb
cookbooks/wiki/recipes/default.rb
roles/base.rb
roles/boitata.rb
roles/c3sl.rb
roles/cherufe.rb
roles/dulcy.rb
roles/eddie.rb
roles/equinix.rb
roles/fafnir.rb [new file with mode: 0644]
roles/hp-g5.rb [deleted file]
roles/hp-g9.rb [new file with mode: 0644]
roles/karm.rb
roles/katla.rb
roles/nidhogg.rb
roles/odin.rb [new file with mode: 0644]
roles/shenron.rb
roles/spike-01.rb
roles/spike-02.rb
roles/spike-03.rb
roles/spike-04.rb
roles/spike-05.rb
roles/spike-06.rb [new file with mode: 0644]
roles/spike-07.rb [new file with mode: 0644]
roles/spike-08.rb [new file with mode: 0644]
roles/tabaluga.rb [new file with mode: 0644]
roles/thorn-01.rb
roles/thorn-02.rb
roles/thorn-03.rb
roles/thorn-04.rb
roles/thorn-05.rb
roles/tile.rb
roles/umu.rb [new file with mode: 0644]
roles/web-frontend.rb
roles/web.rb

index c0e6c97babfa71a799c46a6c14fa12f2d41fa6b2..44513eab3d1a0edda9c5c5f28aa98ef04c3ee55a 100644 (file)
@@ -13,7 +13,10 @@ Metrics/AbcSize:
 # Offense count: 27
 # Configuration parameters: CountComments.
 Metrics/BlockLength:
-  Max: 361
+  Max: 363
+
+Metrics/BlockNesting:
+  Max: 4
 
 # Offense count: 3
 Metrics/CyclomaticComplexity:
index 574d2e03be8d07713b20f4fb8e8dc37da3a18a74..8d5b39b381e25b34df07f7db7ca86d2ad8b31c69 100644 (file)
@@ -2,7 +2,7 @@ GEM
   remote: https://rubygems.org/
   specs:
     ast (2.4.0)
-    backports (3.11.4)
+    backports (3.12.0)
     builder (3.2.3)
     cucumber-core (3.2.1)
       backports (>= 3.8.0)
@@ -11,10 +11,10 @@ GEM
     cucumber-tag_expressions (1.1.1)
     diff-lcs (1.3)
     erubis (2.7.0)
-    ffi (1.9.25)
+    ffi (1.10.0)
     ffi-yajl (2.3.1)
       libyajl2 (~> 1.2)
-    foodcritic (14.3.0)
+    foodcritic (15.1.0)
       cucumber-core (>= 1.3, < 4.0)
       erubis
       ffi-yajl (~> 2.0)
@@ -28,40 +28,38 @@ GEM
     gyoku (1.3.1)
       builder (>= 2.1.2)
     httpclient (2.8.3)
-    jaro_winkler (1.5.1)
-    kitchen-vagrant (1.3.6)
-      test-kitchen (~> 1.4)
+    jaro_winkler (1.5.2)
+    kitchen-vagrant (1.5.1)
+      test-kitchen (>= 1.4, < 3)
     libyajl2 (1.2.0)
     little-plugger (1.1.4)
     logging (2.2.2)
       little-plugger (~> 1.1)
       multi_json (~> 1.10)
-    mini_portile2 (2.3.0)
-    mixlib-install (3.11.5)
+    mini_portile2 (2.4.0)
+    mixlib-install (3.11.11)
       mixlib-shellout
       mixlib-versioning
       thor
-    mixlib-shellout (2.4.0)
-    mixlib-versioning (1.2.2)
+    mixlib-shellout (2.4.4)
+    mixlib-versioning (1.2.7)
     multi_json (1.13.1)
-    net-scp (1.2.1)
-      net-ssh (>= 2.6.5)
-    net-ssh (4.2.0)
-      openssl
-    net-ssh-gateway (1.3.0)
-      net-ssh (>= 2.6.5)
+    net-scp (2.0.0)
+      net-ssh (>= 2.6.5, < 6.0.0)
+    net-ssh (5.2.0)
+    net-ssh-gateway (2.0.0)
+      net-ssh (>= 4.0.0)
     net-telnet (0.1.1)
-    nokogiri (1.8.5)
-      mini_portile2 (~> 2.3.0)
+    nokogiri (1.10.2)
+      mini_portile2 (~> 2.4.0)
     nori (2.6.0)
-    openssl (2.1.2)
-    parallel (1.12.1)
-    parser (2.5.3.0)
+    parallel (1.16.2)
+    parser (2.6.2.0)
       ast (~> 2.4.0)
     polyglot (0.3.5)
-    powerpack (0.1.2)
+    psych (3.1.0)
     rainbow (3.0.0)
-    rake (12.3.1)
+    rake (12.3.2)
     rspec (3.8.0)
       rspec-core (~> 3.8.0)
       rspec-expectations (~> 3.8.0)
@@ -78,14 +76,14 @@ GEM
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.8.0)
     rspec-support (3.8.0)
-    rubocop (0.60.0)
+    rubocop (0.66.0)
       jaro_winkler (~> 1.5.1)
       parallel (~> 1.10)
       parser (>= 2.5, != 2.5.1.1)
-      powerpack (~> 0.1)
+      psych (>= 3.1.0)
       rainbow (>= 2.2.2, < 4.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (~> 1.4.0)
+      unicode-display_width (>= 1.4.0, < 1.6)
     ruby-progressbar (1.10.0)
     rubyntlm (0.6.2)
     rubyzip (1.2.2)
@@ -96,17 +94,17 @@ GEM
       rspec-its
       specinfra (~> 2.72)
     sfl (2.3)
-    specinfra (2.76.3)
+    specinfra (2.77.0)
       net-scp
       net-ssh (>= 2.7)
       net-telnet (= 0.1.1)
       sfl
-    test-kitchen (1.23.2)
+    test-kitchen (2.0.1)
       mixlib-install (~> 3.6)
       mixlib-shellout (>= 1.2, < 3.0)
-      net-scp (~> 1.1)
-      net-ssh (>= 2.9, < 5.0)
-      net-ssh-gateway (~> 1.2)
+      net-scp (>= 1.1, < 3.0)
+      net-ssh (>= 2.9, < 6.0)
+      net-ssh-gateway (>= 1.2, < 3.0)
       thor (~> 0.19)
       winrm (~> 2.0)
       winrm-elevated (~> 1.0)
@@ -114,8 +112,8 @@ GEM
     thor (0.20.3)
     treetop (1.6.10)
       polyglot (~> 0.3)
-    unicode-display_width (1.4.0)
-    winrm (2.3.0)
+    unicode-display_width (1.5.0)
+    winrm (2.3.1)
       builder (>= 2.1.2)
       erubis (~> 2.7)
       gssapi (~> 1.2)
@@ -124,10 +122,10 @@ GEM
       logging (>= 1.6.1, < 3.0)
       nori (~> 2.0)
       rubyntlm (~> 0.6.0, >= 0.6.1)
-    winrm-elevated (1.1.0)
+    winrm-elevated (1.1.1)
       winrm (~> 2.0)
       winrm-fs (~> 1.0)
-    winrm-fs (1.3.1)
+    winrm-fs (1.3.2)
       erubis (~> 2.7)
       logging (>= 1.6.1, < 3.0)
       rubyzip (~> 1.1)
index 0d4a2d556f91ad6090219bf2f604382286399df1..14e37dd9b6ba75a29cb62383c3c8ed7c7873dcfd 100644 (file)
@@ -20,6 +20,7 @@
 package %w[
   apt
   apt-transport-https
+  gnupg
   update-notifier-common
 ]
 
@@ -27,6 +28,13 @@ file "/etc/motd.tail" do
   action :delete
 end
 
+template "/etc/apt/preferences.d/99-chef" do
+  source "preferences.erb"
+  owner "root"
+  group "root"
+  mode 0o644
+end
+
 apt_update "/etc/apt/sources.list" do
   action :nothing
 end
@@ -83,7 +91,7 @@ end
 apt_repository "management-component-pack" do
   action repository_actions["management-component-pack"]
   uri "https://downloads.linux.hpe.com/SDR/repo/mcp"
-  distribution "#{node[:lsb][:codename]}/current"
+  distribution "#{node[:lsb][:codename]}/current-gen9"
   components ["non-free"]
   key "C208ADDE26C2B797"
 end
diff --git a/cookbooks/apt/templates/default/preferences.erb b/cookbooks/apt/templates/default/preferences.erb
new file mode 100644 (file)
index 0000000..6f89c16
--- /dev/null
@@ -0,0 +1,5 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
+Package: cciss-vol-status
+Pin: origin "*.ubuntu.com"
+Pin-Priority: 1100
index 73855f4f33d794562046830096a40574e76d76b8..05dc9d618caed69aac6bf684102624a036fdb8db 100644 (file)
@@ -2,7 +2,7 @@
 
 $TTL   604800
 @      IN      SOA     <%= node[:fdqn] %>. root.openstreetmap.org. (
-                     2018072601                ; Serial
+                     2019040301                ; Serial
                          604800                ; Refresh
                           86400                ; Retry
                         2419200                ; Expire
@@ -90,6 +90,11 @@ $TTL 604800
 8.48.0         IN      PTR     spike-03.ams.openstreetmap.org.
 9.48.0         IN      PTR     dulcy.ams.openstreetmap.org.
 10.48.0                IN      PTR     ironbelly.ams.openstreetmap.org.
+11.48.0                IN      PTR     spike-06.ams.openstreetmap.org.
+12.48.0                IN      PTR     spike-07.ams.openstreetmap.org.
+13.48.0                IN      PTR     spike-08.ams.openstreetmap.org.
+14.48.0                IN      PTR     tabaluga.ams.openstreetmap.org.
+15.48.0                IN      PTR     odin.ams.openstreetmap.org.
 50.48.0                IN      PTR     karm.ams.openstreetmap.org.
 51.48.0                IN      PTR     thorn-01.ams.openstreetmap.org.
 52.48.0                IN      PTR     thorn-02.ams.openstreetmap.org.
@@ -105,6 +110,11 @@ $TTL       604800
 8.49.0         IN      PTR     spike-03.oob.openstreetmap.org.
 9.49.0         IN      PTR     dulcy.oob.openstreetmap.org.
 10.49.0                IN      PTR     ironbelly.oob.openstreetmap.org.
+11.49.0                IN      PTR     spike-06.oob.openstreetmap.org.
+12.49.0                IN      PTR     spike-07.oob.openstreetmap.org.
+13.49.0                IN      PTR     spike-08.oob.openstreetmap.org.
+14.49.0                IN      PTR     tabaluga.oob.openstreetmap.org.
+15.49.0                IN      PTR     odin.oob.openstreetmap.org.
 50.49.0                IN      PTR     karm.oob.openstreetmap.org.
 51.49.0                IN      PTR     thorn-01.oob.openstreetmap.org.
 52.49.0                IN      PTR     thorn-02.oob.openstreetmap.org.
index 613305d21172cddd17e745bbb0bf8719e2df2c04..63d82b37d2774e22c577effb0f89609589f7aab4 100644 (file)
@@ -243,6 +243,7 @@ if node[:postgresql][:clusters][:"9.5/main"]
     log_directory = "#{site_directory}/logs"
     rails_directory = "#{site_directory}/rails"
     cgimap_directory = "#{site_directory}/cgimap"
+    gpx_directory = "#{site_directory}/gpx"
 
     if details[:repository]
       site_aliases = details[:aliases] || []
@@ -273,6 +274,24 @@ if node[:postgresql][:clusters][:"9.5/main"]
         mode 0o755
       end
 
+      directory gpx_directory do
+        owner "apis"
+        group "apis"
+        mode 0o755
+      end
+
+      directory "#{gpx_directory}/traces" do
+        owner "apis"
+        group "apis"
+        mode 0o755
+      end
+
+      directory "#{gpx_directory}/images" do
+        owner "apis"
+        group "apis"
+        mode 0o755
+      end
+
       rails_port site_name do
         ruby ruby_version
         directory rails_directory
@@ -283,10 +302,12 @@ if node[:postgresql][:clusters][:"9.5/main"]
         database_port node[:postgresql][:clusters][:"9.5/main"][:port]
         database_name database_name
         database_username "apis"
+        gpx_dir gpx_directory
         log_path "#{log_directory}/rails.log"
         memcache_servers ["127.0.0.1"]
         csp_enforce true
         run_migrations true
+        trace_use_job_queue true
       end
 
       template "#{rails_directory}/config/initializers/setup.rb" do
index a9f7f3fdf21efa7da2193ba5ea4880276d49deec..9c703409dc82e0d1d087272a6bcaef367b7cc778 100644 (file)
@@ -29,8 +29,10 @@ ACTION=="add", SUBSYSTEM=="block", ENV{ID_BUS}=="<%= device[:bus] %>", ENV{ID_SE
 # Disable scatter-gather offload for HP NC362i network controllers
 SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x10c9", ATTRS{subsystem_vendor}=="0x103c", ATTRS{subsystem_device}=="0x323f", RUN+="/sbin/ethtool -K $name gso off tso off sg off gro off"
 
-# Fix Power Saving Bug on Intel 82574L network controller in Supermicro HPC machines
-SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x10d3", ATTRS{subsystem_vendor}=="0x15d9", ATTRS{subsystem_device}=="0x10d3", RUN+="/usr/local/bin/fixeep-82574_83.sh $name"
+# Fix Power Saving Bug on Intel 82574L and Intel 82583 network controllers
+SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x10d3", RUN+="/usr/local/bin/fixeep-82574_83.sh $name"
+SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x10f6", RUN+="/usr/local/bin/fixeep-82574_83.sh $name"
+SUBSYSTEM=="net", ACTION=="add", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x150c", RUN+="/usr/local/bin/fixeep-82574_83.sh $name"
 
 # Workaround unreliable Western Digital WD RE3/RE4 disks (ATA only)
 # Set sufficent Linux subsystem timeout and fix severe NCQ performance issue
@@ -50,3 +52,6 @@ ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_BUS}=="ata", ENV
 ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_BUS}=="ata", ENV{ID_MODEL}=="ST31000340NS", RUN+="/usr/sbin/smartctl -q errorsonly -l scterc,100,100 $env{DEVNAME}"
 ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_BUS}=="ata", ENV{ID_MODEL}=="HGST_HTS725050A7E630", RUN+="/usr/sbin/smartctl -q errorsonly -l scterc,100,100 $env{DEVNAME}"
 ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_BUS}=="ata", ENV{ID_MODEL}=="HGST_HTE721010A9E630", RUN+="/usr/sbin/smartctl -q errorsonly -l scterc,100,100 $env{DEVNAME}"
+
+# Enable request merging for NVME devices
+ACTION=="add", SUBSYSTEM=="block", DRIVERS=="nvme", ATTR{queue/nomerges}="1"
index b6bf5a5f84ba92903d4c8935385ebfb88f2d35ff..def1960bc5461eed8869d1f4fe4306d7ce9103d9 100644 (file)
@@ -86,6 +86,12 @@ host noquiklos.oob.openstreetmap.org {
   fixed-address noquiklos.oob.openstreetmap.org;
 }
 
+host odin.oob.openstreetmap.org {
+  hardware ethernet ac:1f:6b:c0:59:a3;
+  server-name "odin.oob.openstreetmap.org";
+  fixed-address odin.oob.openstreetmap.org;
+}
+
 host orm.oob.openstreetmap.org {
   hardware ethernet 00:e0:81:c5:26:80;
   server-name "orm.oob.openstreetmap.org";
@@ -146,6 +152,30 @@ host spike-03.oob.openstreetmap.org {
   fixed-address spike-03.oob.openstreetmap.org;
 }
 
+host spike-06.oob.openstreetmap.org {
+  hardware ethernet 38:63:bb:3a:41:a0;
+  server-name "spike-06.oob.openstreetmap.org";
+  fixed-address spike-06.oob.openstreetmap.org;
+}
+
+host spike-07.oob.openstreetmap.org {
+  hardware ethernet 14:02:ec:38:e9:52;
+  server-name "spike-07.oob.openstreetmap.org";
+  fixed-address spike-07.oob.openstreetmap.org;
+}
+
+host spike-08.oob.openstreetmap.org {
+  hardware ethernet 38:63:bb:3a:41:94;
+  server-name "spike-08.oob.openstreetmap.org";
+  fixed-address spike-08.oob.openstreetmap.org;
+}
+
+host tabaluga.oob.openstreetmap.org {
+  hardware ethernet 38:63:bb:39:82:7a;
+  server-name "tabaluga.oob.openstreetmap.org";
+  fixed-address tabaluga.oob.openstreetmap.org;
+}
+
 host tiamat-00.oob.openstreetmap.org {
   hardware ethernet 00:25:90:1a:76:01;
   server-name "tiamat-00.oob.openstreetmap.org";
index 6e6aa972f1cbc012c2eeff817c11fd7441c43d33..4b283d3b30cd9afaae840ab464e3ff7c1f79b592 100644 (file)
@@ -37,7 +37,7 @@ $form->addElement('static', null, '<p>To file a copyright infringement notificat
 <li>A statement that the complaining party has a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law.
 <li>A statement that the information in the notification is accurate and, under penalty of perjury, that the complaining party is authorized to act on behalf of the owner of an exclusive right that is allegedly infringed.
 </ul><p>To expedite our ability to process your request, such written notice should be sent to our designated agent via our online copyright complaint form below.</p>
-<p>This form is only for cases where you believe that material on OpenStreetMap\'s websites or in its geodata database infringes your copyright or that of your clients. For example, you claim someone has copied material from a map belonging to you. If you have come here for another reason, <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure/When_To_Use_The_Form">Go here</a>.</p>');
+<p>This form is only for cases where you believe that material on OpenStreetMap\'s websites or in its geodata database infringes your copyright or that of your clients. For example, you claim someone has copied material from a map belonging to you. If you have come here for another reason, <a href="https://wiki.osmfoundation.org/wiki/Licence_and_Legal_FAQ/Takedown_procedure/When_To_Use_The_Form">Go here</a>.</p>');
 
 $form->addElement('text', 'url',                'URL of Allegedly Infringing Material', array('size' => 50, 'maxlength' => 255));
 $form->addRule('url', 'Please enter URL of Allegedly Infringing Material', 'required', null, 'client');
index fb94144165d8efe47c3b403e472996297154b485..3388848b8238910f6f206336b5a47d548a887985 100644 (file)
@@ -38,11 +38,6 @@ mediawiki_site "board.osmfoundation.org" do
   recaptcha_private_key passwords["board"]["recaptcha"]
 end
 
-mediawiki_extension "MobileFrontend" do
-  site "board.osmfoundation.org"
-  template "mw-ext-MobileFrontend.inc.php.erb"
-end
-
 cookbook_file "/srv/board.osmfoundation.org/Wiki.png" do
   owner node[:mediawiki][:user]
   group node[:mediawiki][:group]
index 5df9442eee9fd4a9f75ff91e362fa20af214edaf..9ae78d5c34b4e5aac8e82dd418b7e1554d2fbb7e 100644 (file)
@@ -38,11 +38,6 @@ mediawiki_site "dwg.osmfoundation.org" do
   recaptcha_private_key passwords["dwg"]["recaptcha"]
 end
 
-mediawiki_extension "MobileFrontend" do
-  site "dwg.osmfoundation.org"
-  template "mw-ext-MobileFrontend.inc.php.erb"
-end
-
 cookbook_file "/srv/dwg.osmfoundation.org/Wiki.png" do
   owner node[:mediawiki][:user]
   group node[:mediawiki][:group]
index df98b35421ec62bfa59ccbd13875395d5539992e..963e24fe54f78a384cf6a87374e1b8fd7136c1d2 100644 (file)
@@ -38,11 +38,6 @@ mediawiki_site "mwg.osmfoundation.org" do
   recaptcha_private_key passwords["mwg"]["recaptcha"]
 end
 
-mediawiki_extension "MobileFrontend" do
-  site "mwg.osmfoundation.org"
-  template "mw-ext-MobileFrontend.inc.php.erb"
-end
-
 cookbook_file "/srv/mwg.osmfoundation.org/Wiki.png" do
   owner node[:mediawiki][:user]
   group node[:mediawiki][:group]
index e13aaa186d6adc88d210baa2ff17168681b34f65..8824b88a1c4a1216ff0089336f591270402b1bf8 100644 (file)
@@ -41,11 +41,6 @@ mediawiki_site "wiki.osmfoundation.org" do
   extra_file_extensions ["mp3"]
 end
 
-mediawiki_extension "MobileFrontend" do
-  action :delete
-  site "wiki.osmfoundation.org"
-end
-
 mediawiki_skin "osmf" do
   site "wiki.osmfoundation.org"
   repository "git://github.com/openstreetmap/mediawiki-skins-osmf.git"
index a2134457ffab3fe5ba7fe3838a982c1c31f4de7b..0e20e2a26c140c4e1804a2567de46ea2975dbf83 100644 (file)
@@ -45,10 +45,6 @@ template "/etc/gdnsd/zones/geo.openstreetmap.org" do
   notifies :restart, "service[gdnsd]"
 end
 
-service "systemd-resolved" do
-  action [:disable, :stop]
-end
-
 service "gdnsd" do
   action [:enable, :start]
   supports :status => true, :restart => true, :reload => true
index dfd84c38b0ce7ae862de246b91803c3ff637acbe..2d1ed8ef01d2f1ae3af9b23214bfea352cc072f8 100644 (file)
@@ -1,3 +1,7 @@
+options => {
+  listen => [ <%= node.ipaddresses(:role => :external).join(", ") %> ]
+}
+
 plugins => {
   geoip => {
     maps => {
index 414983b84c644420ca738f67adae6786d9be339d..2619fd5497745302b051851d7e3d02ffa7fd6266 100644 (file)
@@ -37,3 +37,10 @@ if File.exist?("/proc/xen")
 elsif node[:kernel][:modules].include?("i6300esb")
   default[:hardware][:watchdog] = "none"
 end
+
+if File.exist?("sys/devices/system/cpu/cpu0/cpufreq/scaling_governor") &&
+   File.read("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor").chomp == "ondemand"
+  default[:sysfs][:cpufreq_ondemand][:comment] = "Tune the ondemand CPU frequency governor"
+  default[:sysfs][:cpufreq_ondemand][:parameters][:"devices/system/cpu/cpufreq/ondemand/up_threshold"] = "25"
+  default[:sysfs][:cpufreq_ondemand][:parameters][:"devices/system/cpu/cpufreq/ondemand/sampling_down_factor"] = "100"
+end
index a702ae0c6e7fc79fe92903a189f26babbe24fbe5..71771957285373bd6b06da840591a9b44dcacebc 100644 (file)
@@ -11,3 +11,4 @@ depends           "git"
 depends           "munin"
 depends           "ohai"
 depends           "tools"
+depends           "sysfs"
index b74d4235ab71045fd62576c7069b70dbb4cf3c7b..bd525babff6d0e67e80a1ca88ffd5866e188af4a 100644 (file)
@@ -84,7 +84,7 @@ when "TYAN Computer Corporation"
   units << "0"
 when "Supermicro"
   case product
-  when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-1028U-TN10RT+", "SYS-2028U-TN24R4T+", "Super Server"
+  when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-1028U-TN10RT+", "SYS-2028U-TN24R4T+", "SYS-1029P-WTRT", "Super Server"
     units << "1"
   else
     units << "0"
@@ -247,6 +247,26 @@ else
   end
 end
 
+if status_packages.include?("cciss-vol-status")
+  template "/usr/local/bin/cciss-vol-statusd" do
+    source "cciss-vol-statusd.erb"
+    owner "root"
+    group "root"
+    mode 0o755
+    notifies :restart, "service[cciss-vol-statusd]"
+  end
+
+  systemd_service "cciss-vol-statusd" do
+    description "Check cciss_vol_status values in the background"
+    exec_start "/usr/local/bin/cciss-vol-statusd"
+    private_tmp true
+    protect_system "full"
+    protect_home true
+    no_new_privileges true
+    notifies :restart, "service[cciss-vol-statusd]"
+  end
+end
+
 ["cciss-vol-status", "mpt-status", "sas2ircu-status", "megaraid-status", "megaclisas-status", "aacraid-status"].each do |status_package|
   if status_packages.include?(status_package)
     package status_package
@@ -294,21 +314,23 @@ intel_nvmes = nvmes.select { |pci| pci[:vendor_name] == "Intel Corporation" }
 if !intel_ssds.empty? || !intel_nvmes.empty?
   package "unzip"
 
-  remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_3.0.13_Linux.zip" do
-    source "https://downloadmirror.intel.com/28460/eng/Intel_SSD_Data_Center_Tool_3.0.17_Linux.zip"
+  intel_ssd_tool_version = "3.0.19"
+
+  remote_file "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do
+    source "https://downloadmirror.intel.com/28639/eng/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip"
   end
 
-  execute "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_3.0.13_Linux.zip" do
-    command "unzip Intel_SSD_Data_Center_Tool_3.0.13_Linux.zip isdct_3.0.13.400-17_amd64.deb"
+  execute "#{Chef::Config[:file_cache_path]}/Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip" do
+    command "unzip Intel_SSD_Data_Center_Tool_#{intel_ssd_tool_version}_Linux.zip isdct_#{intel_ssd_tool_version}-1_amd64.deb"
     cwd Chef::Config[:file_cache_path]
     user "root"
     group "root"
-    not_if { File.exist?("#{Chef::Config[:file_cache_path]}/isdct_3.0.13.400-17_amd64.deb") }
+    not_if { File.exist?("#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb") }
   end
 
   dpkg_package "isdct" do
-    version "3.0.13.400-17"
-    source "#{Chef::Config[:file_cache_path]}/isdct_3.0.13.400-17_amd64.deb"
+    version "#{intel_ssd_tool_version}-1"
+    source "#{Chef::Config[:file_cache_path]}/isdct_#{intel_ssd_tool_version}-1_amd64.deb"
   end
 end
 
@@ -331,6 +353,9 @@ disks = disks.map do |disk|
         munin = "#{device}-#{Regexp.last_match(1)}:#{Regexp.last_match(2)}"
       end
     end
+  elsif disk[:device] =~ %r{^/dev/(nvme\d+)n\d+$}
+    device = Regexp.last_match(1)
+    munin = device
   elsif disk[:device]
     device = disk[:device].sub("/dev/", "")
     munin = device
@@ -346,7 +371,7 @@ disks = disks.map do |disk|
   ]
 end
 
-disks = disks.compact
+disks = disks.compact.uniq
 
 if disks.count.positive?
   package "smartmontools"
diff --git a/cookbooks/hardware/templates/default/cciss-vol-statusd.erb b/cookbooks/hardware/templates/default/cciss-vol-statusd.erb
new file mode 100755 (executable)
index 0000000..8f25650
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+NAME="cciss-vol-statusd"
+STATUSFILE=/var/run/$NAME.status
+
+# Do not touch you can configure this in /etc/default/cciss-vol-statusd
+MAILTO=root   # Where to report problems
+PERIOD=600    # Seconds between each check    (default 10 minutes)
+REMIND=7200   # Seconds between each reminder (default 2 hours)
+ID=/dev/cciss/c0d0
+
+[ -e /etc/default/cciss-vol-statusd ] && . /etc/default/cciss-vol-statusd
+
+# Gracefully exit if the package has been removed.
+test -x /usr/bin/cciss_vol_status || exit 0
+
+while true ; do
+    # Check ever $PERIOD seconds, send email on every status
+    # change and repeat ever $REMIND seconds if the raid is still
+    # bad.
+    if (cciss_vol_status $ID); then
+        BADRAID=false
+    else
+        BADRAID=true
+        logger -t cciss-vol-statusd "detected non-optimal RAID status"
+    fi
+    STATUSCHANGE=false
+    if [ true = "$BADRAID" ] ; then
+        # RAID not OK
+        (cciss_vol_status $ID) > $STATUSFILE.new
+        if [ ! -f $STATUSFILE ] ; then # RAID just became broken
+            STATUSCHANGE=true
+            mv $STATUSFILE.new $STATUSFILE
+        elif cmp -s $STATUSFILE $STATUSFILE.new ; then
+            # No change.  Should we send reminder?
+            LASTTIME="`stat -c '%Z' $STATUSFILE`"
+            NOW="`date +%s`"
+            SINCELAST="`expr $NOW - $LASTTIME`"
+            if [ $REMIND -le "$SINCELAST" ]; then
+                # Time to send reminder
+                STATUSCHANGE=true
+                mv $STATUSFILE.new $STATUSFILE
+            else
+                rm $STATUSFILE.new
+            fi
+        else
+            STATUSCHANGE=true
+            mv $STATUSFILE.new $STATUSFILE
+        fi
+    else
+        # RAID OK
+        if [ -f $STATUSFILE ] ; then
+            rm $STATUSFILE
+            STATUSCHANGE=true
+        fi
+    fi
+
+    if [ true = "$STATUSCHANGE" ]; then
+        hostname="`uname -n`"
+        (
+            cat <<EOF
+This is a RAID status update from cciss-vol-statusd.  The cciss_vol_status
+program reports that one of the RAIDs changed state:
+
+EOF
+            if [ -f $STATUSFILE ] ; then
+                cat $STATUSFILE
+            else
+                (cciss_vol_status $ID)
+            fi
+            echo
+            echo "Report from $0 on $hostname"
+        ) | mail -s "info: CCISS raid status change on $hostname" $MAILTO
+    fi
+
+    sleep $PERIOD
+done
index e416a090cbec26b8ce6a96c6c9a6b9c0c4c291ac..4a10bd20d03e017d7f7194eac7f9070e41904e89 100644 (file)
@@ -1,11 +1,11 @@
 # DO NOT EDIT - This file is being maintained by Chef
-#Configuration for the irqbalance daemon
+# Configuration for the irqbalance daemon
 
-#Should irqbalance be enabled?
+# Should irqbalance be enabled?
 ENABLED="1"
-#Balance the IRQs only once?
+# Balance the IRQs only once?
 ONESHOT="0"
 
-#irqbalance maintainer recommends ignore hint policy
-#http://sourceforge.net/p/e1000/bugs/394/?page=1
+# irqbalance maintainer recommends ignore hint policy
+# http://sourceforge.net/p/e1000/bugs/394/?page=1
 DOPTIONS="--hintpolicy=ignore"
index b993b8566f98cab79ff7e1691b9183c9b7660e14..381f7d3aa41173703c5986323320fdbfddc1d34c 100644 (file)
@@ -187,7 +187,19 @@ action :create do
               :database_params => database_params
   end
 
-  mediawiki_skin "CologneBlue" do # ~FC005
+  # MobileFrontend extension is required by MinervaNeue skin
+  mediawiki_extension "MobileFrontend" do # ~FC005
+    site new_resource.site
+    template "mw-ext-MobileFrontend.inc.php.erb"
+  end
+
+  # MobileFrontend extension is required by MinervaNeue skin
+  mediawiki_skin "MinervaNeue" do # ~FC005
+    site new_resource.site
+    update_site false
+  end
+
+  mediawiki_skin "CologneBlue" do
     site new_resource.site
     update_site false
   end
index 85da86148a7f9160a779903b37bdf5f00e12eb93..dc6834123b6bfd3b83edd509a646ddc9f53cc9d8 100644 (file)
@@ -7,4 +7,4 @@ wfLoadExtension('MobileFrontend');
 $wgMFAutodetectMobileView = true;
 
 // Set the default skin
-$wgMFDefaultSkinClass = 'SkinVector';
+$wgMFDefaultSkinClass = 'SkinMinerva';
diff --git a/cookbooks/munin/files/default/plugins/chrony b/cookbooks/munin/files/default/plugins/chrony
new file mode 100755 (executable)
index 0000000..314860f
--- /dev/null
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+: <<=cut
+
+=head1 NAME
+
+parse Chrony Tracking output for timeserver status information
+
+=head1 APPLICABLE SYSTEMS
+
+Any system with a local chronyd service.
+
+=head1 CONFIGURATION
+
+No configuration.
+
+=head1 MAGIC MARKERS
+
+  #%# family=auto
+  #%# capabilities=autoconf
+
+=head1 VERSION
+
+Revision 0.1 2008/08/23 13:06:00 joti
+
+  First version only chronyc tracking, autodetection included.
+
+Revision 0.2 2008/10/11 16:09:00 joti
+
+  Added scaling of other values to match with frequency, added more description to fields
+
+Revision 0.3 2014/02/16 zjttoefs
+
+  reduce forking by using awk
+  do not limit output precision
+  add stratum monitoring
+  detect slow/fast time or freqency and adjust sign of value accordingly
+  remove commented out code
+
+Revision 0.4 2016/11/10 Lars Kruse
+
+  rewrite field handling
+  use "which" for "chronyc" location
+  switch from "bash" to "sh"
+  fix exit code of failing "autoconf"
+
+=head1 AUTHOR
+
+  joti
+  zjttoefs
+  Lars Kruse <devel@sumpfralle.de>
+
+=cut
+
+CHRONYC="$(which chronyc | head -1)"
+
+# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
+# field definitions:
+#   - munin fieldname
+#   - factor for graph visualization (all values are supposed to reach a similar dimension)
+#   - regular expression of the chrony output line (may not contain whitespace, case insensitive)
+#   - label (may include "%d" for including the factor; may contain whitespace)
+fields="stratum                1       ^Stratum                Stratum
+       systime         1000    ^System.time            System Time (x%d)
+       frequency       1       ^Frequency              Frequency (ppm)
+       residualfreq    100     ^Residual.freq          Residual Freq (ppm, x%d)
+       skew            100     ^Skew                   Skew (ppm, x%d)
+       rootdelay       1000    ^Root.delay             Root delay (seconds, x%d)
+       rootdispersion  1000    ^Root.dispersion        Root dispersion (seconds, x%d)"
+
+# chrony example output (v2.4.1):
+#   Reference ID    : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
+#   Stratum         : 2
+#   Ref time (UTC)  : Thu Nov 10 22:39:50 2016
+#   System time     : 0.000503798 seconds slow of NTP time
+#   Last offset     : +0.000254355 seconds
+#   RMS offset      : 0.002186779 seconds
+#   Frequency       : 17.716 ppm slow
+#   Residual freq   : +0.066 ppm
+#   Skew            : 4.035 ppm
+#   Root delay      : 0.042980 seconds
+#   Root dispersion : 0.005391 seconds
+#   Update interval : 258.4 seconds
+#   Leap status     : Normal
+
+
+if [ "$1" = "autoconf" ]; then
+       if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
+               echo yes
+       else
+               echo "no (missing 'chronyc' executable)"
+       fi
+       exit 0
+fi
+
+if [ "$1" = "config" ]; then
+       echo 'graph_title Chrony Tracking Stats'
+       echo 'graph_args --base 1000 -l 0'
+       echo 'graph_vlabel (seconds,ppm)'
+       echo 'graph_category time'
+       echo "$fields" | while read fieldname factor regex label; do
+               # insert the factor, if "%d" is part of the label
+               printf "${fieldname}.label $label\n" "$factor"
+               echo "${fieldname}.type GAUGE"
+       done
+       exit 0
+fi
+
+chrony_status="$("$CHRONYC" tracking)"
+echo "$fields" | while read fieldname factor regex label; do
+       status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
+       if [ -z "$status_line" ]; then
+               value="U"
+       else
+               # the keyword "slow" indicates negative values
+               value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
+       fi
+       echo "${fieldname}.value $value"
+done
index c45daae3fca5e4af0c6cf0596936e6213d43c148..f6015a17eb6d692d460236569b68441edf3ca55f 100644 (file)
 # * node[:networking][:nameservers]
 
 require "ipaddr"
-
-network_packages = []
+require "yaml"
+
+netplan = {
+  "network" => {
+    "version" => 2,
+    "renderer" => "networkd",
+    "ethernets" => {},
+    "bonds" => {},
+    "vlans" => {}
+  }
+}
 
 node[:networking][:interfaces].each do |name, interface|
   if interface[:interface]
-    network_packages |= ["vlan"] if interface[:interface] =~ /\.\d+$/
-    network_packages |= ["ifenslave"] if interface[:bond]
-
     if interface[:role] && (role = node[:networking][:roles][interface[:role]])
       if role[interface[:family]]
         node.normal[:networking][:interfaces][name][:prefix] = role[interface[:family]][:prefix]
@@ -43,18 +49,111 @@ node[:networking][:interfaces].each do |name, interface|
 
     node.normal[:networking][:interfaces][name][:netmask] = (~IPAddr.new(interface[:address]).mask(0)).mask(prefix)
     node.normal[:networking][:interfaces][name][:network] = IPAddr.new(interface[:address]).mask(prefix)
+
+    interface = node[:networking][:interfaces][name]
+
+    deviceplan = if interface[:interface] =~ /^(.*)\.(\d+)$/
+                   netplan["network"]["vlans"][interface[:interface]] ||= {
+                     "id" => Regexp.last_match(2).to_i,
+                     "link" => Regexp.last_match(1),
+                     "accept-ra" => false,
+                     "addresses" => [],
+                     "routes" => []
+                   }
+                 elsif interface[:interface] =~ /^bond\d+$/
+                   netplan["network"]["bonds"][interface[:interface]] ||= {
+                     "accept-ra" => false,
+                     "addresses" => [],
+                     "routes" => []
+                   }
+                 else
+                   netplan["network"]["ethernets"][interface[:interface]] ||= {
+                     "accept-ra" => false,
+                     "addresses" => [],
+                     "routes" => []
+                   }
+                 end
+
+    deviceplan["addresses"].push("#{interface[:address]}/#{prefix}")
+
+    if interface[:bond]
+      deviceplan["interfaces"] = interface[:bond][:slaves].to_a
+
+      deviceplan["parameters"] = {
+        "mode" => interface[:bond][:mode] || "active-backup",
+        "primary" => interface[:bond][:slaves].first,
+        "mii-monitor-interval" => interface[:bond][:miimon] || 100,
+        "down-delay" => interface[:bond][:downdelay] || 200,
+        "up-delay" => interface[:bond][:updelay] || 200
+      }
+
+      deviceplan["parameters"]["transmit-hash-policy"] = interface[:bond][:xmithashpolicy] if interface[:bond][:xmithashpolicy]
+      deviceplan["parameters"]["lacp-rate"] = interface[:bond][:lacprate] if interface[:bond][:lacprate]
+    end
+
+    if interface[:gateway]
+      if interface[:family] == "inet"
+        default_route = "0.0.0.0/0"
+      elsif interface[:family] == "inet6"
+        default_route = "::/0"
+      end
+
+      deviceplan["routes"].push(
+        "to" => default_route,
+        "via" => interface[:gateway],
+        "metric" => interface[:metric],
+        "on-link" => true
+      )
+
+      # This ordering relies on systemd-networkd adding routes
+      # in reverse order and will need moving before the previous
+      # route once that is fixed:
+      #
+      # https://github.com/systemd/systemd/issues/5430
+      # https://github.com/systemd/systemd/pull/10938
+      if interface[:family] == "inet6" &&
+         !interface[:network].include?(interface[:gateway]) &&
+         !IPAddr.new("fe80::/64").include?(interface[:gateway])
+        deviceplan["routes"].push(
+          "to" => interface[:gateway],
+          "scope" => "link"
+        )
+      end
+    end
   else
     node.rm(:networking, :interfaces, name)
   end
 end
 
-package network_packages
+netplan["network"]["bonds"].each_value do |bond|
+  bond["interfaces"].each do |interface|
+    netplan["network"]["ethernets"][interface] ||= { "accept-ra" => false }
+  end
+end
+
+netplan["network"]["vlans"].each_value do |vlan|
+  unless vlan["link"] =~ /^bond\d+$/
+    netplan["network"]["ethernets"][vlan["link"]] ||= { "accept-ra" => false }
+  end
+end
+
+file "/etc/netplan/01-netcfg.yaml" do
+  action :delete
+end
+
+file "/etc/netplan/50-cloud-init.yaml" do
+  action :delete
+end
 
-template "/etc/network/interfaces" do
-  source "interfaces.erb"
+file "/etc/netplan/99-chef.yaml" do
   owner "root"
   group "root"
   mode 0o644
+  content YAML.dump(netplan)
+end
+
+package "cloud-init" do
+  action :purge
 end
 
 execute "hostname" do
@@ -77,20 +176,22 @@ template "/etc/hosts" do
   mode 0o644
 end
 
-unless node[:networking][:nameservers].empty?
-  link "/etc/resolv.conf" do
-    action :delete
-    link_type :symbolic
-    to "/run/resolvconf/resolv.conf"
-    only_if { File.symlink?("/etc/resolv.conf") }
-  end
+service "systemd-resolved" do
+  action [:enable, :start]
+end
 
-  template "/etc/resolv.conf" do
-    source "resolv.conf.erb"
-    owner "root"
-    group "root"
-    mode 0o644
-  end
+directory "/etc/systemd/resolved.conf.d" do
+  owner "root"
+  group "root"
+  mode 0o755
+end
+
+template "/etc/systemd/resolved.conf.d/99-chef.conf" do
+  source "resolved.conf.erb"
+  owner "root"
+  group "root"
+  mode 0o644
+  notifies :restart, "service[systemd-resolved]"
 end
 
 node.interfaces(:role => :internal) do |interface|
diff --git a/cookbooks/networking/templates/default/interfaces.erb b/cookbooks/networking/templates/default/interfaces.erb
deleted file mode 100644 (file)
index d0d4dd7..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-# DO NOT EDIT - This file is being maintained by Chef
-
-iface lo inet loopback
-<% node[:networking][:interfaces].each do |name,interface| -%>
-<% if interface[:interface] -%>
-<% if interface[:bond] -%>
-<% interface[:bond][:slaves].each do |slave| -%>
-
-iface <%= slave %> inet manual
-      bond-master <%= interface[:interface] %>
-<% end -%>
-
-auto <%= interface[:bond][:slaves].sort.uniq.join(" ") %>
-<% end -%>
-
-iface <%= interface[:interface] %> <%= interface[:family] %> static
-<% if interface[:interface] =~ /\.\d+$/ -%>
-      vlan-raw-device <%= interface[:interface].split(".").first %>
-<% end -%>
-      address <%= interface[:address] %>
-<% if interface[:family] == "inet" -%>
-      netmask <%= interface[:netmask] %>
-<% elsif interface[:family] == "inet6" -%>
-      netmask <%= interface[:prefix] %>
-<% end -%>
-<% if interface[:hwaddress] -%>
-      hwaddress <%= interface[:hwaddress] %>
-<% end -%>
-<% if interface[:gateway] -%>
-<% if interface[:network].include?(interface[:gateway]) or IPAddr.new("fe80::/64").include?(interface[:gateway]) -%>
-      gateway <%= interface[:gateway] %>
-      metric <%= interface[:metric] %>
-<% else -%>
-      post-up /sbin/ip -f <%= interface[:family] %> route add <%= interface[:gateway] %> dev <%= interface[:interface] %>
-      post-up /sbin/ip -f <%= interface[:family] %> route add default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
-      pre-down /sbin/ip -f <%= interface[:family] %> route del default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
-      pre-down /sbin/ip -f <%= interface[:family] %> route del <%= interface[:gateway] %> dev <%= interface[:interface] %>
-<% end -%>
-<% end -%>
-<% if interface[:mtu] -%>
-      mtu <%= interface[:mtu] %>
-<% end -%>
-<% if interface[:family] == "inet6" -%>
-      autoconf 0
-<% end -%>
-<% if interface[:bond] -%>
-      bond-mode <%= interface[:bond][:mode] || "active-backup" %>
-      bond-slaves none
-      bond-primary <%= interface[:bond][:slaves].first %>
-      bond-miimon <%= interface[:bond][:miimon] || 100 %>
-<% if interface[:bond][:xmithashpolicy] -%>
-      bond_xmit_hash_policy <%= interface[:bond][:xmithashpolicy] %>
-<% end -%>
-<% if interface[:bond][:lacprate] -%>
-      bond-lacp-rate <%= interface[:bond][:lacprate] %>
-<% end -%>
-      bond-downdelay <%= interface[:bond][:downdelay] || 200 %>
-      bond-updelay <%= interface[:bond][:updelay] || 200 %>
-<% end -%>
-<% end -%>
-<% end -%>
-
-auto lo <%= node[:networking][:interfaces].collect { |n,i| i[:interface] }.compact.sort.uniq.join(" ") %>
diff --git a/cookbooks/networking/templates/default/resolved.conf.erb b/cookbooks/networking/templates/default/resolved.conf.erb
new file mode 100644 (file)
index 0000000..f749388
--- /dev/null
@@ -0,0 +1,4 @@
+[Resolve]
+DNS=<%= node[:networking][:nameservers].join(" ") %>
+Domains=<%= node[:networking][:search].join(" ") %>
+DNSSEC=allow-downgrade
index 5d9d724398aab5fa5dd4c19cdefa5338b80b4dcd..33299d65be717fec1861686bd60dc31897ec3f0f 100644 (file)
@@ -1,11 +1,2 @@
-case node[:platform]
-when "ubuntu", "debian"
-  default[:ntp][:service] = "ntp"
-when "redhat", "centos", "fedora"
-  default[:ntp][:service] = "ntpd"
-end
-
-default[:ntp][:is_server] = false
-default[:ntp][:servers]   = ["0.us.pool.ntp.org", "1.us.pool.ntp.org"]
-
-default[:tz] = "Etc/UTC"
+default[:ntp][:servers] = ["0.us.pool.ntp.org", "1.us.pool.ntp.org"]
+default[:ntp][:tz] = "Etc/UTC"
index 7be4ab4373f9b6a2657630fa14c22642c1c45c2f..ff5a40ae7971ec14233c47032dcdb62f0054b0f7 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-require "socket"
-
 package %w[
-  ntp
-  ntpdate
+  chrony
   tzdata
 ]
 
@@ -33,38 +30,26 @@ execute "dpkg-reconfigure-tzdata" do
 end
 
 link "/etc/localtime" do
-  to "/usr/share/zoneinfo/#{node[:tz]}"
+  to "/usr/share/zoneinfo/#{node[:ntp][:tz]}"
   owner "root"
   group "root"
   notifies :run, "execute[dpkg-reconfigure-tzdata]", :immediately
 end
 
-service "ntp" do
-  action [:enable, :start]
-  supports :status => true, :restart => true
-end
-
-template "/etc/ntp.conf" do
-  source "ntp.conf.erb"
+template "/etc/chrony/chrony.conf" do
+  source "chrony.conf.erb"
   owner "root"
   group "root"
   mode 0o644
-  notifies :restart, "service[ntp]"
+  notifies :restart, "service[chrony]"
 end
 
-munin_plugins = %w[ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset]
-
-munin_plugin "ntp_kernel_err"
-munin_plugin "ntp_kernel_pll_freq"
-munin_plugin "ntp_kernel_pll_off"
-munin_plugin "ntp_offset"
-
-if File.directory?("/etc/munin/plugins")
-  Dir.new("/etc/munin/plugins").each do |plugin|
-    next unless plugin.match(/^ntp_/) && !munin_plugins.include?(plugin)
+service "systemd-timesyncd" do
+  action [:stop, :disable]
+end
 
-    munin_plugin plugin do
-      action :delete
-    end
-  end
+service "chrony" do
+  action [:enable, :start]
 end
+
+munin_plugin "chrony"
diff --git a/cookbooks/ntp/templates/default/chrony.conf.erb b/cookbooks/ntp/templates/default/chrony.conf.erb
new file mode 100644 (file)
index 0000000..7f54a89
--- /dev/null
@@ -0,0 +1,35 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
+# Servers
+<% node[:ntp][:servers].each do |server| -%>
+pool <%= server %> iburst
+<% end -%>
+
+# This directive specify the location of the file containing ID/key pairs for
+# NTP authentication.
+keyfile /etc/chrony/chrony.keys
+
+# This directive specify the file into which chronyd will store the rate
+# information.
+driftfile /var/lib/chrony/chrony.drift
+
+# Uncomment the following line to turn logging on.
+#log tracking measurements statistics
+
+# Log files location.
+logdir /var/log/chrony
+
+# Stop bad estimates upsetting machine clock.
+maxupdateskew 100.0
+
+# This directive enables kernel synchronisation (every 11 minutes) of the
+# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
+rtcsync
+
+# Step the system clock instead of slewing it if the adjustment is larger than
+# one second, but only in the first three clock updates.
+makestep 1 3
+
+# Enable leap second slew
+leapsecmode slew
+maxslewrate 1000
diff --git a/cookbooks/ntp/templates/default/ntp.conf.erb b/cookbooks/ntp/templates/default/ntp.conf.erb
deleted file mode 100644 (file)
index ffb263c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# DO NOT EDIT - This file is being maintained by Chef
-
-# Exchange time with everybody, but don't allow configuration
-restrict default kod notrap nomodify nopeer noquery
-
-# Local users may interrogate the ntp server more closely
-restrict 127.0.0.1
-restrict ::1
-
-# Servers
-<% node[:ntp][:servers].each do |server| -%>
-server <%= server %> iburst
-<% end -%>
-
-# Drift file
-driftfile /var/lib/ntp/ntp.drift
index d97ca6c58bfb99ffa2afc3d5c6e9a16fc628b20e..5a853562cd02e01e7e4d2295e68a126d6dfb4d9d 100644 (file)
@@ -5,38 +5,64 @@
 <%= host[:names].join(",") -%>,<%= host[:addresses].join(",") -%> <%= type %> <%= host[:keys][type] %>
 <% end -%>
 <% end -%>
-ridley.oob,ridley.oob.openstreetmap.org,10.0.1.3 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC6FtSZo3FZfOyWVdiUX1CSlWLIiB2iCWmtsfiqQ32i+AbNxiOfqBckp9CQazdaAmMp638TnLpCwSfJk9oJNui/J6yY5jq1RKb5U9YVGkhXvFmHH2dG/QpD9z786jWZ8RFdTwtdpHVfJzfm3vFDOORJcJwnvGr+Fe+fnY43aPzTZQ==
-ridley.oob,ridley.oob.openstreetmap.org,10.0.1.3 ssh-dss AAAAB3NzaC1kc3MAAACBAIc5G8Y5NSBvyNTK+JrawLWjhoY9Rv3QkaJyIYXTQEBOsF7oq1jt0/2i9nLKxnH/U2pdFNquwCWMETmPZpPN2ptLF7CAdxs8AzXq4K2qEflSvWYN0V44pCMNIqYooib3AweqhHncmpeOMFbPjh8SqUJ9I82vQBVrw2H5WaNNrDPfAAAAFQDATXZsaPwZo2hRkJbgHboED0lGGwAAAIAcyScviS3/VH+qaGn6CkMo+iXSIP1oYa7wPDnyiF2hYDn5ManBgpzfBewimGywYO9CB8b4f3M9Vy4ZoQgHIkIbygNU3lThe5acQGtCQqt7h6i2u6lbuUrmBGF1eWDwZWK7ASEMTCyitaQYAanW19qZtokONI2+phb8qw+OfOZ6ZQAAAIBwj3kucxst745TcWurZwKMQbhf4/iw65kgLlpXInMxpgkIHvp3S9GcsxarwjOGy7bi+4X4cFkI2GC9lslrZewpZXFD2i1DKOoL5cXVuyBczQUYBG5gDjW9LOgtNTtfF2waiUjRAtabBdLAsqK68iyumOttsNR6yjHcwKRqHJrVdA==
+ridley.oob,ridley.oob.openstreetmap.org,10.0.1.3 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCohCtONR/6e/RvHnLlSbvl0GqY+EJeTn+Sxu2PyWsw+W1OAfa2jmb2DQg7S54CwbkyI/owJdVrM8Gj3s5CVOi1kIddu7+pbkqrIZKo4Mf+jviFypyZoGYHnPSBwEfgAWKtfBepnbW2RIZ9+JEXLjUyOFwU6jT8QnQMKJc5FiDP3Q==
+ridley.oob,ridley.oob.openstreetmap.org,10.0.1.3 ssh-dss AAAAB3NzaC1kc3MAAACBAKzNiUprAK/uF6ippll2gTyE7QIYg8kcE1a59/4iyyh56ChG3W4bq8jgA6ZLvJRks+rbKnjs98duqFKFoGC7sXmvNvLGD7jtSbAUkiPzNUsQ1uwPatNJk/mY5zzHjaxmgOUfA0EtDxKgvxli0atn8Xj8PGy49BbtlBPdnS+tItQ/AAAAFQCO2II1Su14H1gaeU0ogUCkG20ePQAAAIEAo0+0I7Ha53KM9xJWt1qQAVTV3FTGrOwrmedpz6JYcyELhNhC/ZUDOXu5GKqkp5SRcXZ9NRV4FiDMZgKvMGyvRcF1ZOkytNGtx12FiXAzVsM55O+hszLouqZocJVXY6Km3SKmVkymGi+unoowCHWMWJEIAjz80KyR7dsXHQKqIXEAAACAdlDbeOLTQLcgwTGRMbJR63fz6zvQQMZVJ3DDYzQxiW/0qB2CeaB0CuS9DDSJBLVlp2C9MIVnDxxaQi1KmUOvNs2fqb0NEZ8AQG7clCASgf9nXN0EBju+dZ+lGcB6c5ZIcDB/z0gFEp/16sHe8bay70Zp+S4ot6jXD5UM/pLSmF4=
 urmel.oob,urmel.oob.openstreetmap.org,10.0.1.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC/Z50neDHObFvqY7SjrvtebendKtlfZ5KdpUHJXzootFg5zli09HaMep8YuEqBK9n1H06qnLQY6Hr3tKUEMBjjn1VS/hiB3OQlAqci0YEqcgwyiBTz2Etkb7lDXgJVDcFA5Pjj5sKnXw7gi4Nmkgg6cfQb81fed1ySGArcFY6PFQ==
+urmel.oob,urmel.oob.openstreetmap.org,10.0.1.6 ssh-rsa AAAAB3NzaC1kc3MAAACBAJr/RfX1uZxsD/wuhnTwManZnbVET7yjqGx9H9oVXgDfGNDpk22U0/7VKh0BVHi7iC6Z92YWgCG2Os/SuZgOLqXxdJAjZv9iYqBFQBszzBjGpbtpmOZPzi4q/B4KtXmsiWVPk/eQoW7JodeaalGEflJbYY4rdtfNhWl7uR79NH9lAAAAFQCGJ68LbEk6z0t0fV6UuM2C3KDODwAAAIEAilB3PdoejxgWtd5zVWfK1pYooWyplBp0/qkQ/WV1sT/4+LsuDk1ttszD4DkyvSFwgXKULdcWl56YI2+rFS9busxyNVhM8u5ou7rMvL/laNqkruK8FGdObo1CrpqNS1CuTEcZnIXJcz9grYdmwx9Vt51V0TP7ExKggijX0FmYN4YAAACAJZy0ekCJk2l2kJwTN6D7J4NLIip4Xyv7YZhOuguhEXjmowQrAqsXRyBED0cMdC4DuUOO0AmbLJ7cw/IJ9rf5d87ZVRx8EBaGLd+WAtDGoSsLnYgY9iRWpKkYqfhLAwSfXA9d5iO1rh+FWngLsCBJ3aDurJvQHCw/xVai76tnWTU=
 #zark.oob,zark.oob.openstreetmap.org,10.0.1.8 ssh-rsa
 #zark.oob,zark.oob.openstreetmap.org,10.0.1.8 ssh-dss
-eustace.oob,eustace.oob.openstreetmap.org,10.0.1.9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAOlKh4CiefEXtWj8mXJB+Tn0RxLqU/ACMp9NfBNXnaYyOWkJJ4O0b5WX4pkPxi+n83e4ZXc/6180DPpafJ2faii0BDwdmZLNdeTVaae7BixjOImTt4HaDv30DUfvsGzPU5XAjId4v/iKrM6mplbn27C2CcHGwh73Oc3YxxGsWEw==
-eustace.oob,eustace.oob.openstreetmap.org,10.0.1.9 ssh-dss AAAAB3NzaC1kc3MAAACBAM9dCBACQykp7BM/HqbIdTPNSFaC0AAjA95WZP4AfHos+wkUt+zdNeKfO2xgnAj6WyBJFUvSOgcmAiKqCJk6+B1Zl2k+CyQIW9RnQbwBLH3M3AduqXMWB/EfD9SWt6HwyU/dumaiv/HqapGR/ly/84F+sIiNTXVSTZvtweUNuYFPAAAAFQCBQ4QjFUny6+XAL2ucyU9W8ya7rQAAAIAXSQrRSubw9Tli0PbBfWllf5AkR/ybB/rd6UQUUeMTVg5SHLVjc/HwyBYQbeRnSW+bpztauW1bx4cfpGQsqmEPHmJVfxuc36u5MyeYQn1HPLfXDGYILFcjT5aUwRoKqGCuOaCV2YIqBtgtS8nR9ihPJKQfbmtQ4gcAnKMSbMFnvQAAAIEAt4kLYCscN/DkSIxiCNjHVYTYxepsfP2IsZAYi3Cxs8GHWu3kdyP8AvT47t6pI6KxEFhFPozNCtU9w+0kxgCBApb0bALI/DcebNZYCYyk/S939KfLpRCBion53JdCXbFhPgWiYzI40IUQPwWo/cyXREB3Qw/AOLwp8vlKuq8RDtU=
+eustace.oob,eustace.oob.openstreetmap.org,10.0.1.9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9wLWa3gAdXL/oUw67cLoHKiIOd959u++OOjXLR2OcyDkSLNTQgYkawEOcNgRVBcLjXh7ej9ktuTFbLWwR/Uvx7ftP5MH0Luo7Z9CvrQjw9Eu+G/CdGzvilHSeSAdCJYWemHXqKT9Qo9zJt2BI7wRfkFKdA5uXezwMYQtiQRHMkw==
+eustace.oob,eustace.oob.openstreetmap.org,10.0.1.9 ssh-dss AAAAB3NzaC1kc3MAAACBAMaxIrNlpW+VWMGGZ2NWdXC5Dbub7WluWXVf0kNwadZcwqn60wchAUDWnOL6grGjmYNPuHLW1P7tromy/uAssMML9YiNhCbJGUMF0IDWGl7bGjoOBsdp2slRaC9oZEceXH/yaRZJbxx9dri85WFLP9hz2A9mgi6Yx2k5oc4b2jr9AAAAFQD3k+OjolSAPwhQcYB97d5DDWjiawAAAIEAo7nRfP1i3VC3ovNAvY/SlvIq6iGorlkg8kMuBdTb5HPTPR8kOdplHGQ2+8es5H8a43GZorXbaUjsrzlQ98OzHrlw3BEzFvFZgY0kJwD64aeHOsDhltHzWV0tLz0Al5lR2ZpAE7V7Wv3x3wg3a+d9pmGkkgSwAqVQAsbPTp3wma4AAACBAJnhfhHZWrgNNnagbn+cuPpIC8vSwp/GNKK6VoQm7jq1u4t4eXPqHDuNA18pE1ngqPgZk1DYQUp98G1zKlhVJrUYHqi6wNG/qBMN8NuOyDeJ3a0iO6XIccEHvS15xzy4hpRerrg6yFeIhwZc1MbsEZqnPQzB2nJKtf5BqaeOjmcN
 eddie.oob,eddie.oob.openstreetmap.org,10.0.1.10 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+CNWzEucmDqWDAP2yq5gNGq1yC/1h5KohNb2sxOkac5RSij6/6UumO8tiW6PVY6wmiI01L+6UyRIfxWzqD/p+Pm60fNGJATrUsED/EEEbxKppWqbr5RjQfmfRqu/Msv0/QR1XnCEiEH2ixiubBBN8091Jn4m/GpZkLkcizpwOE3w3/FtUhydhdHgRKxQN8Mvu/pu9/6DocI7dNWEKWVUG8gbktUHe4+gHW9RQTPe1XISECt93i1NR3DKD2ldbtZbVeo9H0oRw1v9hmQdKXz6MUBQDenr1f1nzVmMqoLXJkdO2xBh2H9a6QME63nT+eO48BT/fo3VHomqFrR0MceGJ
 eddie.oob,eddie.oob.openstreetmap.org,10.0.1.10 ssh-dss AAAAB3NzaC1kc3MAAACBAIPneLfNaMa1qPVwRTKArXULa3ZRkKxia22DdT6ajV3HB9c0vjbMsI08vjjx9nWk2YWsZVuxx2kXi92o7uPJabFrstETbOv0TGTj6VVWThgGAqa5k7orMiSPOvyLPP3E9BOdf8nRpSPIq3cs/cBi4Oz0sPvbfljomXhgt1yC6EoRAAAAFQDqrUdtdgM33cYRUGqZ4MmZuyrHawAAAIATBEq5xAT0fH0hUJ47EBV9LRyi4kJfMyBlNwrSthUdIXhnhUTsO0se35I/1NOQhTcyI4fD+ZjR8qyy5SaR/QHFar1RKUksVa1S5JH+EaLHMSEEcdZCa7chx4Rg3UMJIHEE9zoPXn7VrbiAVtHck8IY/yIrSQpznIwuZGGonregnwAAAIBVv82Vkry8ypz8o/na00b03+n2KWRrkkWqKZvXSN43zVV6GQuwpgZpDjA6bLJjAkX27H2+jYB9QO3h/r0NndV7jkSPfHlCYgOg1HICI221Bnj2r466Fz0UdKI/wQqkJovJzNjrvwfESUqPfeTGGGo8AbyLlTI/JEUrHADmshS6LA==
 draco.oob,draco.oob.openstreetmap.org,10.0.1.11 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgHj1uavQKI1MXJaspRJasiPvhrM+EB+p47PuFh/BgFK4P5DnirS5sfApEheuGY7vcIiBnG2kcpNLiFmVylYXG1DbvBXsN0zLyJiyegdbT/SFjMq6AXyBfqFOA5na977JmJNBwzG7Z7jjeo4ZowRMSyQ3DjmGdj6vmSyT/BYO4E5Z
+sarel.oob,sarel.oob.openstreetmap.org,10.0.1.12 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCohCtONR/6e/RvHnLlSbvl0GqY+EJeTn+Sxu2PyWsw+W1OAfa2jmb2DQg7S54CwbkyI/owJdVrM8Gj3s5CVOi1kIddu7+pbkqrIZKo4Mf+jviFypyZoGYHnPSBwEfgAWKtfBepnbW2RIZ9+JEXLjUyOFwU6jT8QnQMKJc5FiDP3Q==
 sarel.oob,sarel.oob.openstreetmap.org,10.0.1.12 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgQCXV76oba/hqR50+HL1YjMeMPjBj8DfyNPcuEJwSO+TFbn4IW4xkxYYl3w4NuD8H6gj2Myk55Wza5BIR0oTWtuQuGiAKld+sIcMb7R2rT2KustEVuvy5GM1/NkAJ+sUa4lTTl64KPpFukFIC8Ma4hiEhXA4LnN02DZe0NdvyqkC9Q==
 noquiklos.oob,noquiklos.oob.openstreetmap.org,10.0.1.13 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDE5XeF6tG4hu9M0m+JWh4QJmL/52+cfeXbV4qfWwdJjSH9yBzYP9LiDM97gMXMUSnomAs7GO0KMwEdO9xuIZWeYFyHvs+1a73fAus8bcAbrZPuFfPfrW3JHKtWsfhUqYNJuRHLaimLIRyqgsXy3WAHf35v9kY1DmMWkf5/VTrp0w==
+noquiklos.oob,noquiklos.oob.openstreetmap.org,10.0.1.13 ssh-dss AAAAB3NzaC1kc3MAAACBAPK6Av/wAEtRnOx12117EtAhBPnodjQur0/k0pTAaGCZNnLY3E5SD7CvSqtB+LhRO/VSHXl1Obkh4mvR6oKEDE2XOWEG5Ofq3mWngT9Ejo0Rretzc1JU7L6WPZ8N/D+3kQUXpxDYzK9CcKz90k0msZUFRfGkHVE12ip9f7G/BWPRAAAAFQC5wUn4ZkWjt0z+/bUUOe298i0QvwAAAIEAz6dx6w5equWz3T8DWPM8LRGhE6ASrwR2UNpFe+sW5EBp/M+Zgg5Ztne1nIQaDSh1iKL0qzSGYxTIb/sIDKAxy6CzTjEhWRGmuDRTPQkXwD9iXcNaLChEEP6AryrI193LnLKRGKVve6gP2vH4tpn3Ve68HSKL4Ggz2L9ysKxJppEAAACABSHM7Ez/2oMaDGNRvgWc+ViB3QZOB1CTnDOkRZuhZXFMmTGXaWPzlwqPLZKg+wVOnJgBJ4BTUV6WovPGPYWadNuqhlsKjflFQyYSkyBA+4gvZ45TwbDE4HTQ1BGlXJVA3vq5HAqcxlo2CAj4HCQJgVHzd7sfH+WwyruGDu58ThU=
 errol.oob,errol.oob.openstreetmap.org,10.0.1.14 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA1riMj4gWqiovniYhlFNUxMm/AGmV/C2GjcMP+NcJ1ZyP4OdytGeGfhUm5GwVwraimkFQQlfEDcUWY7OX4EG115E8i15cUt6s6Ya2E6AXydigvBbrdp8MNnPOWBifVN3/5Cgi8nrAebmPs88ZZx2KM/Df5qIB2rHYpuHYyl+MpqE=
 errol.oob,errol.oob.openstreetmap.org,10.0.1.14 ssh-dss AAAAB3NzaC1kc3MAAACBAKcnhyMz3C4sku0e1/nFailjoPcMwLazXq4H/kUsdlt+f2By73F5KdUWffxoeRNL0UVT7+VCKG6IXmXGkKVfvpTipFjkP1N+b7I4SuJcQ/EUNPTCGAfC3l691K8jUBD6WSlQUqZtKGnpDS1zI/ZIYiNqrQnWu2RTYnP3QvY7JigDAAAAFQDI6aaH6mWx7vTVS9m3tyXQ4GQ08wAAAIAQjAM+q8Hfp1h45UjTeD2jIA74asQl0M+4q+4EcnNPnKXRbEBIg4rCWkHdd06uhayXZ91KzCDcj1b2LSb2zOE4U1MDEpdVnz22PuEl/f6/epKmLOqHoOGu9/9Lud6OoZQSveEPYmcpEEpt1RCN9ZvkVtFdLwtQ8+CSSGXg8yfCxgAAAIEAjQztmG1LN/e7pNRY0MtV148rJY3mR2knJegg0yBOEWHUGtKY91lgboWie1YTGR3RiXckJFFYkOGWAxqEVM//+rW0hatCxEp/mWEt/GWKPpV52fc4BUhJbi9hb8sg+dAvfoHwUL3CzHzqapaRNxxbfest8dfvascAjRDFP7yxU9w=
 yevaud.oob,yevaud.oob.openstreetmap.org,10.0.1.15 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAuWeUQd5ssUd5VFyTMXgC+U6c7s63mtuEj+cL6x8EU8PqNS12RGwLpeAI5VL8UzM0YLyPjPh/yzdQN2tl9ufK7KZF0apvoSZgp/uwyG+CgdFSf66nTrZN4NA/QP1ikH3kbqcM87LfNjCrMXnqMBJ/OCqz2z+An8t0KGDXS8haxlU=
 yevaud.oob,yevaud.oob.openstreetmap.org,10.0.1.15 ssh-dss AAAAB3NzaC1kc3MAAACBAL6RC7IMuQEtD4JIRmBJEownC0a7ZEvfCTw20PV5MjWb6twZlGBK3IA/0yV0oJ+75W6VWizn3cWSBS3y1zD8KktF4fh4+FVyin9WTyFuwME8cYmRPV+kuOa1lF1sLJxqvZJRjKMjweLeNTKnl1mb03049SL2YoGwMOTdVgVBjEyFAAAAFQC7rQIvnfLYbQdX87DwlzfMDALOoQAAAIEAmAu2kK8atEOR1Sc6maxYKSf68MYMHoTpm2MW9q2x5ls982kfEUMJ3h641cbRgOAuCmQU3gHnt73sl5LY3K3oLijIhSQm8+l+GkrXVhdwx7ScLXf+8TJZRWiP6Q98VWM4E3L4wmiJksLbTlxdoew3lv8gGhbpk0XuSyLWIBZIKJAAAACATogkqFXhPFzOMRJAR6G8J4bOqg9Ae2cGtf4aMZ9xdm/Hm7YLSu3kn5IhawwU+DL494VF+ky69T01iY3e4m/kQhYB4emlqsRHzVscblVH+GL6sVEkct0HMzfqzEFcfYWqqMdig9EwTzHwJzkAb4WqZdGnWG3Ln88x3liyDZTpGco=
 clifford.oob,clifford.oob.openstreetmap.org,10.0.1.17 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCsCrNQ+QQg2UUGhBpgjlLAF4gI48VDGmcF9prulYDxduyGJIrqhOjQtKLjNksMr8TEblmJsI4JzPf1lY1rVL3Q/aZWJD5X4Q0DgEtNzfinI9JAy77JASj1osBPU2RfWSvK9C2TnEoXHxuyGKMw9iuuPLppNMjZ103PYprQeAXi1w==
+clifford.oob,clifford.oob.openstreetmap.org,10.0.1.17 ssh-dss AAAAB3NzaC1kc3MAAACBAM+YhVzoOuKt/0UrkDpWCsDgYKPvbfuvSrLeyZfssRuRP1bVsY39yfl5avZM6YwYhzuyRAbcOLYa+9ien1QTeTbV2qNogx+/yt57DWKVv7nX6WTSVfYFAvx+CMy+L6O8N6VnKXJaCcbQxOFx74c0ysXorNYU0c8++KyNfMmVVjJ1AAAAFQDoCl23tnp1pcVbUFAAxAEUb77aAwAAAIAOpGMpxWPrd1y+IxLLLCohRMCv7JlUy324PMMwNx2/u2fF3oh4kL/EUarD4/6iU1n5PJo441bLuOj5Mb58/O8qdWYwBjbUoj1CiA7qF3TXWGmPX84AlwwLE12TIH1sTRlZTdrD6+js1KUUMSzMz8tEi4tJs+bXYf++ng12sqP48AAAAIBvm/z7yPKGdLPP9i9LzWShLJKrbY9zx0BOsIzzeVJjShdyB4+NZdxQR1jjDcqJ+r0DXtanmhS5DLOS6zGYfnzzsCNTxHM/Ne0wF4goc4LQGKg2aClmyx8ZvqwF96d8nQcUIbLUydbE32xmh0bIbzVchLKEm5PuNYf/aU4snCyDGQ==
 grindtooth.oob,grindtooth.oob.openstreetmap.org,10.0.1.19 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgDwRqYuKXX3gENA5JHkVTBEL5MxC0N5Re0uX/hAVTv7AurDlJyaN34ZdK+k89XjQBPNMn7DhwA/+ddXCWg0Bb4KEngfKys9oMhZcwEWCD8LFWJcKugATfFHJPtduJrMx5dNEfQtpA0od7Ep6XamGcJ/Hwxa5iQRlD+8Kr419qNTY
 pummelzacken.oob,pummelzacken.oob.openstreetmap.org,10.0.1.20 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEhjC0AfmTSwq1TgcwvSUZgzGJp6fP1DXkYfgREfgX6MQX0uRBTLgWKM1Nz2tYb14mjycJLdCjSBCzuHQg10ufX3+5nzR+xKIy7cgwqkl6I5/jX7BZNK6t8XZfdmwnhAhLqYfG5FA49eyaVNdArgHu1fv7xczKjRAMOlKhh083038bCD8BYmBoKwj2J6D6fp6wHOD2UU4rvTP2nCEYsvTd6s3/yvTOB2bFhz2qaqOhdNI1w+dvcZLPUYO5hdndw1LGC6v56IbmMquxcieWuOtU+fbTMnI9teNo4CLPVEzb3kmwhl4LyJEA1Sx65Bz7Ve4wfgUInPoBfiX1gdSjAqH9
 pummelzacken.oob,pummelzacken.oob.openstreetmap.org,10.0.1.20 ssh-dss AAAAB3NzaC1kc3MAAACBAN3kGdbPfrsSjQuX+9kk/an83YUlJ+Yd4V+AYbRrMRYBJEIQQOYxFOFwMOdmGRIFyLj2ZXKuYY3/5UFXHFeWZxqY6kWJ0JybFfOJaZu3Iwgh8gLlBnfkRWAD8WbzvXYTCwg8yrM335tj550AqrQ/6R09l0jveeK4EyA2w8Afdle9AAAAFQCOclxhmRDMVD8adpeBrpXJ0q1SvwAAAIEAt+0ZFeCMnteeadmiCrVbHpMot2FRcem87KouLdNgdOxOpuizMJgSSHEXBA6IwvRAzrLInpm/DoCdW+bdnrJkq8qs4gEhM6Dg3tDAiUz419S/sV/uZZb9O1aN/MBEzfysO+hnxemQvmQiA1vymhWov5dNl78UwFzETUj9xwW4kaUAAACBAIgjeLkkakNDkSRAYYh0X5hGjExvYRerNWdZ6hQsGKGlf3Ud0sUkKrtzpYUvWFQLnqniQXs9q0hTTxa4rVWHiCU5+R6gBOk5VgoVyM+evuOKFT5a7TorE5STDII+PQFSHQ2dJR2QsVaKmNbcSxQC+k3ttC8vBEAmIOl28m+QZ9kA
+grisu.oob,grisu.oob.openstreetmap.org,10.0.33.20 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDTEivJ/aHG2g7TVGEXJUDcOrbQKMOwYEzWiKvMTsftxOKqMW2uKzCZDkW3BNXIBiAXoswaqK0qkh519i56tY9ff7XjH5YoYbPyWwbhMPoBlIc6wBF+uMV3dBRrb7iRe0HFhpl/XsTo5vw8x+5T/ITrlvI8T7ZfE6uTLxKFDxYOiQ==
+grisu.oob,grisu.oob.openstreetmap.org,10.0.33.20 ssh-dss AAAAB3NzaC1kc3MAAACBAIrAKvS58z4zmaRWwebJxgUUiy/P2+AWODjz2FcqspmkXXnSkXD/tz3djsp/PwgPUPt/y1J+H2dfDY0qnTtY4SM1DJi0848/BG/C1P0zb/3mdtJO2FdMVVcwITCX0XZg7ikFf4zZ9CJRiuAbiS6CKCIXcvxHhBx0O4EEaK5/PwLxAAAAFQC6Rg2wsfl3aKpecSD0ed9Ysekx8wAAAIAo1yE6yLCH6+4NEA2+2mz3XWXdf/nzOWzFd1XqZIqg3Jj8MzaNS1GLbm3FlVwl7qlXr60flsXggYkZxwXyLKMH9fhFnyrTZOJMKmLKmeqcDTZqItW7hwsaKvM1vd+ZysmOVkFiXKJuD+25AyTmbFpNUvBdIHYiL1jQaIxLEWnN+wAAAIAuF7tHFgLgrZ84nc3Yb003llMmiwwaSUjF2t9y81t+FJ4fOwhFO7lIapijrsm17v5OBSOgAONfgzNS39U+VlX61PwDmIobe8+Q8zGOv/9tkK79YwNsG/dXhQ3e7gZH4wcyNgO1BufEuAOYMxE454rbv6fdrhvsUlRgEvF+teJqrQ==
+spike-04.oob,spike-04.oob.openstreetmap.org,10.0.33.21 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgQCIrf3Ca5+Cyk7/QYU2krboxC/qhHwjvtzBpcAtVya4YPpkiQa4G5KrJQ8oxvLL7j1atgYs+GnErkeUp89SLLMJ1spbjMMubA//Mr56Bp/V/ZCr7uk6c67vA+P+EIb9QhqJt6eay4fFZ75dccw76GnDunD6ADf1VTzawYykyIrm8Q==
+spike-05.oob,spike-05.oob.openstreetmap.org,10.0.33.22 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgEvdV6XL4KV/RCLZFhyM6sSGOWOia22L2Ddc28mS8MdZTr8b/iYJpFUCmGREovFxNI5MXzPhDKTomiW6UKmoxhQcsS31Y70BdsMA+XcNqwktFUkFfXMaat43gJ8gL5lVDI3AomjxIfGoouFEhIzTrj0JYMNf/q02YJm7fPvAZtuv
 katla.oob,katla.oob.openstreetmap.org,10.0.33.40 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCIJ+bSxbMsr6wurBXYkeqoznHnJT4zrN7nHtajgs5CJLIiWO+Eq/Lp+egz6Irxwk3v+kbfKW9RUum5fOMfkWFwaQxP41Cz5RbMmu5Jsm4MQKr4PPVxbLbPk75OeVgo+nfkzBupsBuYGMp/GCpjTJ8rusPmYxzWBek4amKL5udfA9Ld
 katla.oob,katla.oob.openstreetmap.org,10.0.33.40 ssh-dss AAAAB3NzaC1kc3MAAACBAP4oHi33lAVyP8zjoRZe6kxcZGJi1JOgF1vpZqEsxA97yCaLGVjc2cdxi16namqdJ/DgQaRpGRM+chP6AgGN9FD8Z6Wfskm+2sghPpcGRUkr7u6mM7WlJ0xQehD4LDcxFEpZKxtalf6TlxXn9cO0VaL9NNVrpU34c2Pqxl7wg/QnAAAAFQCB10EQxYDOnsxN2xrSHEbmgA3K0wAAAIAWN0b4KREM6Uc6FVkRtOjkiAR8FWmCg8nNQaqlKIPlM4hsrIcPC5yZfc7BzamQSy4PpHNGZG64CkYr8tn8LGWouHVKKbeFOWEXIBsRBSf1NNaYI7cS7WPnGVOmkt6yHvWwPlDcVO8FpPUL9pA7kf6iCuQNdD/MyOBHdbVoU9LcNAAAAIEAsXBb+3EZhsRAYL9Jm22PsrsW2o/hO7aomMeEXvVGG8Wuy77lqmcIvlyW3zhHBs7ubI9TZz1XDsgLK9giCkmqCyKmUsTXGsu9e4veOq+sgvXdbhoBMVi90IFsPLPUdPN5mfovBDHkwi60VtDwOLAX368pFfBfSA50CZWfhwUu26E=
-karm.oob,karm.oob.openstreetmap.org,10.0.49.50 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwC0NwmVi6Fj/55PE+E/60m55gsjY0HaHpSTO2Cr3wuaTrvT4rMCbORaAtIqvp/j70MKZqSS7f1wztnm9fP/54viWWbgslMZ8GaSUHDDkoH07eznggIJ5P3wHcaK/P1sKe6JTj/dbCf/FMvTT2nrA+kIlY5q3UPQ7q1apSYE9lUjF0f3
-karm.oob,karm.oob.openstreetmap.org,10.0.49.50 ssh-dss AAAAB3NzaC1kc3MAAACBAKrOVh4QX2hflIkjfxfN/+K9CGqZWO/Mk2P84cxo9RljimbpC3PUrMHgNlRNw4lilrX8ijsKlIQaYHHi0lZ3gvmOxsOVQlVLHIoTtWCp+kok/X+mSZM7YjQ9SbC+82GuyQryOAD9nBRDfNJhcMp5Wqm18EtVmhYTnZsHhCHS/pddAAAAFQDbFNJM36iizA8rRhhu/mzCWBZXCQAAAIAne/vY2EVf07qtSKQKgeRSN+juWV7jXSkHG9ajM9JHTJDlI/S0Q0x1ScNOGiS1kZZVXqj1g4zYZNNJT3bqk4Vq0/lQRO2xsRB85fyVCmxIrCW82FPVfOcdZUd2Wp/gJhKQvOOsq4QaNpmFqmLUNvNe1nHWc1T8zCRAhThNWDc0jQAAAIBOuqVG2Wm046eQAx0Gfk3jaE+8L98X5HRqHhHsxLiWa3kr2LrJDKIDSpcEi8eQ5WRiemP8tj5eEaYwoa1uv5VF51dQfAqM05+dlNaySygbiLy43eMjCFNB0tRdXJtO7dBs5pxUfGgmaI/vF6/rEdoOXAzKtwTNUYcCK/evO5lunA==
+thorn-04.oob,thorn-04.oob.openstreetmap.org,10.0.33.41 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgH5H4Ra0f4+LfMyJbVpoJIN9wPrC0bbNEJUVIOmtPpxRE4HvoqDOBE8XfHIunhNeTxK5Yzfinz+fCq2XCv/8Sgrr1qJBUQwi9kHfRBNmRJyoylxY0b33Dpsk5kxcAl06+sSugl/OcbXAyW4H3d+dQAUMlRPEVzQCgd98gGrTFF6p
+thorn-05.oob,thorn-05.oob.openstreetmap.org,10.0.33.42 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgQCYjNImXo+2xnRT7T/JiHh+eNl8I5i/sjB4KBaHizKuJnwH4heLbPtmbI9ze9MV0IHJp/289kwT3bSgj0nY9zi9Ucdry0WtPgGQO4JbDZXzCBhwa6MhZVLAIOKU34fK6AIuZqzQJwXeJZuCIiwaoliUwY+QwNcX3rQho80eaK6XFg==
 orm.oob,orm.oob.openstreetmap.org,10.0.49.3 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAn68BVVd15SyHq1vdXYZukNkoxBPlNBgA8gcaXjlQg917A8gXcHaJQ04xSwt/jkbbvELNuvYDuw0EZAqQQHG1vYsXffg8bYrEq/WUs2+oc1O6iiR3xrzgDWAdefEVk+Fk8TXRGI3dy6IBpFoQ6ywvNCbFvVcB41FLRtBGOWdJFZM=
 ouroboros.oob,ouroboros.oob.openstreetmap.org,10.0.49.4 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC0b16+oF2QHYj+iIS2YT5VnH8KfdYckm1ujYSo5WitGONMqhN872W6krqYbW7GjFvrJ2d7GbNaY/3VeVURLumgWBnit77bExpga++/QYsE90DSoiQMeUT0Q4QuPWXcTIzAcGesda4VtQkTRBTt1UlmdEGBP3eDAqL2GoW4DBPCiQ==
+ramoth.oob,ramoth.oob.openstreetmap.org,10.0.49.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgnWJq8z9xvNFujhE0P040rCO1yEsH8pnQmGOGehIRcfclQBd2wOO22+8kpy04BMT9FaFdxjgNTUWtfCwT+oBsxbHIreahld34vFVCw/VSCiPEuUhBdZ+fN9hdLGygrnKxA1b2cIs532nm4LLDoP2VpM4RZuh6da+LV3eHnfDlZHO870=
+ramoth.oob,ramoth.oob.openstreetmap.org,10.0.49.5 ssh-dss AAAAB3NzaC1kc3MAAACBAMjYCKyJfA9/EQWTxwqqGBq88dAaWWG0j+ggoGEYuIWqcdA1NeF70BIiRGvAV5/oBy+p/snd0LAxDG6KnWglOo/0cjzcfys/RQl9kTa6gkcFPp9lUqRnuDF+y/egZVTU3KF376k930nNdODMe5PxECnZdC51158Zga9Hwj0+5nalAAAAFQDnh0Gx+gt+6Qc1r74FeNCiIPmzIQAAAIEAs81g5c2sF42ATY/gd5ustNXm82xfIAuRGeMCgxyXBvFM5UXuLnfOx8JVB8wu9eoSmxhDiuVX7ija5FaKAAucPBXWh/YImH+T3SOWLsxfDh8XglH4NvEtj1r+90VWbX/f1Qy7IsmmBolUCr32qD5cdeQ3JPxvUvO/TdSHaIgGK30AAACAZiVJOiM9mfMf05rAg9fjo+NKxL/jsbZ8ptTnNOFBNjq0XydXQF3Rnt01b/cUSv94VmuJgv9hq9L39nk/dSnBVQbKwIYyB0/NR2Fg0sYHpo4qj+7MFndv+ct9pVd+l9pmlEoR8soLeO1hSVeSmj9YvDzc74lx8FYMVE6+yed8ltw=
+spike-01.oob,spike-01.oob.openstreetmap.org,10.0.49.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDHhi90mKvMe+FL1pdzBPWUfC+a0ckv31Qou7Yby1Kn9xhrR5oHvyoT4bc/xPrYvaxRZUHWn+J66ZdylhyfCZf6/5g8xghJoYVAZJn9yCV0R7xw2fzHCgue3iS/Yrep2V3DRaXt/zy+PCe7wZX7InLLtp1rV/Vx2xG3lV91OGa4Zw==
+spike-01.oob,spike-01.oob.openstreetmap.org,10.0.49.6 ssh-dss AAAAB3NzaC1kc3MAAACBAOE5d8RsNmFZxWkcwXHisg5NowzVyvYjW/cXmDRkeN9r2gvjDRj+WU8CIo4rhVhbJIepEA/BUkzEyDBrBOydFa/pFH9KN+tRnSabRHaVweXr337KX9ltSGoPijSwUlDhVITMMSZ5v50tJ9bokyZEYbgpbzPo+slqgMFbR3fr1MvbAAAAFQDWzbv+xMTMOYcQQ92MCaQKtsXCJwAAAIBW02qjzbss0X9TACVhGHGbAy5DcfybmY8JZhfUgqR0xI5rCufUW5+dY7EQu3FlE8bC/R1rPrks7wngmut6xPMtkpcpMYFoxFPgP8/xfwkTNYMs2J5Vbrb6k6e1XMKt9AID+QzhEjTVxmwLKAT8uZGDZjY8ujYnQMbM3wPbCbv/MgAAAIB4xUK2Of6YBWBOpW/0GPfFH/of8Txv2ErpVmTSTOFaO7KD6x4jcKjn9nFMvVUhW/c52UYYcscE6uArd3XNbJBw/H58i26V8RooTkQVWhKNbp9ktXPh8yADNzVq/rRW6kvNYHZbbTev7WZ0NPvz2aIrTLKPcEcUwLq4wpNBe//1LA==
 spike-02.oob,spike-02.oob.openstreetmap.org,10.0.49.7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDJfkctRhGPVyPY18EVcegsABPTC7PsCA6Pt2UOkkzANJKkwrOUJyn5GqgJYHkOb3hWqPlS89zdlV9kXlvTdUZ8QKw4xys/5H5+CWwbag0h1EpDR9S0xO9gIgX5DgyB5Y7oNS8o9AolF+hgyUdmBYO3ff+h7eu1PnqBn8TfquqVcw==
-ramoth.oob,ramoth.oob.openstreetmap.org,10.0.49.5 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgni5YTvVrAo/wzxDRLAL4ZXJY2Egt8XXlIK72zmw6X0lCqrRGwZaBYVOBfnAz4ebC+3uRVUYVzu78DT06wkrqfvzbVekccwAFLAnbWzL/2NSExdvJIbe03bLxJdDCoZEZ15+jTMS3DnuvUwITwnbbhdkA60QP8RuES4U/bPoSzjPp9k=
-ramoth.oob,ramoth.oob.openstreetmap.org,10.0.49.5 ssh-dss AAAAB3NzaC1kc3MAAACBALRCRi3NY07WEWUGYFUftD/wNB6untreAjuujJY77ZYghV058QnIx8hu/1hcyXKdHTjI5d8qzDDj5ypG+iQ8Td4lHjHKySqUBvWBp6Uy5TC0Pa2R/mBt+S1Vilg3uvubW7uYpq8m3VI43fzbURfGKnV1lXLyjP/hyafgnndlfAZjAAAAFQC9N/IJEeMEEpyw4cL7JbPS2NhrFQAAAIAmYsZHe0TLlNGa9xOhjnEneU1U88ZxwXJQCRP/Vo2CWpEMC7GPNI3TkZjvPyH8S3s7u3pcDXR8Mm7WwbJr7ySFx1PkkXWxnZiSoGwbectXApuQor3+Mpjkdtvl1uxDAt91/mGyK4ytKoz9uIeUijbHRZfemV6rB09tvgUg4BlPtwAAAIBQyeIyMduHKtDbk9FZ5N9F7bVG1NFg9NvWf/06J/8g5l32iFaxDZ43bpymVWSce1Jm3stV/G5wopCETeYFuOnb1TzmQLoqNLixU76QWDehMDAKADurHmzf1JbCuErwTGMeoCbP8o1G9LlKwBXppHrZPBMDj7/+N5v3CGiZ4hsFlw==
-grisu.oob,grisu.oob.openstreetmap.org,10.0.33.20 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDTEivJ/aHG2g7TVGEXJUDcOrbQKMOwYEzWiKvMTsftxOKqMW2uKzCZDkW3BNXIBiAXoswaqK0qkh519i56tY9ff7XjH5YoYbPyWwbhMPoBlIc6wBF+uMV3dBRrb7iRe0HFhpl/XsTo5vw8x+5T/ITrlvI8T7ZfE6uTLxKFDxYOiQ==
-thorn-03.oob,thorn-03.oob.openstreetmap.org,10.0.49.53 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgBrDGGrP1jST/axY9UTs1q0ljkET93/vIitbc/C87pe08ccQUL/PUn0GTrVhXps2Q2nfg2IuI32vYYy0lNKXD53NOpu5G0ZxEB6BYxwejwD5YLZhJQD1mtZ5JvyAPeeWfZa15ZRoI0qzg9RxzB5bp4cRKtHxFcGRAj1jjHkN+80x
-thorn-02.oob,thorn-02.oob.openstreetmap.org,10.0.49.52 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgEitEET7IzW9j0lgxcgXT9JgzDR/cbQdlYSwV6rcWvHW9cz1ArWmJ6BY2AJ6CG3wTznVbHPupiFKf0jvkX0omKu8K90f5FJc2/BkUP4aG72YmAoPVe4bflGykvKJE9Rd4BDyPWGqI955Okp3VGCEKXBS/fwnoOZlei+9ex334hK2
-thorn-01.oob,thorn-01.oob.openstreetmap.org,10.0.49.51 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgQCFBaTPsbNtWlUSsGnRzObp3NVC6MOro10p4qSXB0kwAB+hQx/IrIH8BjduR+b6Uv2cm/UMnGRzS/1lGYe15cSs0V/IOUyXdVeX+jB0TXzS4hTqclGKJ0Ay2WEsgW27IdPxIjQg/W77s9AZ2UlyEtT7gK2oergD60yUvRfLLJioYA==
+spike-02.oob,spike-02.oob.openstreetmap.org,10.0.49.7 ssh-dss AAAAB3NzaC1kc3MAAACBAMxbg3AjYJcMX0jlgyXslqLbi3MV1zAVunNGqFOipJCW3thZ/D780MbQiXuXglqJQxWsELy+8RVVjt6/rcnZHORsH2H8M0/3WdlEUW0FxMUISXUAVtto0Fk1v4QznUtyxoKIg7sXktmreaNEcLBA7Le1bOBf/Oz14uQbmI4nycelAAAAFQDEMSn6sAPKhEYhYJiFYsDoV0aWfwAAAIAG9y+c73QbYqHBOdNISG22W0BYAnUj1L90lW44xNnmrVOc+CdTKG3VnAQcIc5BeB75sfE29JOmUGfR3/clCgCL54V8D+gEH3omtSG3eG7B+OoWhcUIoIfgO/3w2ZactdU8lA2qwSfZ0p7xLPsrDN4wuORPYFpoOU/vV9hG+dh7VQAAAIEAuk45eD65i9Gx6hHQuCoN5EGQHhL5qvO2gbShYLNqEhkDN+TmdTLK4Wbevy6tOdCrCRKP5zhoycbqm448hINFtwBPXGfRfhDsAGm075pMwljlh/LU3lSXbSU1RkmiXqjYqcjl0ntxkv2qA+zN7G1/oJK85pwScyiMo9kOuwyh3+M=
 spike-03.oob,spike-03.oob.openstreetmap.org,10.0.49.8 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCvTY6CDpJgBcU5T0l7Hmn6UkLZw1d0EQEPlcQM1UvLfdSKayVR79Yl31eVWFbA+R+QqQ8LKcmzx6ztWPuemW3Ym/gZ7NNYH10y1Rw9LywWhVnFOjKIBUVJmjdiuxftyCPveHu672k1KJ+bApXlA3/oMBmtCckr2Wod2qJDx7JIeQ==
-spike-01.oob,spike-01.oob.openstreetmap.org,10.0.49.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDHhi90mKvMe+FL1pdzBPWUfC+a0ckv31Qou7Yby1Kn9xhrR5oHvyoT4bc/xPrYvaxRZUHWn+J66ZdylhyfCZf6/5g8xghJoYVAZJn9yCV0R7xw2fzHCgue3iS/Yrep2V3DRaXt/zy+PCe7wZX7InLLtp1rV/Vx2xG3lV91OGa4Zw==
+spike-03.oob,spike-03.oob.openstreetmap.org,10.0.49.8 ssh-dss AAAAB3NzaC1kc3MAAACBAKHL6HuJER/kKOFoGbPvQ0ghCw5lJ4ACsZHi4ptTwpBh1rx+/mmktTU6/U+cP8ocGo2XIuoCaBMfNK/eqrh37a8/fZah5+wxwJBWnZqncOhJT9EjRfvRtbJr8GRtCukNxX554zsQBSqCn9CIP6E62EqbYUf0qfROX5o3SZVu2WzFAAAAFQCWHnuBktRY7R5n2ZuCL1Cdx5hevQAAAIARZiVCIAKIJerBY4AnGADzRf/m21PkhksRIKcqge8vDI5z8MMgYkmtcrlqgGPEavnajBPlAF8DdDFRbx/4k8K5ZZdr+4ipp2++V7fbkg6n2MMwR7qTN3FpoNtLwXSHLlsueAArRW3RNlYdtx9wZppUq+cGlqr0J8jXS4UOLH3MdwAAAIA3Y4EPZv6PufNBppuegYI/gziypGwlNc//XODoIagXyDclGxGnqh36J+AUWxuILQeHRTZzdLCVazFZt+EGJeKI7/C3yJOkSp3vNnre4VYmGGRp1hcBKWDVCltjv+phRMXGiuGSQdqCy+AfkGSctNQafRnQuaL5hLBytHxbXIADhA==
+dulcy.oob,dulcy.oob.openstreetmap.org,10.0.49.9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgmlwXGPIPDqoMz4s5edr+G4iuBnCYcFXjY7Et9jG/ezI6aIKd9lEOXvnHJX5hrC21aqd06dhyMLwZN+eSjJhXNaLtYmm5P442H2ZnGca1KNSpF7yRVhn0eRpX39xWK3biVfMw64mzvV3636C1adCkgBwuaqCvz1EHm/KRrySfuETFLU=
+dulcy.oob,dulcy.oob.openstreetmap.org,10.0.49.9 ssh-dss AAAAB3NzaC1kc3MAAACBANcuNreghg/8rJAmfsdD3Rp58vN84Ee1oEFMgGSxF6+yEVTbXrjQoH632jiBXSayQLXGEzrVTsGaWgujK9xT7OinNa52ydnJ/WZp5qK5FdW95h5m7pnUE3Jmm2cPmYpEJW62OeMStmTGkK0EvN2wwRLuts9R1NK63tWjFWik7QmrAAAAFQDNtW3WKlCugOFZnjIh3fBuDakdlwAAAIAzy/pxXiix8yKhlb0LQJ1izilnn2IXRvAHv4aM6LAiq6QIDj2XyT9oTS/77BguCw39WhVG599eOSRckWXFgUT2p3pWBBuuDbLEhQqIc0KgufYh/ygUdjf7zs0O2jusFkLMPgF/0IgRs/ftb36ERn3KJ4C1P0v1ABk9t55Qs985WAAAAIBZFS2HS1ewjv+/jAdUH68zT0mNBctnrqM8ixqT1Xd2Tl7SKjl6Sz9yer+6+Gq7O50U0FBS0pQPo3f9msazQU6BFYCzuSFRIJQmH7uKGPHHA7mbuow6sEOhtXBzq1VfI4addXyWlYLKXxv94/gt9xlxLZHqU4ZZb3GPGbU7kKJA9g==
+ironbelly.oob,ironbelly.oob.openstreetmap.org,10.0.49.10 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwDkRqR1VRgHOON8M7YCNnIG8k0zukAN/r4L5fPKTvWmdhe17UnxywPc+TySjXqNsXQ/jPLGvpO5uoSG3dgT2N7NUdAtdL4Enb87dX7yTbJTJzMMxTb9HSI1SL2/5iSefyAVVo1+R8DMmFqTWa2eFHoD9IoxFSNSTarTZQgmH1oZYoZX
+ironbelly.oob,ironbelly.oob.openstreetmap.org,10.0.49.10 ssh-dss AAAAB3NzaC1kc3MAAACBAJKKtKZBECA+wtvYtrEeMyTzkm3X/4IfC6E8NcnZouMCHYn3F964+pG7mRskZAi7P95VwJYx6TLkiK/MNKIh8mk8M4Xxu2USIXblkTPraPYHyVgTkfZit6F9qTR8cAOlHtoY+9GgKmWMLC+xeOgPtoERvUyuuprXsAztZ9C2BKWjAAAAFQDnPXN3n2g1xxsYZsaQpdPuijb1tQAAAIA7/IpFy3mSgpu/TmmBuYLccdRTCNt493U3wMLb/JdUBu4h1FM6J5DSozcQ70ATglpLLYa3Ru5ztv87Esu8c7CH/TAH+GZ5/3LJtS//HJDt+53yy4CgwO8pcKbYo0rfRy4/QdFXWeBUtM2XN4hHvbaBJ0fzP1gXI1GHvz3OQxWICgAAAIAvZVlk6GX+uGpqLdW4F1ctkuqUnkIGzRziJ9Gk46vOOFCPxU8bUXLGzvC7Zv3SOR04YH7/LDMUof2y68EOCbH9YT8mHNqLdZ9TxOWv8wUaDX5O9J8JXngLwl+U+ONitseg/PrEZKmP2/cR42pFwuTzb59+NSkEVAa0ZK6+2FkWog==
+spike-06.oob,spike-06.oob.openstreetmap.org,10.0.49.11 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDwQVb/cYgKp21vw6+jKr5TLAD77oKunbFbjvwPL34iLRDqdJcEOdJBV1A63ZDUWSWjDUrTa0kyneoiYdD876EpuspZ4bPgmiHBvug5NR3usxa8PAsia1K+fONAGi3+s96H6Us273KHNH5QwyBNDyYaDDjIECkydU4bQT0FSX0j32eAHI62ZO/H82fUyL20PIK/nCUaJUd+5iXgcTfjP+eL66ghgPCgXGF99/w2+3EUxP2IN9J2yI57H/rYn3rj+NdZyQuzc0TAToT341cYh2+a8R1Sb/DEFiMZFE2hJ2NeVEaBYxPSlFfhRtlB6ArXg5QL7e7UScQh/ZHLU26A1ZaB
+spike-06.oob,spike-06.oob.openstreetmap.org,10.0.49.11 ssh-dss AAAAB3NzaC1kc3MAAACBAKwUXFxncoW/AmYePSswZkqbHJDN5zI6MblYRtyLwSzfdthD8KCiDnoG+6opsy18jaX+sX0PTz8hfNVUPCMhtiTSgbGqZuQbriT1z8x3yRbGShqH1ZGC2Tt8x8k7ft17Z1tgnsnmueMrGekks6/kMZWYl+zrHXbrKCM4uPIHjK7DAAAAFQCOmXTNMg+q+8BybEEHDtWH0hbnXQAAAIBhZi+1jUaHu0UEtKnPRnChDyPrWXpgwVOM+goAZCOxfObI6PcxrIhB31gRPWNETR0UzMb2K9t1oCNdyyq7Y2TdFHEVHOTaBTWS5C9Bvtz8CHSou8mibH9sIhK2H8FevdQPOZHeUxQRSx+JzCL+f3qMovs05xVBNhUHO5XLtzIKdgAAAIAGlmX7cp+zx8D2vPiZEcczjJIgK2DvAu7t3ZAemcX5utUNKh0By7xxT8DqzIPYRvoAI+//4xqt11jIdO7KADc28uyv6oBAbB8DwhlbRONM9O84tqBTIxu0bQXtsYpkTAQvLlrDXMYDx5aYLpP1haTbGgdtjbDCz4FH1Qi7cBN0kw==
+spike-07.oob,spike-07.oob.openstreetmap.org,10.0.49.12 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxLxAbMPZw+LgzB8JmTLLxqc6CZXYA3Wo18RM02+EnmtRX6AAf/VFb7E/VpgHfZecwnFK7u21R47+fFdHCb8EDYGeWbOYoEOYMoDh26H8/aFPHbldgG0xs9EwfTryWB7iZ2sD9nLv+nBpDkFXVq53kscmDlUKQrvUyj/zR55xGxcq0ruu3w05ZeGx5I6HRY0xeK+6H4s6sZtF24Zm3CttQ5M7ADgWffE35ZwA9tEdioM3J3c5EcV4HMdhl7wame6pID9+FpDEtcts5z5sfW9Y0yx3FHrXCxRWxHRbyFG9/+4RNwKJBRZrdb+VSLlrYVUFLEfb1AhOxr8ZfSsJU1V0V
+spike-07.oob,spike-07.oob.openstreetmap.org,10.0.49.12 ssh-dss AAAAB3NzaC1kc3MAAACBAKzH4llCRo3t5ifkL9qB1KoWcAw1ROGVAJBwE0GkFZRQvzGQ7CE4anpFdv8BVlUbFx9N6batsC00ERDL9ReWQXWMa1oHr9AJ5Prpgt+azn3AFrKhhkMQZegjnZ0Ddsl/XSmFbRbJX5cnvrSIBL5nEC6kBCVFDiuH8MlsWaUsvUtbAAAAFQCWQKlZ5osk9BZKsnss/W+Mv653RwAAAIEAmbM4n4Sl77tGuTQZrlojpjEF/qm4iUpnAwbE93e2EIr2thnM+6QYtzYZ6VXSXwrh4UW6d9lL2mgSxQnY1HiM37y6e/oNFrsluK5j7AhxAYm4bHT+UpqyU/zl3eUlTdvBxhkTjQTT+wTsBgTwu5zZaJrlEPzoYkCQNJRS5AAw0gAAAACATzzX9K2AYRf7h8gK90abOmp/LYNO9ghhbhifsIrIxfShsFubUSfRO+m9e9wG2/1kwQY2VuVpdM86wwFvjHFlo2VHQkIl1JkP8pmVKs/QKSo4WSDY7aO8bpQK2Xx7QC06PUnllgXsPcyted8BGCoTLMVRkmukMwWls+Qw4fr7z18=
+spike-08.oob,spike-08.oob.openstreetmap.org,10.0.49.13 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCm7BnJ/+IKh/uAI3vIjIlkqq83jFkuxfxPuMty9/jhm9XoVbf+nqTfRQ1zMZn+bqjEjLRFTU3uwsjI61fk1Uxru34JKoJM3axNPK0S0TH6Gh08oLoBCCOti1/tTAiYaSLFfauucnJeEMkKsmIaM4LzawphkIuWu5kUv0LteuycqJAXZKr4jAIYZuxQZ2e3ofdzQoXIjXbEg/9EWyMA+zbUYlAZpELicTOQywhpez+TpZ8GUnMuya7jv5pTWfiTbSkToF0HTrKUxIEg1HYruBs+0OYI+LbABe93z/fAk3j31y3FAPEnR7vqbM7mc4DLSwgtKsKkpGGGeVHLEJtHVhhD
+spike-08.oob,spike-08.oob.openstreetmap.org,10.0.49.13 ssh-dss AAAAB3NzaC1kc3MAAACBAKJKB5ukyM8DRC6fbpXb3KEqSq4CmBqrlqXCFaktWKFerKUJWx5No/xWn6n0H46FwpznH07Dt/Mom6XuN2A0i/ZD1pE0VHnQif23+L3PBu7t3cDPVJkj+eYVB2avPPrwLGhOLOss0oKnBwhOgK3FTerCRUN5MuczzPY8xtz7w495AAAAFQCj87X4s3sLxHybJmuRFEuc68Zd8wAAAIEAhajd+H+3uVBAIKdWpn6GoU6bP0y9/ERnz1GKp+fBlTVHT+eSc1E567HqVErHxc7QSFIBmdlF88MyS0izQSAFKdzevJWqUbDeUKtcB26hGGrvHOp1dLsoALpuUDhOZvKIzehp5linYJmgnN91piZ3BlyxT1acr4zdceIGNL7rJtwAAACAYlD2EQvr2JI99MooGimqEYP/zC/HhChmtCEIJ/XQrOuKxBL4AlegFNECXBMn4JHFbdyb59LYvVlykuCgLgNY2EKObgltKJ5WLmzIRpUTBW2TlwAQiRnGqA6TGUpTTlKZFqAnRSqOJfcvQw9E4HwlN5TeOT5kxN9j1duUaV5WLx0=
+tabaluga.oob,tabaluga.oob.openstreetmap.org,10.0.49.14 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChE4Wu5bUAgtJxrappT9kZeftw9gdj+D0QmisCGHbLsDxDnww7g5gplexQOf5aEtLon5NU4HNixcEFZ+/RtEtTuVaC7wAdNF1HOdOecexvHcEFlR6KPrdAKykTyo4hWYUd4Uz38zp160V//ViAgylpvU2dhGhAWKcxgmamNMz9iPd99T0fW9bXAzpiB+yBuBskD+JyA9bQu56mfIW4u4rh1xgPBRyUdorqetM97QJ/fcdkN0m4qVda9qP0J5DUli6Cq8IbEbv87r87VPV9o/WOKGBJtclXdUuF9aLAvP3p5V+OuxqUCtvy2r6LDBvVURURb2/VXzn0O9x2pWE6uPeD
+tabaluga.oob,tabaluga.oob.openstreetmap.org,10.0.49.14 ssh-dss AAAAB3NzaC1kc3MAAACBAIQNHSK0uo1CehCFag09Hd+bJ+CDD0LPWoE/6B8Ye3woVQw8XhJPIygWyHlsFo4rbgkTnvz4ooKTUHnisEIoAA6hlqFTVP1LQQarkmba5Gf05x42hYKjM6mYvcoDMAdnkPueqKIa2CQVNCg3sopI2isxaUUWPEqrVeTMgI40ofd7AAAAFQCSNIl/McB7R/7q4fFxZ2dVGtvJGwAAAIBNRHSJrnm4IDYufJetkWyn4KEIkycUMDs1WE1H1LbtmsIaBAGaz1QJKclPCin+hCv/Rne4oPoZWGl3SqB7hjBkvKUOKRaMp4eG1YCpEvAhgNIFjPkgdekctQ1H6/+7CkQmMVelh78cUMOUYEoky7ISiaKUT3z8O9EEjPIndreNBQAAAIAQeqPxG9B+RJtcOqnW5d9M8VVUNeW10A2R2AMtTEH+/hjaoXUPpL3bQ0Fl3aWQKYJMRpOM64GgLswEhxeWf0PzSAi5CwBmyhIEUJpJ0jHOYSUXC6sLpBMV1ad4gF/63CBAgL1fUnQ/FWDtZwDEnBksDbYSS6EJB5m1o1vOx3SHWw==
+odin.oob,odin.oob.openstreetmap.org,10.0.49.15 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeK2EVK4rbsdoTq84Cl5kLhbJk7gbaNav61yFuSKfSsizzbH/tzxmiFA7mtB39WU/BlFsTHAg1mHY7cCPE01E811CDPIQhZGEyloh5ftbTACCcGAjKBhYpwTPEteBqlIk3lpN1TNTsnJSYaQay3rbOQ+IXTb8nzKYjTgANQ6QXxSq4BfuRmvMRlNw7ZuIerhs8OL2G/pxldL6AYDPDFXBs9mvvqqS0fw8rzxkjFNUc/z9odFoChtlZVbp33/LTIBQU1dY/XTxaekErjT7H93KG9NP8mmIFZtU8oRo8553ogTYVxFr6hD5D6KkbveaFU9oBDRYlJPWtdHksF8RAEpjN
+odin.oob,odin.oob.openstreetmap.org,10.0.49.15 ssh-dss AAAAB3NzaC1kc3MAAACBAMxXgZGeLxWyQCErmy0aGppk2/xHj3GTATPCQgf/Mtm5PYK7c3x8Z/fEop/BBnY2/YDE709g28Tv+61I4SD9D33OO6ABPEapHEwqp3CIYuA8+JFJhuo6Sz9h9bca6fx/KVjdDq9wbmx5IOqEFQlBoCSGJvYw5pTptVFN+nLeiTLjAAAAFQDt76BO4R+GaDn6/SeJvP3xAuqkmwAAAIEAgbhpMfB2Gk+babYDnWTWMkFO1FObUdi8/3NmiS1XUPCzdGkL1h2psoQIMXFtrNfEzSPx320rjC17T+JD1KGzXTBsPSd49MhznMc13JK2YT6KJm3io1CLKuzje4SxrpddM1Uvs/sOLmeAbdNqlUsAM8KUedEYTo/SXeVecos6dboAAACAasbTSjiTPW3NwH1yrEV8xWFCAmsmAPvqwGjaLjrrDdNQCbJ0KHMY+lbUAmT6oZ5qcrwwc2A6B+/v9XBISiT5XWELdP56bhuDcWC78aJDdtfDK1xuMtsHX5tpQcKB7IrPI+2UYVhz7zosvcCbn8FukgDx8sEcp28rHaFB5WPCjig=
+karm.oob,karm.oob.openstreetmap.org,10.0.49.50 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgnWJq8z9xvNFujhE0P040rCO1yEsH8pnQmGOGehIRcfclQBd2wOO22+8kpy04BMT9FaFdxjgNTUWtfCwT+oBsxbHIreahld34vFVCw/VSCiPEuUhBdZ+fN9hdLGygrnKxA1b2cIs532nm4LLDoP2VpM4RZuh6da+LV3eHnfDlZHO870=
+karm.oob,karm.oob.openstreetmap.org,10.0.49.50 ssh-dss AAAAB3NzaC1kc3MAAACBAMjYCKyJfA9/EQWTxwqqGBq88dAaWWG0j+ggoGEYuIWqcdA1NeF70BIiRGvAV5/oBy+p/snd0LAxDG6KnWglOo/0cjzcfys/RQl9kTa6gkcFPp9lUqRnuDF+y/egZVTU3KF376k930nNdODMe5PxECnZdC51158Zga9Hwj0+5nalAAAAFQDnh0Gx+gt+6Qc1r74FeNCiIPmzIQAAAIEAs81g5c2sF42ATY/gd5ustNXm82xfIAuRGeMCgxyXBvFM5UXuLnfOx8JVB8wu9eoSmxhDiuVX7ija5FaKAAucPBXWh/YImH+T3SOWLsxfDh8XglH4NvEtj1r+90VWbX/f1Qy7IsmmBolUCr32qD5cdeQ3JPxvUvO/TdSHaIgGK30AAACAZiVJOiM9mfMf05rAg9fjo+NKxL/jsbZ8ptTnNOFBNjq0XydXQF3Rnt01b/cUSv94VmuJgv9hq9L39nk/dSnBVQbKwIYyB0/NR2Fg0sYHpo4qj+7MFndv+ct9pVd+l9pmlEoR8soLeO1hSVeSmj9YvDzc74lx8FYMVE6+yed8ltw=
+thorn-01.oob,thorn-01.oob.openstreetmap.org,10.0.49.51 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgQCFBaTPsbNtWlUSsGnRzObp3NVC6MOro10p4qSXB0kwAB+hQx/IrIH8BjduR+b6Uv2cm/UMnGRzS/1lGYe15cSs0V/IOUyXdVeX+jB0TXzS4hTqclGKJ0Ay2WEsgW27IdPxIjQg/W77s9AZ2UlyEtT7gK2oergD60yUvRfLLJioYA==
+thorn-02.oob,thorn-02.oob.openstreetmap.org,10.0.49.52 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgEitEET7IzW9j0lgxcgXT9JgzDR/cbQdlYSwV6rcWvHW9cz1ArWmJ6BY2AJ6CG3wTznVbHPupiFKf0jvkX0omKu8K90f5FJc2/BkUP4aG72YmAoPVe4bflGykvKJE9Rd4BDyPWGqI955Okp3VGCEKXBS/fwnoOZlei+9ex334hK2
+thorn-03.oob,thorn-03.oob.openstreetmap.org,10.0.49.53 ssh-dss AAAAB3NzaC1kc3MAAACBAKZf6qtRHGHjPfOP3drwO1m28l4fpN5X5c8ArkeKhV3aTzY404uwCsSvfYQUw/s24E+989MWZxLUO0Ib+nV+hWlK0nxI85bQPIvOjaWNtbggOfNdz4VyNcLxxzsiJqNhQpGQ3LW2zQ7fsP9pM5ALAs7MDOaSdNja58aUgEMY1ta5AAAAFQC1r9L5Mkax780fOnwkDB6eIaNjCwAAAH97vSxdyRel4IucL4Ckn7Y/zVwFeLpwHiVP41MN7dO2aApuWvsygLU/FUAouv/3PRug/bAAS56w2/JLKVvyo1aRPNHAvgPFEDodqLc+dnC1bXFu1VR69ntQYTEe6iReLlwzeEPLwTW5ucGHddXVbP2jG3R+JEmGGt87P3JxicCjAAAAgBrDGGrP1jST/axY9UTs1q0ljkET93/vIitbc/C87pe08ccQUL/PUn0GTrVhXps2Q2nfg2IuI32vYYy0lNKXD53NOpu5G0ZxEB6BYxwejwD5YLZhJQD1mtZ5JvyAPeeWfZa15ZRoI0qzg9RxzB5bp4cRKtHxFcGRAj1jjHkN+80x
index 1149e9ba20bbf80dd9df54d33d96c95239e9e423..89d114f4c399db3fe2abac71f166c9b3b082aad0 100644 (file)
@@ -1,4 +1,4 @@
-default[:piwik][:version] = "3.8.1"
+default[:piwik][:version] = "3.9.0"
 default[:piwik][:plugins] = %w[
   Actions Annotations API BulkTracking Contents CoreAdminHome CoreConsole
   CoreHome CorePluginsAdmin CoreUpdater CoreVisualizations CustomPiwikJs
index 35e780b2148fc17efc23fdebe857f2d0aa044eb4..b9fbe5dabf449faf31b776d7fcb553058f91c0c9 100644 (file)
@@ -1 +1 @@
-5 * * * * www-data /usr/bin/php /srv/piwik.openstreetmap.org/misc/cron/archive.php --url=https://piwik.openstreetmap.org/ > /dev/null
+5 * * * * www-data /usr/bin/php /srv/piwik.openstreetmap.org/console core::archive --quiet --url=https://piwik.openstreetmap.org/
index 8ad59e5440da90c27e221518b68e409c94f96424..79890cbdb18361c460376b9d5f95c726bfe1c5e2 100644 (file)
@@ -1,3 +1,4 @@
 default[:web][:base_directory] = "/srv/www.openstreetmap.org"
 default[:web][:pid_directory] = "/var/run/web"
 default[:web][:log_directory] = "/var/log/web"
+default[:web][:primary_cluster] = false
index 0bc88cea7e856232ddc78068eb3c48983d6f8c27..e1995500cd2859d42bab41be5ee4b2c8e9785420 100644 (file)
@@ -36,7 +36,17 @@ end
 
 apache_site "www.openstreetmap.org" do
   template "apache.backend.erb"
-  variables :secret_key_base => web_passwords["secret_key_base"]
+  variables :status => node[:web][:status],
+            :secret_key_base => web_passwords["secret_key_base"]
 end
 
 node.normal[:memcached][:ip_address] = node.internal_ipaddress
+
+if node[:web][:primary_cluster]
+  service "rails-jobs@traces" do
+    action [:enable, :start]
+    supports :restart => true
+    subscribes :restart, "rails_port[www.openstreetmap.org]"
+    subscribes :restart, "systemd_service[rails-jobs]"
+  end
+end
index b2ba018320bd972619a3b3fccefa712387dcb3ab..c114f6516ab631c4303611b17a63cea9b34fa4b2 100644 (file)
@@ -38,7 +38,8 @@ end
 
 apache_site "www.openstreetmap.org" do
   template "apache.frontend.erb"
-  variables :secret_key_base => web_passwords["secret_key_base"]
+  variables :status => node[:web][:status],
+            :secret_key_base => web_passwords["secret_key_base"]
 end
 
 template "/etc/logrotate.d/apache2" do
@@ -48,7 +49,7 @@ template "/etc/logrotate.d/apache2" do
   mode 0o644
 end
 
-service "rails-jobs" do
+service "rails-jobs@mailers" do
   action [:enable, :start]
   supports :restart => true
   subscribes :restart, "rails_port[www.openstreetmap.org]"
index be51e2d8cce93e2524edffa37a800ca322f83847..ab674ba93e03e525539f6bf457bf5236baa76b6e 100644 (file)
@@ -88,15 +88,15 @@ rails_port "www.openstreetmap.org" do
   github_auth_secret web_passwords["github_auth_secret"]
   wikipedia_auth_id "e4fe0c2c5855d23ed7e1f1c0fa1f1c58"
   wikipedia_auth_secret web_passwords["wikipedia_auth_secret"]
-  mapzen_valhalla_key web_passwords["mapzen_valhalla_key"]
   thunderforest_key web_passwords["thunderforest_key"]
   totp_key web_passwords["totp_key"]
   csp_enforce true
 end
 
-systemd_service "rails-jobs" do
+systemd_service "rails-jobs@" do
   description "Rails job queue runner"
   type "simple"
+  environment "QUEUE" => "%I"
   user "rails"
   working_directory rails_directory
   exec_start "/usr/local/bin/bundle#{ruby_version} exec rake jobs:work"
index 412d02dae2953ca64e5597e0b9ba1c239a6dd081..4c3de7489d706a97b4955b1fb4b53634fe83ad76 100644 (file)
@@ -61,13 +61,12 @@ property :github_auth_id, String
 property :github_auth_secret, String
 property :wikipedia_auth_id, String
 property :wikipedia_auth_secret, String
-property :mapquest_key, String
-property :mapzen_valhalla_key, String
 property :thunderforest_key, String
 property :totp_key, String
 property :csp_enforce, [TrueClass, FalseClass], :default => false
 property :csp_report_url, String
 property :piwik_configuration, Hash
+property :trace_use_job_queue, [TrueClass, FalseClass], :default => false
 
 action :create do
   package %W[
@@ -246,14 +245,6 @@ action :create do
       line.gsub!(/^( *)#wikipedia_auth_secret:.*$/, "\\1wikipedia_auth_secret: \"#{new_resource.wikipedia_auth_secret}\"")
     end
 
-    if new_resource.mapquest_key
-      line.gsub!(/^( *)#mapquest_key:.*$/, "\\1mapquest_key: \"#{new_resource.mapquest_key}\"")
-    end
-
-    if new_resource.mapzen_valhalla_key
-      line.gsub!(/^( *)#mapzen_valhalla_key:.*$/, "\\1mapzen_valhalla_key: \"#{new_resource.mapzen_valhalla_key}\"")
-    end
-
     if new_resource.thunderforest_key
       line.gsub!(/^( *)#thunderforest_key:.*$/, "\\1thunderforest_key: \"#{new_resource.thunderforest_key}\"")
     end
@@ -277,12 +268,76 @@ action :create do
     line
   end
 
-  file "#{rails_directory}/config/application.yml" do
+  file "create:#{rails_directory}/config/application.yml" do
+    path "#{rails_directory}/config/application.yml"
     owner new_resource.user
     group new_resource.group
     mode 0o664
     content application_yml
     notifies :run, "execute[#{rails_directory}/public/assets]"
+    only_if { ::File.exist?("#{rails_directory}/config/example.application.yml") }
+  end
+
+  file "delete:#{rails_directory}/config/application.yml" do
+    path "#{rails_directory}/config/application.yml"
+    action :delete
+    not_if { ::File.exist?("#{rails_directory}/config/example.application.yml") }
+  end
+
+  settings = new_resource.to_hash.transform_keys(&:to_s).slice(
+    "email_from",
+    "status",
+    "messages_domain",
+    "attachments_dir",
+    "log_path",
+    "logstash_path",
+    "potlatch2_key",
+    "id_key",
+    "oauth_key",
+    "nominatim_url",
+    "osrm_url",
+    "google_auth_id",
+    "google_auth_secret",
+    "google_openid_realm",
+    "facebook_auth_id",
+    "facebook_auth_secret",
+    "windowslive_auth_id",
+    "windowslive_auth_secret",
+    "github_auth_id",
+    "github_auth_secret",
+    "wikipedia_auth_id",
+    "wikipedia_auth_secret",
+    "thunderforest_key",
+    "totp_key",
+    "csp_enforce",
+    "csp_report_url",
+    "trace_use_job_queue"
+  ).reject { |_k, v| v.nil? }.merge(
+    "server_protocol" => "https",
+    "server_url" => new_resource.site,
+    "publisher_url" => "https://plus.google.com/111953119785824514010",
+    "support_email" => "support@openstreetmap.org",
+    "email_return_path" => "bounces@openstreetmap.org",
+    "geonames_username" => "openstreetmap",
+    "geoip_database" => "/usr/share/GeoIP/GeoIPv6.dat"
+  )
+
+  if new_resource.memcache_servers
+    settings["memcache_servers"] = new_resource.memcache_servers.to_a
+  end
+
+  if new_resource.gpx_dir
+    settings["gpx_trace_dir"] = "#{new_resource.gpx_dir}/traces"
+    settings["gpx_image_dir"] = "#{new_resource.gpx_dir}/images"
+  end
+
+  file "#{rails_directory}/config/settings.local.yml" do
+    owner new_resource.user
+    group new_resource.group
+    mode 0o664
+    content YAML.dump(settings)
+    notifies :run, "execute[#{rails_directory}/public/assets]"
+    only_if { ::File.exist?("#{rails_directory}/config/settings.yml") }
   end
 
   if new_resource.piwik_configuration
index 467dd455636164ffc77198b9f0baa2cd8c4e10af..6ce83af6c2668f461b5c499ea3c1b363c8efc611 100644 (file)
@@ -41,6 +41,7 @@
   PassengerMaxRequests 500
   PassengerPreStart https://www.openstreetmap.org/
   PassengerAppGroupName rails
+  SetEnv OPENSTREETMAP_STATUS <%= @status %>
   SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
 
   #
index 51d43a394d00d1088f53af8d8655ef955953ae1b..34ef0497abe22bf4d89d78adc64ae9b9e000254b 100644 (file)
   PassengerMaxRequestQueueSize 250
   PassengerPreStart https://www.openstreetmap.org/
   PassengerAppGroupName rails
+  SetEnv OPENSTREETMAP_STATUS <%= @status %>
   SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
   Alias /favicon.ico <%= node[:web][:base_directory] %>/rails/app/assets/favicons/favicon.ico
   Alias /openlayers <%= node[:web][:base_directory] %>/rails/vendor/assets/openlayers
index 3e3815dcabf9e238322f319587f42c86d772268c..2fe225c6ebebd68f508a084c743a8f9251ab9626 100644 (file)
@@ -56,11 +56,6 @@ mediawiki_site "wiki.openstreetmap.org" do
   # site_readonly "MAINTENANCE: WIKI READ-ONLY UNTIL Monday 16 May 2016 - 11:00am UTC/GMT."
 end
 
-mediawiki_extension "MobileFrontend" do
-  site "wiki.openstreetmap.org"
-  template "mw-ext-MobileFrontend.inc.php.erb"
-end
-
 mediawiki_extension "CodeEditor" do
   site "wiki.openstreetmap.org"
 end
@@ -96,6 +91,10 @@ mediawiki_extension "Thanks" do
   template_cookbook "wiki"
 end
 
+mediawiki_extension "TimedMediaHandler" do
+  site "wiki.openstreetmap.org"
+end
+
 cookbook_file "/srv/wiki.openstreetmap.org/osm_logo_wiki.png" do
   owner node[:mediawiki][:user]
   group node[:mediawiki][:group]
index d680fddb110e442b3043d208d6b83e0cb21cebb1..aa4c8e94472ae29cfd0a72bd130fd31ac693e522 100644 (file)
@@ -15,8 +15,8 @@ default_attributes(
   },
   :munin => {
     :plugins => {
-      :ntp_offset => {
-        :offset => { :warning => "100", :critical => "250" }
+      :chrony => {
+        :systime => { :warning => "100", :critical => "250" }
       }
     }
   },
@@ -74,15 +74,6 @@ default_attributes(
         "net.core.default_qdisc" => "pfifo_fast"
       }
     }
-  },
-  :sysfs => {
-    :cpufreq_ondemand => {
-      :comment => "Tune the ondemand CPU frequency governor",
-      :parameters => {
-        "devices/system/cpu/cpufreq/ondemand/up_threshold" => "25",
-        "devices/system/cpu/cpufreq/ondemand/sampling_down_factor" => "100"
-      }
-    }
   }
 )
 
index 8bf964a60392e9ab4897faa847d916256b71b650..d0fcef8d3fbeb03a46b675cf831675ec66a317f1 100644 (file)
@@ -3,12 +3,6 @@ description "Master role applied to boitata"
 
 default_attributes(
   :networking => {
-    :firewall => {
-      :log => false,
-      :mark => false,
-      :raw => false,
-      :mangle => false
-    },
     :interfaces => {
       :external_ipv4 => {
         :interface => "ens3",
index 2cd7f7d5835853e2b01379cf6b5ea5e5cfe9b9c7..e53eb64b24ea93e1ff6826691c21abe0266bd7b6 100644 (file)
@@ -2,6 +2,11 @@ name "c3sl"
 description "Role applied to all servers at Centro de Computação Científica e Software Livre"
 
 default_attributes(
+  :accounts => {
+    :users => {
+      :c3sl => { :status => :administrator }
+    }
+  },
   :hosted_by => "Centro de Computação Científica e Software Livre, Universidade Federal do Paraná",
   :location => "Curitiba, Brazil",
   :networking => {
index 703d23e80a927c959e2b3c0b0f12b8f634e3ea92..cb523d3398ce5784438dbacd51a2ed70e067d375 100644 (file)
@@ -24,6 +24,7 @@ default_attributes(
   :tilecache => {
     :tile_parent => "vinadelmar.render.openstreetmap.org",
     :tile_siblings => [
+      "boitata.openstreetmap.org",
       "ascalon.openstreetmap.org",
       "stormfly-02.openstreetmap.org",
       "jakelong.openstreetmap.org"
index 694c84f93d4674d197f39206455237d3aae10022..35c811f3533109f4a61f5fced107590cdfaf3ef2 100644 (file)
@@ -61,15 +61,6 @@ default_attributes(
       "daux" => "/ssd/tablespaces/daux",
       "iaux" => "/ssd/tablespaces/iaux"
     }
-  },
-  :sysfs => {
-    :md_tune => {
-      :comment => "Enable request merging for NVMe devices",
-      :parameters => {
-        "block/nvme0n1/queue/nomerges" => "1",
-        "block/nvme1n1/queue/nomerges" => "1"
-      }
-    }
   }
 )
 
index 8e9c7c1a87e7f744c761e4210a5fe18d2af4cc52..d900fbb4f41dfe7d1d0809cf6680d2f5596ffdf3 100644 (file)
@@ -38,21 +38,6 @@ default_attributes(
         "kernel.shmall" => 66 * 1024 * 1024 * 1024 / 4096
       }
     }
-  },
-  :sysfs => {
-    :md_tune => {
-      :comment => "Enable request merging for NVMe devices",
-      :parameters => {
-        "block/nvme0n1/queue/nomerges" => "1",
-        "block/nvme1n1/queue/nomerges" => "1",
-        "block/nvme2n1/queue/nomerges" => "1",
-        "block/nvme3n1/queue/nomerges" => "1",
-        "block/nvme4n1/queue/nomerges" => "1",
-        "block/nvme5n1/queue/nomerges" => "1",
-        "block/nvme6n1/queue/nomerges" => "1",
-        "block/nvme7n1/queue/nomerges" => "1"
-      }
-    }
   }
 )
 
index 85d445dce565c148ef948fe665d23b4557d20afb..a35b4775c50b97526ad92825f812b937402d4396 100644 (file)
@@ -27,7 +27,8 @@ default_attributes(
   :web => {
     :backends => %w[rails1 rails2 rails3],
     :fileserver => "ironbelly",
-    :readonly_database_host => "karm.ams.openstreetmap.org"
+    :readonly_database_host => "karm.ams.openstreetmap.org",
+    :primary_cluster => true
   }
 )
 
diff --git a/roles/fafnir.rb b/roles/fafnir.rb
new file mode 100644 (file)
index 0000000..297a610
--- /dev/null
@@ -0,0 +1,43 @@
+name "fafnir"
+description "Master role applied to fafnir"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :external_ipv4 => {
+        :interface => "enp3s0f0",
+        :role => :external,
+        :family => :inet,
+        :address => "130.239.18.114",
+        :prefix => "27",
+        :gateway => "130.239.18.97"
+      },
+      :external_ipv6 => {
+        :interface => "enp3s0f0",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:6b0:e:2a18::114",
+        :prefix => "64",
+        :gateway => "fe80::5a97:bdff:fe79:dbc0"
+      }
+    }
+  },
+  :squid => {
+    :cache_mem => "28000 MB",
+    :cache_dir => "coss /store/squid/coss-01 128000 block-size=8192 max-size=262144 membufs=80"
+  },
+  :tilecache => {
+    :tile_parent => "sweden.render.openstreetmap.org",
+    :tile_siblings => [
+      "nidhogg.openstreetmap.org",
+      "ridgeback.openstreetmap.org",
+      "rimfaxe.openstreetmap.org",
+      "trogdor.openstreetmap.org"
+    ]
+  }
+)
+
+run_list(
+  "role[umu]",
+  "role[tilecache]"
+)
diff --git a/roles/hp-g5.rb b/roles/hp-g5.rb
deleted file mode 100644 (file)
index 50986b1..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-name "hp-g5"
-description "Role applied to all HP G5 machines"
-
-default_attributes(
-  :munin => {
-    :plugins => {
-      :hpasmcli2_temp => {
-        :temp1 => { :warning => 60 }
-      }
-    }
-  }
-)
diff --git a/roles/hp-g9.rb b/roles/hp-g9.rb
new file mode 100644 (file)
index 0000000..01f2afc
--- /dev/null
@@ -0,0 +1,15 @@
+name "hp-g9"
+description "Role applied to all HP G9 machines"
+
+default_attributes(
+  :munin => {
+    :plugins => {
+      :hpasmcli2_temp => {
+        :temp11 => { :warning => 85, :critical => 100 },
+        :temp12 => { :warning => 85, :critical => 100 },
+        :temp19 => { :warning => 85, :critical => 100 },
+        :temp20 => { :warning => 85, :critical => 100 }
+      }
+    }
+  }
+)
index 9f1fc2a9a6ac9d535c8a7280a5b42f3a17c03291..8f0ce7a234de14536cf422a0bbc8028ad677c389 100644 (file)
@@ -41,21 +41,6 @@ default_attributes(
         "kernel.shmall" => 66 * 1024 * 1024 * 1024 / 4096
       }
     }
-  },
-  :sysfs => {
-    :md_tune => {
-      :comment => "Enable request merging for NVMe devices",
-      :parameters => {
-        "block/nvme0n1/queue/nomerges" => "1",
-        "block/nvme1n1/queue/nomerges" => "1",
-        "block/nvme2n1/queue/nomerges" => "1",
-        "block/nvme3n1/queue/nomerges" => "1",
-        "block/nvme4n1/queue/nomerges" => "1",
-        "block/nvme5n1/queue/nomerges" => "1",
-        "block/nvme6n1/queue/nomerges" => "1",
-        "block/nvme7n1/queue/nomerges" => "1"
-      }
-    }
   }
 )
 
index 4753dd832ffb95ff8ef73071e08dc4a43549e049..1e471b04099e2c6737c1da56884f8a973b03e198 100644 (file)
@@ -74,13 +74,6 @@ default_attributes(
     }
   },
   :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.bond0.autoconf" => "0",
-        "net.ipv6.conf.bond0.accept_ra" => "0"
-      }
-    },
     :postgres => {
       :comment => "Increase shared memory for postgres",
       :parameters => {
index c2562bf124237f9e8555292d625d1b0183719927..e173757659934d92465ffda7c7181eabe9b4caf1 100644 (file)
@@ -27,8 +27,9 @@ default_attributes(
     :cache_dir => "coss /store/squid/coss-01 128000 block-size=8192 max-size=262144 membufs=80"
   },
   :tilecache => {
-    :tile_parent => "linkoping.render.openstreetmap.org",
+    :tile_parent => "sweden.render.openstreetmap.org",
     :tile_siblings => [
+      "fafnir.openstreetmap.org",
       "ridgeback.openstreetmap.org",
       "rimfaxe.openstreetmap.org",
       "trogdor.openstreetmap.org"
diff --git a/roles/odin.rb b/roles/odin.rb
new file mode 100644 (file)
index 0000000..b6c64a1
--- /dev/null
@@ -0,0 +1,71 @@
+name "odin"
+description "Master role applied to odin"
+
+default_attributes(
+  :apt => {
+    :sources => ["postgresql"]
+  },
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "bond0",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.48.15",
+        :bond => {
+          :slaves => %w[eno1 eno2]
+        }
+      },
+      :external_ipv4 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet,
+        :address => "130.117.76.15"
+      },
+      :external_ipv6 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:978:2:2C::172:F"
+      }
+    }
+  },
+  :postgresql => {
+    :versions => ["10"],
+    :settings => {
+      :defaults => {
+        :shared_buffers => "8GB",
+        :maintenance_work_mem => "7144MB",
+        :effective_cache_size => "16GB"
+      }
+    }
+  },
+  :sysctl => {
+    :postgres => {
+      :comment => "Increase shared memory for postgres",
+      :parameters => {
+        "kernel.shmmax" => 9 * 1024 * 1024 * 1024,
+        "kernel.shmall" => 9 * 1024 * 1024 * 1024 / 4096
+      }
+    }
+  },
+  :tile => {
+    :database => {
+      :cluster => "10/main",
+      :postgis => "2.4"
+    },
+    :node_file => "/store/database/nodes",
+    :styles => {
+      :default => {
+        :tile_directories => [
+          { :name => "/store/tiles/default", :min_zoom => 0, :max_zoom => 19 }
+        ]
+      }
+    }
+  }
+)
+
+run_list(
+  "role[equinix]",
+  "role[tile]"
+)
index ce00c01c469ca8c7f3127aa26cdcf8ade7fd0931..9226ff0de7da1ff9fd3942335f54965d9afc0efd 100644 (file)
@@ -9,9 +9,6 @@ default_attributes(
       :max_spare_threads => 150
     }
   },
-  :apt => {
-    :sources => ["brightbox-ruby-ng"]
-  },
   :hardware => {
     :mcelog => {
       :enabled => false
index 801165bd5f1d6c2cbbe70deac7e89a209caddaa6..628a3935d1476c11b6def3b40d4e3aeb8e453ed8 100644 (file)
@@ -26,23 +26,11 @@ default_attributes(
         :address => "2001:978:2:2C::172:6"
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
 run_list(
   "role[equinix]",
   "role[hp-dl360-g6]",
-  "role[web-frontend]",
-  "role[web-gpximport]",
-  "role[web-statistics]",
-  "role[web-cleanup]"
+  "role[web-gpximport]"
 )
index 52d51ad30b11a52ba59106b2558feb73a14fdecb..bbfd5853b04d598e78ffef05abfd54ce14b548b2 100644 (file)
@@ -26,20 +26,10 @@ default_attributes(
         :address => "2001:978:2:2C::172:7"
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
 run_list(
   "role[equinix]",
-  "role[hp-dl360-g6]",
-  "role[web-frontend]"
+  "role[hp-dl360-g6]"
 )
index bf27cf9c2c898278ecac3e899e16fe2a3c38b4f5..f3cad781650ee83e0fe05377a1e9368a2c7cbb6e 100644 (file)
@@ -26,20 +26,10 @@ default_attributes(
         :address => "2001:978:2:2C::172:8"
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
 run_list(
   "role[equinix]",
-  "role[hp-dl360-g6]",
-  "role[web-frontend]"
+  "role[hp-dl360-g6]"
 )
index 4936947656672a5e9bed427e7b46ca794b474e06..bc2e53f7500aa4f68bf881ae4bb8261a156f87e7 100644 (file)
@@ -26,21 +26,12 @@ default_attributes(
         :address => "2001:41c9:2:d6::21"
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.bond0.autoconf" => "0",
-        "net.ipv6.conf.bond0.accept_ra" => "0"
-      }
-    }
   }
 )
 
 run_list(
   "role[bytemark]",
-  "role[web-frontend]",
+  "role[web-frontend]"
   # "role[web-gpximport]",
   # "role[web-statistics]",
   # "role[web-cleanup]"
index 7710900aa7b69ca5426aba3f6da104283043cdd0..ce41465a875584eda11554fac60638aefc2d8324 100644 (file)
@@ -26,15 +26,6 @@ default_attributes(
         :address => "2001:41c9:2:d6::22"
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.bond0.autoconf" => "0",
-        "net.ipv6.conf.bond0.accept_ra" => "0"
-      }
-    }
   }
 )
 
diff --git a/roles/spike-06.rb b/roles/spike-06.rb
new file mode 100644 (file)
index 0000000..4ba626c
--- /dev/null
@@ -0,0 +1,38 @@
+name "spike-06"
+description "Master role applied to spike-06"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "bond0",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.48.11",
+        :bond => {
+          :slaves => %w[eno1 eno2]
+        }
+      },
+      :external_ipv4 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet,
+        :address => "130.117.76.11"
+      },
+      :external_ipv6 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:978:2:2C::172:B"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[equinix]",
+  "role[hp-g9]",
+  "role[web-frontend]",
+  "role[web-statistics]",
+  "role[web-cleanup]"
+)
diff --git a/roles/spike-07.rb b/roles/spike-07.rb
new file mode 100644 (file)
index 0000000..6868385
--- /dev/null
@@ -0,0 +1,36 @@
+name "spike-07"
+description "Master role applied to spike-07"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "bond0",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.48.12",
+        :bond => {
+          :slaves => %w[eno1 eno2]
+        }
+      },
+      :external_ipv4 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet,
+        :address => "130.117.76.12"
+      },
+      :external_ipv6 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:978:2:2C::172:C"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[equinix]",
+  "role[hp-g9]",
+  "role[web-frontend]"
+)
diff --git a/roles/spike-08.rb b/roles/spike-08.rb
new file mode 100644 (file)
index 0000000..2504064
--- /dev/null
@@ -0,0 +1,36 @@
+name "spike-08"
+description "Master role applied to spike-08"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "bond0",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.48.13",
+        :bond => {
+          :slaves => %w[eno1 eno2]
+        }
+      },
+      :external_ipv4 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet,
+        :address => "130.117.76.13"
+      },
+      :external_ipv6 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:978:2:2C::172:D"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[equinix]",
+  "role[hp-g9]",
+  "role[web-frontend]"
+)
diff --git a/roles/tabaluga.rb b/roles/tabaluga.rb
new file mode 100644 (file)
index 0000000..8645291
--- /dev/null
@@ -0,0 +1,36 @@
+name "tabaluga"
+description "Master role applied to tabaluga"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "bond0",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.48.14",
+        :bond => {
+          :slaves => %w[eno1 eno2]
+        }
+      },
+      :external_ipv4 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet,
+        :address => "130.117.76.14"
+      },
+      :external_ipv6 => {
+        :interface => "bond0.2",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:978:2:2C::172:E"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[equinix]",
+  "role[hp-g9]",
+  "role[wiki]"
+)
index 5e40db358de0838b4ea3fb1861d3d21a21f29fb5..27bd25cf0f8a80ba84ec886b67702024650aa647 100644 (file)
@@ -14,15 +14,6 @@ default_attributes(
         }
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
index a3b1efb2258601e39e4dd8b7fadf9773c5cfcdfa..09754369438317d57d24cecd7ba1bee798efa786 100644 (file)
@@ -14,15 +14,6 @@ default_attributes(
         }
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
index 954abeec3639bd52f7c627ad1257b35fc71d45ee..9a2393669242a85d23a8652a14d53bf90c6232ee 100644 (file)
@@ -14,15 +14,6 @@ default_attributes(
         }
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.eth0.autoconf" => "0",
-        "net.ipv6.conf.eth0.accept_ra" => "0"
-      }
-    }
   }
 )
 
index 8954a8c348440f38991ea47be8496be61aff49a0..7afcfb3be2cb7a1d5d6033576ba8e57855747362 100644 (file)
@@ -14,15 +14,6 @@ default_attributes(
         }
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.bond0.autoconf" => "0",
-        "net.ipv6.conf.bond0.accept_ra" => "0"
-      }
-    }
   }
 )
 
index e0b20913d94c055e7784ac495dafa61042689dec..7d0db0e250df50d4b853f733dcd0638bf0ff05b2 100644 (file)
@@ -14,15 +14,6 @@ default_attributes(
         }
       }
     }
-  },
-  :sysctl => {
-    :ipv6_autoconf => {
-      :comment => "Disable IPv6 auto-configuration on internal interface",
-      :parameters => {
-        "net.ipv6.conf.bond0.autoconf" => "0",
-        "net.ipv6.conf.bond0.accept_ra" => "0"
-      }
-    }
   }
 )
 
index 1b0424b9c6d81622b6fe54cb877b1f7920c7d0eb..3db2ce2eb2353051489d8901ad24e80e1d8e5415 100644 (file)
@@ -94,7 +94,7 @@ default_attributes(
     :styles => {
       :default => {
         :repository => "git://github.com/gravitystorm/openstreetmap-carto.git",
-        :revision => "v4.19.0",
+        :revision => "v4.20.0",
         :max_zoom => 19
       }
     }
diff --git a/roles/umu.rb b/roles/umu.rb
new file mode 100644 (file)
index 0000000..70c88a2
--- /dev/null
@@ -0,0 +1,30 @@
+name "umu"
+description "Role applied to all servers at Umeå University"
+
+default_attributes(
+  :accounts => {
+    :users => {
+      :maswan => { :status => :administrator }
+    }
+  },
+  :hosted_by => "Academic Computer Club, Umeå University",
+  :location => "Umeå, Sweden",
+  :networking => {
+    :nameservers => ["130.239.18.251", "130.239.18.252", "130.239.1.90"],
+    :roles => {
+      :external => {
+        :zone => "osm"
+      }
+    }
+  }
+)
+
+override_attributes(
+  :ntp => {
+    :servers => ["0.se.pool.ntp.org", "1.se.pool.ntp.org", "europe.pool.ntp.org"]
+  }
+)
+
+run_list(
+  "role[se]"
+)
index 5f23e0618361d3e7ee76c300cc3821b42b808eb3..5010e555dfaca959e8f53074231ada3efc929659 100644 (file)
@@ -26,7 +26,6 @@ default_attributes(
   },
   :exim => {
     :local_domains => ["messages.openstreetmap.org"],
-    :trusted_users => ["rails"],
     :routes => {
       :messages => {
         :comment => "messages.openstreetmap.org",
index a3bcbc9b36d3fe388d532ad6a5dc43b763866b33..3276e43e4dc8bd7fdfbec542a1057c0dc61eadd3 100644 (file)
@@ -10,6 +10,9 @@ default_attributes(
       }
     }
   },
+  :exim => {
+    :trusted_users => ["rails"]
+  },
   :passenger => {
     :pool_idle_time => 3600
   },