# Offense count: 27
# Configuration parameters: CountComments.
Metrics/BlockLength:
- Max: 361
+ Max: 363
+
+Metrics/BlockNesting:
+ Max: 4
# Offense count: 3
Metrics/CyclomaticComplexity:
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)
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)
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)
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)
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)
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)
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)
package %w[
apt
apt-transport-https
+ gnupg
update-notifier-common
]
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
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
--- /dev/null
+# DO NOT EDIT - This file is being maintained by Chef
+
+Package: cciss-vol-status
+Pin: origin "*.ubuntu.com"
+Pin-Priority: 1100
$TTL 604800
@ IN SOA <%= node[:fdqn] %>. root.openstreetmap.org. (
- 2018072601 ; Serial
+ 2019040301 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
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.
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.
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] || []
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
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
# 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
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"
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";
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";
<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');
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]
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]
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]
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"
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
+options => {
+ listen => [ <%= node.ipaddresses(:role => :external).join(", ") %> ]
+}
+
plugins => {
geoip => {
maps => {
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
depends "munin"
depends "ohai"
depends "tools"
+depends "sysfs"
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"
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
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
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
]
end
-disks = disks.compact
+disks = disks.compact.uniq
if disks.count.positive?
package "smartmontools"
--- /dev/null
+#!/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
# 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"
: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
$wgMFAutodetectMobileView = true;
// Set the default skin
-$wgMFDefaultSkinClass = 'SkinVector';
+$wgMFDefaultSkinClass = 'SkinMinerva';
--- /dev/null
+#!/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
# * 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]
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
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|
+++ /dev/null
-# 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(" ") %>
--- /dev/null
+[Resolve]
+DNS=<%= node[:networking][:nameservers].join(" ") %>
+Domains=<%= node[:networking][:search].join(" ") %>
+DNSSEC=allow-downgrade
-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"
# See the License for the specific language governing permissions and
# limitations under the License.
-require "socket"
-
package %w[
- ntp
- ntpdate
+ chrony
tzdata
]
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"
--- /dev/null
+# 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
+++ /dev/null
-# 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
<%= 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
-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
-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/
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
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
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
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]"
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"
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[
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
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
PassengerMaxRequests 500
PassengerPreStart https://www.openstreetmap.org/
PassengerAppGroupName rails
+ SetEnv OPENSTREETMAP_STATUS <%= @status %>
SetEnv SECRET_KEY_BASE <%= @secret_key_base %>
#
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
# 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
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]
},
:munin => {
:plugins => {
- :ntp_offset => {
- :offset => { :warning => "100", :critical => "250" }
+ :chrony => {
+ :systime => { :warning => "100", :critical => "250" }
}
}
},
"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"
- }
- }
}
)
default_attributes(
:networking => {
- :firewall => {
- :log => false,
- :mark => false,
- :raw => false,
- :mangle => false
- },
:interfaces => {
:external_ipv4 => {
:interface => "ens3",
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 => {
:tilecache => {
:tile_parent => "vinadelmar.render.openstreetmap.org",
:tile_siblings => [
+ "boitata.openstreetmap.org",
"ascalon.openstreetmap.org",
"stormfly-02.openstreetmap.org",
"jakelong.openstreetmap.org"
"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"
- }
- }
}
)
"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"
- }
- }
}
)
: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
}
)
--- /dev/null
+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]"
+)
+++ /dev/null
-name "hp-g5"
-description "Role applied to all HP G5 machines"
-
-default_attributes(
- :munin => {
- :plugins => {
- :hpasmcli2_temp => {
- :temp1 => { :warning => 60 }
- }
- }
- }
-)
--- /dev/null
+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 }
+ }
+ }
+ }
+)
"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"
- }
- }
}
)
}
},
: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 => {
: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"
--- /dev/null
+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]"
+)
:max_spare_threads => 150
}
},
- :apt => {
- :sources => ["brightbox-ruby-ng"]
- },
:hardware => {
:mcelog => {
:enabled => false
: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]"
)
: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]"
)
: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]"
)
: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]"
: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"
- }
- }
}
)
--- /dev/null
+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]"
+)
--- /dev/null
+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]"
+)
--- /dev/null
+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]"
+)
--- /dev/null
+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]"
+)
}
}
}
- },
- :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"
- }
- }
}
)
}
}
}
- },
- :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"
- }
- }
}
)
}
}
}
- },
- :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"
- }
- }
}
)
}
}
}
- },
- :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"
- }
- }
}
)
}
}
}
- },
- :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"
- }
- }
}
)
:styles => {
:default => {
:repository => "git://github.com/gravitystorm/openstreetmap-carto.git",
- :revision => "v4.19.0",
+ :revision => "v4.20.0",
:max_zoom => 19
}
}
--- /dev/null
+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]"
+)
},
:exim => {
:local_domains => ["messages.openstreetmap.org"],
- :trusted_users => ["rails"],
:routes => {
:messages => {
:comment => "messages.openstreetmap.org",
}
}
},
+ :exim => {
+ :trusted_users => ["rails"]
+ },
:passenger => {
:pool_idle_time => 3600
},