]> git.openstreetmap.org Git - chef.git/commitdiff
Merge remote-tracking branch 'github/pull/102'
authorTom Hughes <tom@compton.nu>
Thu, 26 Jan 2017 18:29:11 +0000 (18:29 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 26 Jan 2017 18:29:11 +0000 (18:29 +0000)
83 files changed:
cookbooks/chef/attributes/default.rb
cookbooks/chef/recipes/default.rb
cookbooks/chef/templates/default/report.rb.erb
cookbooks/clamav/recipes/default.rb
cookbooks/clamav/templates/default/clamav-unofficial-sigs.conf.erb [new file with mode: 0644]
cookbooks/dhcpd/templates/default/dhcpd.conf.erb
cookbooks/exim/files/default/noreply/forum [new file with mode: 0644]
cookbooks/exim/templates/default/exim4.conf.erb
cookbooks/foundation/metadata.rb
cookbooks/foundation/recipes/owg.rb [new file with mode: 0644]
cookbooks/foundation/templates/default/apache.owg.erb [new file with mode: 0644]
cookbooks/gps-tile/files/default/html/index.html [new file with mode: 0644]
cookbooks/gps-tile/files/default/html/map.css [new file with mode: 0644]
cookbooks/gps-tile/files/default/html/map.js [new file with mode: 0644]
cookbooks/hardware/recipes/default.rb
cookbooks/mediawiki/providers/extension.rb
cookbooks/mediawiki/providers/site.rb
cookbooks/mediawiki/resources/extension.rb
cookbooks/munin/files/default/rrddump.sh [new file with mode: 0644]
cookbooks/munin/recipes/default.rb
cookbooks/munin/recipes/server.rb
cookbooks/munin/templates/default/apache.erb
cookbooks/munin/templates/default/rrddump.cron.erb [new file with mode: 0644]
cookbooks/networking/templates/default/interfaces.erb
cookbooks/networking/templates/default/shorewall-zones.erb
cookbooks/nginx/recipes/default.rb
cookbooks/nginx/templates/default/nginx.conf.erb
cookbooks/piwik/attributes/default.rb
cookbooks/tile/recipes/default.rb
cookbooks/tile/templates/default/apache.erb
cookbooks/tile/templates/default/export.erb
cookbooks/tilecache/recipes/default.rb
cookbooks/tilecache/templates/default/cron.erb [new file with mode: 0644]
cookbooks/tilecache/templates/default/nginx_generate_tilecache_qos_map.erb [new file with mode: 0755]
cookbooks/tilecache/templates/default/nginx_tile_ssl.conf.erb
cookbooks/tilecache/templates/default/squid.conf.erb
cookbooks/web/definitions/rails_port.rb
cookbooks/web/recipes/rails.rb
cookbooks/web/templates/default/apache.frontend.erb
roles/ascalon.rb [deleted file]
roles/backup.rb
roles/clifford.rb
roles/draco.rb
roles/errol.rb
roles/eustace.rb
roles/fafnir.rb [deleted file]
roles/ffrl.rb [new file with mode: 0644]
roles/foundation.rb
roles/gorynych.rb
roles/grindtooth.rb
roles/ironbelly.rb
roles/kalessin.rb [new file with mode: 0644]
roles/noquiklos.rb
roles/norbert.rb [deleted file]
roles/osuosl.rb
roles/ovh.rb [new file with mode: 0644]
roles/pummelzacken.rb
roles/ridley.rb
roles/sarel.rb
roles/scorch.rb [new file with mode: 0644]
roles/stormfly-01.rb
roles/stormfly-02.rb
roles/tiamat-00.rb [moved from roles/idris.rb with 54% similarity]
roles/tiamat-01.rb [new file with mode: 0644]
roles/tiamat-02.rb [new file with mode: 0644]
roles/tiamat-03.rb [new file with mode: 0644]
roles/tiamat-10.rb [new file with mode: 0644]
roles/tiamat-11.rb [new file with mode: 0644]
roles/tiamat-12.rb [new file with mode: 0644]
roles/tiamat-13.rb [new file with mode: 0644]
roles/tiamat-20.rb [new file with mode: 0644]
roles/tiamat-21.rb [new file with mode: 0644]
roles/tiamat-22.rb [new file with mode: 0644]
roles/tiamat-23.rb [new file with mode: 0644]
roles/tile.rb
roles/tilecache.rb
roles/ucl-wates.rb [deleted file]
roles/ucl-wolfson.rb [deleted file]
roles/ucl.rb
roles/urmel.rb
roles/viserion.rb
roles/yevaud.rb
roles/zark.rb

index 1374353007620cd1f320ababb2b77187f00a97cc..f2b48c94eac6d83a7372ad0853d6240470ba8153 100644 (file)
@@ -5,4 +5,4 @@ default[:apt][:sources] = node[:apt][:sources] | ["opscode"]
 default[:chef][:server][:version] = "12.9.1-1"
 
 # Set the default client version
-default[:chef][:client][:version] = "12.14.89-1"
+default[:chef][:client][:version] = "12.17.44"
index c6b5b010228ebb3beeb0a5eadd11a2db1532bf18..c06384be7a87f37930dac12c1e8c384a1c32d05a 100644 (file)
@@ -17,7 +17,8 @@
 # limitations under the License.
 #
 
-chef_package = "chef_#{node[:chef][:client][:version]}_amd64.deb"
+chef_version = node[:chef][:client][:version]
+chef_package = "chef_#{chef_version}-1_amd64.deb"
 
 directory "/var/cache/chef" do
   owner "root"
@@ -35,7 +36,7 @@ Dir.glob("/var/cache/chef/chef_*.deb").each do |deb|
 end
 
 remote_file "/var/cache/chef/#{chef_package}" do
-  source "https://packages.chef.io/stable/ubuntu/12.04/#{chef_package}"
+  source "https://packages.chef.io/files/stable/chef/#{chef_version}/ubuntu/16.04/#{chef_package}"
   owner "root"
   group "root"
   mode 0o644
@@ -45,7 +46,7 @@ end
 
 dpkg_package "chef" do
   source "/var/cache/chef/#{chef_package}"
-  version node[:chef][:client][:version]
+  version "#{chef_version}-1"
 end
 
 directory "/etc/chef" do
index 0317f92865d54b69643a8ec7a6234e28109183c9..6b8ec5b9c027cd23df9b9a602bb2139c2b2b228b 100644 (file)
@@ -17,7 +17,7 @@ class Chef
         if failed? && !exception.is_a?(SystemExit)
           subject = "Chef run failed on #{node.name}"
           message = "#{run_status.formatted_exception}\n"
-        elsif elapsed_time > 300
+        elsif elapsed_time > 600
           subject = "Chef run took #{elapsed_time} on #{node.name}"
           message = ""
         end
index 08c873ee2e66352835c1a59605b01535059f845c..fe92becb5002b6f73a6f296633fd59ef938a7570 100644 (file)
 
 package "clamav-daemon"
 package "clamav-freshclam"
+package "clamav-unofficial-sigs"
+
+template "/etc/clamav-unofficial-sigs.conf.d/50-chef.conf" do
+  source "clamav-unofficial-sigs.conf.erb"
+  owner "root"
+  group "root"
+  mode 0o644
+end
 
 service "clamav-daemon" do
   action [:enable, :start]
diff --git a/cookbooks/clamav/templates/default/clamav-unofficial-sigs.conf.erb b/cookbooks/clamav/templates/default/clamav-unofficial-sigs.conf.erb
new file mode 100644 (file)
index 0000000..f0c37f2
--- /dev/null
@@ -0,0 +1,18 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
+# Add Sanesecurity foxhole databases
+ss_dbs="
+   ${ss_dbs}
+   foxhole_all.cdb
+   foxhole_all.ndb
+   foxhole_filename.cdb
+   foxhole_generic.cdb
+   foxhole_js.cdb
+   foxhole_js.ndb
+"
+
+# Disable SecuriteInfo databases as the domain no longer exists
+si_dbs=""
+
+# Disable MalwarePatrol databases as they fail checksum validation
+mbl_dbs=""
index 37fed426899df9e1e101e20a95b18369a11f1f50..6728745babccff3bf72631048adc57184ed78151 100644 (file)
@@ -164,6 +164,12 @@ host spike-03.oob.openstreetmap.org {
   fixed-address spike-03.oob.openstreetmap.org;
 }
 
+host tiamat-22.oob.openstreetmap.org {
+  hardware ethernet 00:25:90:29:a8:01;
+  server-name "tiamat-22.oob.openstreetmap.org";
+  fixed-address tiamat-22.oob.openstreetmap.org;
+}
+
 host thorn-01.oob.openstreetmap.org {
   hardware ethernet 00:19:bb:35:87:94;
   server-name "thorn-01.oob.openstreetmap.org";
diff --git a/cookbooks/exim/files/default/noreply/forum b/cookbooks/exim/files/default/noreply/forum
new file mode 100644 (file)
index 0000000..c2f80aa
--- /dev/null
@@ -0,0 +1,9 @@
+This is an automated response to your email, which was sent to an
+unattended address.
+
+If you are having technical problems with the forums then please
+contact support@openstreetmap.org for assistance.
+
+Thank you,
+
+OpenStreetMap Administrators
index 5766cd2f18dc738135645ab4551138139b5d989b..f37dad240764f84b97ec9839748cef5bd4f29095 100644 (file)
@@ -503,6 +503,12 @@ acl_check_data:
           message    = This message scored $spam_score SpamAssassin points.
 
 <% end -%>
+  # Deny spammy messages with headers of the form:
+  #   X-PHP-Originating-Script: <digits>:SendMail.class.php
+  #   X-PHP-Originating-Script: <digits>:ExtendedMail.class.php
+  deny    condition  = ${if match {$h_X-PHP-Originating-Script:}{^[0-9]+:(Send|Extended)Mail\\.class\\.php\$}}
+          message    = This message failed local spam checks.
+
   # Accept the message.
 
   accept
index f048278be3040620100b3f5b5f4e10464227e918..3a2bec7657a8afed39ba1a8ac937b0dd89ab6106 100644 (file)
@@ -5,4 +5,6 @@ license           "Apache 2.0"
 description       "Installs and configures foundation services"
 long_description  IO.read(File.join(File.dirname(__FILE__), "README.md"))
 version           "1.0.0"
+depends           "apache"
+depends           "git"
 depends           "mediawiki"
diff --git a/cookbooks/foundation/recipes/owg.rb b/cookbooks/foundation/recipes/owg.rb
new file mode 100644 (file)
index 0000000..75d3320
--- /dev/null
@@ -0,0 +1,62 @@
+#
+# Cookbook Name:: foundation
+# Recipe:: owg
+#
+# Copyright 2016, OpenStreetMap Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include_recipe "apache::ssl"
+include_recipe "git"
+
+package "ruby"
+package "ruby-dev"
+
+gem_package "bundler"
+
+git "/srv/operations.osmfoundation.org" do
+  action :sync
+  repository "git://github.com/openstreetmap/owg-website.git"
+  user "root"
+  group "root"
+  notifies :run, "execute[/srv/operations.osmfoundation.org/Gemfile]"
+end
+
+directory "/srv/operations.osmfoundation.org/_site" do
+  mode 0o755
+  owner "nobody"
+  group "nogroup"
+end
+
+execute "/srv/operations.osmfoundation.org/Gemfile" do
+  action :nothing
+  command "bundle install"
+  cwd "/srv/operations.osmfoundation.org"
+  user "root"
+  group "root"
+  notifies :run, "execute[/srv/operations.osmfoundation.org]"
+end
+
+execute "/srv/operations.osmfoundation.org" do
+  action :nothing
+  command "bundle exec jekyll build --trace --baseurl=https://operations.osmfoundation.org"
+  cwd "/srv/operations.osmfoundation.org"
+  user "nobody"
+  group "nogroup"
+end
+
+apache_site "operations.osmfoundation.org" do
+  template "apache.owg.erb"
+  directory "/srv/operations.osmfoundation.org/_site"
+end
diff --git a/cookbooks/foundation/templates/default/apache.owg.erb b/cookbooks/foundation/templates/default/apache.owg.erb
new file mode 100644 (file)
index 0000000..1cb0fe4
--- /dev/null
@@ -0,0 +1,27 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
+<VirtualHost *:80>
+   ServerName <%= @name %>
+   ServerAdmin webmaster@openstreetmap.org
+
+   CustomLog /var/log/apache2/<%= @name %>-access.log combined
+   ErrorLog /var/log/apache2/<%= @name %>-error.log
+
+   Redirect permanent / https://<%= @name %>/
+</VirtualHost>
+
+<VirtualHost *:443>
+   ServerName <%= @name %>
+   ServerAdmin webmaster@openstreetmap.org
+
+   CustomLog /var/log/apache2/<%= @name %>-access.log combined
+   ErrorLog /var/log/apache2/<%= @name %>-error.log
+
+   DocumentRoot <%= @directory %>
+
+   SSLEngine on
+</VirtualHost>
+
+<Directory <%= @directory %>>
+   Require all granted
+</Directory>
diff --git a/cookbooks/gps-tile/files/default/html/index.html b/cookbooks/gps-tile/files/default/html/index.html
new file mode 100644 (file)
index 0000000..f8482d3
--- /dev/null
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <title>gps.tile.openstreetmap.org</title>
+    <link rel="stylesheet" href="map.css" type="text/css" media="all" />
+    <link rel="stylesheet" href="//unpkg.com/leaflet@1.0.2/dist/leaflet.css" />
+    <script type="text/javascript" src="//unpkg.com/leaflet@1.0.2/dist/leaflet.js"></script>
+    <script src="//code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
+    <script type="text/javascript" src="map.js"></script>
+  </head>
+  <body>
+    <div id="map"></div>
+  </body>
+</html>
diff --git a/cookbooks/gps-tile/files/default/html/map.css b/cookbooks/gps-tile/files/default/html/map.css
new file mode 100644 (file)
index 0000000..0a22de6
--- /dev/null
@@ -0,0 +1,7 @@
+#map {
+  position: absolute;
+  top: 0px;
+  bottom: 0px;
+  left: 0px;
+  right: 0px;
+}
diff --git a/cookbooks/gps-tile/files/default/html/map.js b/cookbooks/gps-tile/files/default/html/map.js
new file mode 100644 (file)
index 0000000..af3b0d9
--- /dev/null
@@ -0,0 +1,13 @@
+$(document).ready(function () {
+  // Create a map
+  var map = L.map("map");
+
+  // Add GPS tile layer
+  L.tileLayer("//gps-{s}.tile.openstreetmap.org/gps-lines/tile/{z}/{x}/{y}.png", {
+    attribution: "© <a target=\"_parent\" href=\"http://www.openstreetmap.org\">OpenStreetMap</a> and contributors, under an <a target=\"_parent\" href=\"http://www.openstreetmap.org/copyright\">open license</a>",
+    maxZoom: 18
+  }).addTo(map);
+
+  // SHow the whole world
+  map.fitWorld();
+});
index 5d1757b46159b429e8088f1c7bead43070f5b7ef..9dd3c0a6a7e18f197dbb83b57f347be5f7f92e76 100644 (file)
@@ -78,7 +78,7 @@ when "TYAN Computer Corporation"
   units << "0"
 when "Supermicro"
   case product
-  when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-2028U-TN24R4T+"
+  when "H8DGU", "X9SCD", "X7DBU", "X7DW3", "X9DR7/E-(J)LN4F", "X9DR3-F", "X9DRW", "SYS-2028U-TN24R4T+", "Super Server"
     units << "1"
   else
     units << "0"
@@ -201,6 +201,13 @@ if node[:lsb][:release].to_f >= 12.10
   end
 end
 
+# Link Layer Discovery Protocol Daemon
+package "lldpd"
+service "lldpd" do
+  action [:start, :enable]
+  supports :status => true, :restart => true, :reload => true
+end
+
 tools_packages = []
 status_packages = {}
 
index ca0b6706e0b2691bc2672b21899d3f58fa09637b..e0eefa24509b1da49a1a9145d4e3cfad3ffbbe0c 100644 (file)
@@ -37,7 +37,9 @@ action :create do
     end
   else
     extension_repository = new_resource.repository || default_repository
-    extension_reference = if new_resource.tag
+    extension_reference = if new_resource.reference
+                            new_resource.reference
+                          elsif new_resource.tag
                             "refs/tags/#{new_resource.tag}"
                           else
                             "REL#{extension_version}".tr(".", "_")
index 2548e5c747ca1352e2b67a5cdb1be790403ed32c..7c5792aa04decf24420ce34acdddf64eb44c76cf 100644 (file)
@@ -292,12 +292,13 @@ action :create do
 
   # MediaWiki Language Extension Bundle
   # FIXME: should automatically resolve tag
-  mw_lang_ext_bundle_tag = "2015.10"
+  mw_lang_ext_bundle_tag = "2016.10"
 
   mediawiki_extension "Babel" do
     site new_resource.name
     template "mw-ext-Babel.inc.php.erb"
-    tag mw_lang_ext_bundle_tag
+    # tag mw_lang_ext_bundle_tag
+    reference "740782459d34e756a932ea1ceddde432a1295197"
     update_site false
   end
 
index b97fb7d330cf9efb83d7188da5fbe9534c2e1520..c567ee5072e187b5e441d69642e46c1fee541573 100644 (file)
@@ -28,6 +28,7 @@ attribute :variables, :kind_of => Hash, :default => {}
 attribute :version, :kind_of => String
 attribute :repository, :kind_of => String
 attribute :tag, :kind_of => String
+attribute :reference, :kind_of => String
 attribute :update_site, :kind_of => [TrueClass, FalseClass], :default => true
 
 def after_created
diff --git a/cookbooks/munin/files/default/rrddump.sh b/cookbooks/munin/files/default/rrddump.sh
new file mode 100644 (file)
index 0000000..0894203
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+RRD_DIR=/var/lib/munin/openstreetmap
+DIR=`mktemp -d`
+DUMP_DIR=/srv/munin.openstreetmap.org/dumps
+TARGET_TGZ=`date "+munin-data-%Y-%m-%d.tar.gz"`
+KEEP_OLD_COUNT=3
+
+function cleanup {
+  rm -rf "$DIR"
+}
+
+trap cleanup EXIT
+
+set -e
+
+cd "$RRD_DIR"
+for f in *.rrd; do
+  rrdtool dump "$f" "$DIR/${f}.xml"
+  touch -r "$f" "$DIR/${f}.xml"
+done
+
+cd "$DIR"
+find -name "*.xml" -print0 | tar zcf "dump.tar.gz" --null -T -
+
+# if we got here, then the file was created okay so we're okay to delete any
+# old files.
+find "${DUMP_DIR}" -name "munin-data-*.tar.gz" -print0 | \
+    sort -z -r | \
+    tail -z -n "+${KEEP_OLD_COUNT}" | \
+    xargs --null rm -f
+
+mv dump.tar.gz "${DUMP_DIR}/${TARGET_TGZ}"
index 1b4ae6d75d857346292d4eb89a4170cba741e7d1..39085f0e2f8efc32a400440a05457fad4662ef7f 100644 (file)
@@ -162,7 +162,9 @@ end
 
 node[:network][:interfaces].each do |ifname, ifattr|
   if ifattr[:encapsulation] == "Ethernet" && ifattr[:state] == "up"
-    if node[:hardware] && node[:hardware][:network][ifname][:device] =~ /^virtio/
+    if node[:hardware] &&
+       node[:hardware][:network] &&
+       node[:hardware][:network][ifname][:device] =~ /^virtio/
       munin_plugin_conf "if_#{ifname}" do
         template "if.erb"
         variables :ifname => ifname
index dcff8686032dcd6738ff05c382d4f61e4c943405..d4f8cb04703645c4f2502c684a0ecb10febee76d 100644 (file)
@@ -49,13 +49,13 @@ clients = search(:node, "recipes:munin\\:\\:default").sort_by { |n| n[:hostname]
 frontends = search(:node, "recipes:web\\:\\:frontend").reject { |n| Time.now - Time.at(n[:ohai_time]) > expiry_time }.map { |n| n[:hostname] }.sort # ~FC010
 backends = search(:node, "recipes:web\\:\\:backend").reject { |n| Time.now - Time.at(n[:ohai_time]) > expiry_time }.map { |n| n[:hostname] }.sort # ~FC010
 tilecaches = search(:node, "roles:tilecache").reject { |n| Time.now - Time.at(n[:ohai_time]) > expiry_time }.sort_by { |n| n[:hostname] }.map do |n|
-  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface] }
+  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface].tr(".", "_") }
 end
 renderers = search(:node, "roles:tile").reject { |n| Time.now - Time.at(n[:ohai_time]) > expiry_time }.sort_by { |n| n[:hostname] }.map do |n|
-  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface] }
+  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface].tr(".", "_") }
 end
 geocoders = search(:node, "roles:nominatim").reject { |n| Time.now - Time.at(n[:ohai_time]) > expiry_time }.sort_by { |n| n[:hostname] }.map do |n|
-  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface] }
+  { :name => n[:hostname], :interface => n.interfaces(:role => :external).first[:interface].tr(".", "_") }
 end
 
 template "/etc/munin/munin.conf" do
@@ -81,7 +81,13 @@ remote_directory "/srv/munin.openstreetmap.org" do
   files_owner "root"
   files_group "root"
   files_mode 0o644
-  purge true
+end
+
+# directory to put dumped files in
+directory "/srv/munin.openstreetmap.org/dumps" do
+  owner "www-data"
+  group "www-data"
+  mode 0o755
 end
 
 apache_site "munin.openstreetmap.org" do
@@ -95,6 +101,21 @@ template "/etc/cron.daily/munin-backup" do
   mode 0o755
 end
 
+# simple shell script to dump RRD data to a file
+cookbook_file "/usr/local/bin/rrddump" do
+  source "rrddump.sh"
+  owner "root"
+  group "root"
+  mode 0o755
+end
+
+template "/etc/cron.d/rrddump" do
+  source "rrddump.cron.erb"
+  owner "root"
+  group "root"
+  mode 0o755
+end
+
 munin_plugin "munin_stats"
 munin_plugin "munin_update"
 munin_plugin "munin_rrdcached"
index 15c5009e66c1739776769b294363c4989531f7a9..e59c33fb0943bd7387eabb168fd2a966c6fe3109 100644 (file)
@@ -20,6 +20,7 @@
 
        RewriteEngine on
        RewriteCond %{REQUEST_URI} !^/static/
+       RewriteCond %{REQUEST_URI} !^/dumps/
        RewriteRule ^(/.*\.html)?$ /munin-cgi/munin-cgi-html/$1 [PT]
 </VirtualHost>
 
        Require all granted
 </Directory>
 
+<Directory /srv/munin.openstreetmap.org/dumps>
+       Options +Indexes
+</Directory>
+
 <Directory /etc/munin/static>
        Require all granted
 </Directory>
diff --git a/cookbooks/munin/templates/default/rrddump.cron.erb b/cookbooks/munin/templates/default/rrddump.cron.erb
new file mode 100644 (file)
index 0000000..33087c3
--- /dev/null
@@ -0,0 +1,3 @@
+MAILTO=zerebubuth@gmail.com
+# do the dump & cleanup in the early hours of the morning
+43 3 * * * www-data nice /usr/local/bin/rrddump
index 4d1f277e5ec80491819761e125b1cb296bb9b97a..2344c1f9d0e3c372082add2dccda507532d7d087 100644 (file)
@@ -14,31 +14,34 @@ auto <%= interface[:bond][:slaves].sort.uniq.join(" ") %>
 <% end -%>
 
 iface <%= interface[:interface] %> <%= interface[:family] %> static
-      address   <%= interface[:address] %>
+<% if interface[:interface] =~ /\.\d+$/ -%>
+      vlan-raw-device <%= interface[:interface].split(".").first %>
+<% end -%>
+      address <%= interface[:address] %>
 <% if interface[:family] == "inet" -%>
-      netmask   <%= interface[:netmask] %>
+      netmask <%= interface[:netmask] %>
 <% elsif interface[:family] == "inet6" -%>
-      netmask   <%= interface[:prefix] %>
+      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] %>
+      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] %>
+      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] %>
+      mtu <%= interface[:mtu] %>
 <% end -%>
 <% if interface[:family] == "inet6" -%>
-      autoconf  0
+      autoconf 0
 <% end -%>
 <% if interface[:bond] -%>
       bond-mode <%= interface[:bond][:mode] || "active-backup" %>
index 345ebd8605414c5a7a87a6f4a0b78fd3e86e4609..d1875b5994c898b8b0a439b5ecff61b26decb28e 100644 (file)
@@ -31,3 +31,5 @@ dh:osm                <%= @type %>
 aws:osm                <%= @type %>
 ds:osm         <%= @type %>
 uz:osm          <%= @type %>
+ovh:osm         <%= @type %>
+ffr:osm         <%= @type %>
index 0dbc7a730639a6fee7882265a3bf458d9d7f7aae..0c97546bde42f62777e8f7f2f3f6847fcf0924fd 100644 (file)
@@ -43,7 +43,7 @@ directory "/var/cache/nginx/proxy-cache" do
 end
 
 service "nginx" do
-  action [:enable, :start]
+  action [:enable] # Do not start the service as config may be broken from failed chef run
   supports :status => true, :restart => true, :reload => true
   subscribes :restart, "template[/etc/nginx/nginx.conf]"
 end
index 903afd51c9781f2bf4ff7355df657a317be030e4..a895af303c46e8b930625ada40ddee164e267b4b 100644 (file)
@@ -1,7 +1,8 @@
 # DO NOT EDIT - This file is being maintained by Chef
 
 user  www-data;
-worker_processes <%= node['cpu']['total'] %>;
+worker_processes auto;
+worker_cpu_affinity auto;
 worker_rlimit_nofile 65536;
 
 error_log  /var/log/nginx/error.log warn;
index cb08d5af99bf99c2ffd174da9cf66db329572c4a..513501c167ea7754e8ab5a7914e876c2ae0a212c 100644 (file)
@@ -1,4 +1,4 @@
-default[:piwik][:version] = "2.17.1"
+default[:piwik][:version] = "3.0.1"
 default[:piwik][:plugins] = %w(
   Actions API BulkTracking Contents CoreAdminHome CoreConsole CoreHome
   CorePluginsAdmin CoreUpdater CoreVisualizations CustomVariables
index dd4a7a603590385e42e0c35edbeff68321d29482..62f9a8858f847226a9fc45fbedc25ee04294abd5 100644 (file)
@@ -24,6 +24,7 @@ include_recipe "postgresql"
 include_recipe "tools"
 
 blocks = data_bag_item("tile", "blocks")
+web_passwords = data_bag_item("web", "passwords")
 
 apache_module "alias"
 apache_module "cgi"
@@ -116,6 +117,9 @@ end
 
 package "python-cairo"
 package "python-mapnik"
+package "python-setuptools"
+
+easy_install_package "pyotp"
 
 package "fonts-noto-cjk"
 package "fonts-noto-hinted"
@@ -133,7 +137,7 @@ template "/srv/tile.openstreetmap.org/cgi-bin/export" do
   owner "tile"
   group "tile"
   mode 0o755
-  variables :blocks => blocks
+  variables :blocks => blocks, :totp_key => web_passwords["totp_key"]
 end
 
 template "/srv/tile.openstreetmap.org/cgi-bin/debug" do
@@ -315,7 +319,7 @@ node[:tile][:styles].each do |name, details|
 
   execute "#{style_directory}/project.mml" do
     action :nothing
-    command "carto project.mml > project.xml"
+    command "carto -a 3.0.0 project.mml > project.xml"
     cwd style_directory
     user "tile"
     group "tile"
@@ -325,7 +329,10 @@ node[:tile][:styles].each do |name, details|
   end
 end
 
+postgresql_version = node[:tile][:database][:cluster].split("/").first
+
 package "postgis"
+package "postgresql-#{postgresql_version}-postgis-2.3"
 
 postgresql_user "jburgess" do
   cluster node[:tile][:database][:cluster]
index 4fcbf9b478a16d66b08a8d4710d823fd7c7c385b..c41c923bf225a3eac464f426dc81c2f773df8212 100644 (file)
@@ -22,7 +22,8 @@
 <% end -%>
 
   # Setup logging
-  CustomLog /var/log/apache2/access.log combined
+  LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_with_remoteip
+  CustomLog /var/log/apache2/access.log combined_with_remoteip
   ErrorLog /var/log/apache2/error.log
   BufferedLogs on
 
index dfd076252167166384bc5c1397ba3b08200b18c3..7d1b8c5bf61b0a39741c17464cd3548fa43f136d 100644 (file)
@@ -3,13 +3,15 @@
 
 import cairo
 import cgi
+import Cookie
 import mapnik
 import os
+import pyotp
+import resource
 import shutil
+import signal
 import sys
 import tempfile
-import resource
-import signal
 
 # Limit maximum CPU time
 # The Postscript output format can sometimes take hours
@@ -51,19 +53,38 @@ def output_error(message, status = "400 Bad Request"):
   print "</body>"
   print "</html>"
 
+# Create TOTP token validator
+totp = pyotp.TOTP('<%= @totp_key %>', interval = 3600)
+
 # Parse CGI parameters
 form = cgi.FieldStorage()
 
+# Import cookies
+cookies = Cookie.SimpleCookie(os.environ.get('HTTP_COOKIE'))
+
 # Make sure we have a user agent
 if not os.environ.has_key('HTTP_USER_AGENT'):
   os.environ['HTTP_USER_AGENT'] = 'NONE'
 
+# Make sure we have a referer
+if not os.environ.has_key('HTTP_REFERER'):
+  os.environ['HTTP_REFERER'] = 'NONE'
+
+# Look for TOTP token
+if cookies.has_key('_osm_totp_token'):
+  token = cookies['_osm_totp_token'].value
+else:
+  token = None
+
 # Get the load average
 cputimes = [float(n) for n in open("/proc/stat").readline().rstrip().split()[1:-1]]
 idletime = cputimes[3] / sum(cputimes)
 
 # Process the request
-if idletime < 0.2:
+if not totp.verify(token, valid_window = 1):
+  # Abort if the request didn't have a valid TOTP token
+  output_error("Missing or invalid token")
+elif idletime < 0.2:
   # Abort if the CPU idle time on the machine is too low
   output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
 <% @blocks["user_agents"].each do |user_agent| -%>
@@ -71,6 +92,11 @@ elif os.environ['HTTP_USER_AGENT'] == '<%= user_agent %>':
   # Block scraper
   output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
 <% end -%>
+<% @blocks["referers"].each do |referer| -%>
+elif os.environ['HTTP_REFERER'] == '<%= referer %>':
+  # Block scraper
+  output_error("The server is too busy at the moment. Please wait a few minutes before trying again.", "503 Service Unavailable")
+<% end -%>
 elif not form.has_key("bbox"):
   # No bounding box specified
   output_error("No bounding box specified")
index b97ce12c80d917f4310669967945678d1ded2655..df4e76f43511f44f06d4f949ebc1401b78fbe099 100644 (file)
@@ -33,9 +33,14 @@ end
 package "xz-utils"
 package "openssl"
 
+# oathtool for QoS token
+package "oathtool"
+
 tilecaches = search(:node, "roles:tilecache").sort_by { |n| n[:hostname] }
 tilerenders = search(:node, "roles:tile").sort_by { |n| n[:hostname] }
 
+web_passwords = data_bag_item("web", "passwords")
+
 tilecaches.each do |cache|
   cache.ipaddresses(:family => :inet, :role => :external).sort.each do |address|
     firewall_rule "accept-squid" do
@@ -88,6 +93,27 @@ resolvers = node[:networking][:nameservers].map do |resolver|
   IPAddr.new(resolver).ipv6? ? "[#{resolver}]" : resolver
 end
 
+template "/usr/local/bin/nginx_generate_tilecache_qos_map" do
+  source "nginx_generate_tilecache_qos_map.erb"
+  owner "root"
+  group "root"
+  mode 0o750
+  variables :totp_key => web_passwords["totp_key"]
+end
+
+template "/etc/cron.d/tilecache" do
+  source "cron.erb"
+  owner "root"
+  group "root"
+  mode 0o644
+end
+
+execute "execute_nginx_generate_tilecache_qos_map" do
+  command "/usr/local/bin/nginx_generate_tilecache_qos_map"
+  creates "/etc/nginx/conf.d/tile_qos_rates.map"
+  action :run
+end
+
 nginx_site "tile-ssl" do
   template "nginx_tile_ssl.conf.erb"
   variables :certificate => certificate, :resolvers => resolvers, :caches => tilecaches
diff --git a/cookbooks/tilecache/templates/default/cron.erb b/cookbooks/tilecache/templates/default/cron.erb
new file mode 100644 (file)
index 0000000..32fb067
--- /dev/null
@@ -0,0 +1,3 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
+0 * * * * root /usr/local/bin/nginx_generate_tilecache_qos_map
diff --git a/cookbooks/tilecache/templates/default/nginx_generate_tilecache_qos_map.erb b/cookbooks/tilecache/templates/default/nginx_generate_tilecache_qos_map.erb
new file mode 100755 (executable)
index 0000000..9c68160
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+# DO NOT EDIT - This file is being maintained by Chef
+set -e
+
+NUM_TOKENS=4 # current + 4
+VALID_TOKEN=3600 # in seconds
+
+SECONDS_AGO=$((${NUM_TOKENS} * ${VALID_TOKEN}))
+OLD_TIME=$(/bin/date -u "+%Y-%m-%dT %H:%M:%S %z" -d "${SECONDS_AGO} seconds ago")
+QOS_TOKENS=($(/usr/bin/oathtool --totp --now="${OLD_TIME}" --window=${NUM_TOKENS} --time-step-size=${VALID_TOKEN}s -b "<%= @totp_key %>"))
+
+# ${qos_tokens[4]/[-1] } = OSM.org exclusive / current
+# ${qos_tokens[3]/[-2] } = OSM.org exclusive / stale
+# ${qos_tokens[2]/[-3] } = tile.openstreetmap.org default
+# ${qos_tokens[1]/[-4] } = stale ~ 1 hour
+# ${qos_tokens[0]} = expired
+
+# Test if number of tokens returned by oathtool is expected number
+if [ "${#QOS_TOKENS[@]}" -ne "$((${NUM_TOKENS}+1))" ]; then
+  >&2 echo "ERROR: Unexpected number of tokens"
+  exit 1
+fi
+
+QOS_TOKEN_OSM=${QOS_TOKENS[-1]} # Cookie set by openstreetmap.org
+QOS_TOKEN_OSM_STALE=${QOS_TOKENS[-2]} # Cookie set by openstreetmap.org stale
+QOS_TOKEN_DEFAULT=${QOS_TOKENS[-3]} # Cookie presented by tile.openstreetmap.org to browsers
+QOS_TOKEN_STALE=${QOS_TOKENS[-4]} # Cookie which has become stale and will be replaced
+
+if [ -z "$QOS_TOKEN_OSM" -o -z "$QOS_TOKEN_DEFAULT" -o -z "$QOS_TOKEN_STALE" ]; then
+  >&2 echo "ERROR: Unexpected blank token"
+  exit 2
+fi
+
+cat <<EOF >/etc/nginx/conf.d/tile_qos_rates.map
+default 24576; # Default Rate (No QoS cookie)
+"${QOS_TOKEN_STALE}" 24576; # Stale
+"${QOS_TOKEN_DEFAULT}" 24576; # Default
+"${QOS_TOKEN_OSM_STALE}" 32768; # Exclusive Stale
+"${QOS_TOKEN_OSM}" 32768; # Exclusive
+EOF
+
+cat <<EOF >/etc/nginx/conf.d/tile_qos_cookies.map
+default 'qos_token=${QOS_TOKEN_DEFAULT}; Max-Age=${VALID_TOKEN}; Domain=openstreetmap.org; Path=/'; # Cookie Domain per RFC6265
+"${QOS_TOKEN_DEFAULT}" ''; # Do not Set-Cookie. # Default
+"${QOS_TOKEN_OSM_STALE}" ''; # Do not Set-Cookie. # Exclusive Stale
+"${QOS_TOKEN_OSM}" ''; # Do not Set-Cookie. # Exclusive
+EOF
+
+# Check config, reload config and fail safe
+/etc/init.d/nginx configtest 2>/dev/null && /bin/systemctl try-reload-or-restart nginx
index 0ec51a10ef078827c6a1292be3a7b8d6d6e59c00..60d7d451fc5aecd4044ed88843622ff6d3944772 100644 (file)
@@ -1,3 +1,5 @@
+# DO NOT EDIT - This file is being maintained by Chef
+
 upstream tile_cache_backend {
     server 127.0.0.1;
     <% @caches.each do |cache| -%>
@@ -12,8 +14,38 @@ upstream tile_cache_backend {
     keepalive 32;
 }
 
+# Rates table based on current cookie value
+map $cookie_qos_token $limit_rate_qos {
+  include /etc/nginx/conf.d/tile_qos_rates.map;
+}
+
+# Set-Cookie table based on current cookie value
+map $cookie_qos_token $cookie_qos_token_set {
+  include /etc/nginx/conf.d/tile_qos_cookies.map;
+}
+
+map $http_user_agent $approved_scraper {
+  default '';                       # Not approved
+  '~^JOSM\/' 'JOSM';
+  '~^Mozilla\/5\.0\ QGIS\/' 'QGIS';
+}
+
+# Limit Cache-Control header to only approved User-Agents
+map $http_user_agent $limit_http_cache_control {
+  default '';                              # Unset Header
+  '~^Mozilla\/5\.0\ QGIS\/' '';            # Unset Header
+  '~^Mozilla\/5\.0\ ' $http_cache_control; # Pass Header
+}
+
+# Limit Pragma header to only approved User-Agents
+map $http_user_agent $limit_http_pragma {
+  default '';                       # Unset Header
+  '~^Mozilla\/5\.0\ QGIS\/' '';     # Unset Header
+  '~^Mozilla\/5\.0\ ' $http_pragma; # Pass Header
+}
+
 server {
-    listen       443 ssl http2 default_server;
+    listen       443 ssl fastopen=2048 http2 default_server;
     server_name  localhost;
 
     proxy_buffers 8 64k;
@@ -29,14 +61,41 @@ server {
     ssl_stapling on;
     ssl_dhparam /etc/ssl/certs/dhparam.pem;
     resolver <%= @resolvers.join(" ") %>;
+    resolver_timeout 5s;
 
     location / {
       proxy_pass http://tile_cache_backend;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_http_version 1.1;
-      proxy_set_header Connection "";
+      proxy_set_header Connection '';
+
+      proxy_connect_timeout 5s;
+
+      # Do not pass cookies to backends.
+      proxy_set_header Cookie '';
+      # Do not pass Accept-Encoding to backends.
+      proxy_set_header Accept-Encoding '';
+
+      # Do not allow setting cookies from backends due to caching.
+      proxy_ignore_headers Set-Cookie;
+      proxy_hide_header Set-Cookie;
+
+      # Set a QoS cookie if none presented (uses nginx Map)
+      add_header Set-Cookie $cookie_qos_token_set;
+
+      # QoS Traffic Rate see $limit_rate on http://nginx.org/en/docs/http/ngx_http_core_module.html
+      set $limit_rate $limit_rate_qos;
+
+      # Allow Higher Traffic Rate from Approved User-Agents which do not support cookies (uses nginx Map)
+      if ($approved_scraper) {
+        set $limit_rate 32768;
+      }
+
+      # Strip any ?query parameters from urls
+      set $args '';
 
-      # Slow traffic slightly
-      limit_rate 24576;
+      # Allow cache purging headers only from select User-Agents (uses nginx Map)
+      proxy_set_header Cache-Control $limit_http_cache_control;
+      proxy_set_header Pragma $limit_http_pragma;
     }
 }
index 9b41d81d0c5a0d06a4b318689f049175fdddf542..b6ca8e4197373e5c8cb5c6f3548fb3ac37c8f4c0 100644 (file)
@@ -5,6 +5,7 @@ acl osmtileScrapers browser ^$
 acl osmtileScrapers browser ^MOBAC
 acl osmtileScrapers browser ^JTileDownloader
 acl osmtileScrapers browser ^Apache\-HttpClient
+acl osmtileScrapers browser ^Go-http-client\/
 acl osmtileScrapers browser ^Opera\/10\.00
 acl osmtileScrapers browser ^shipxy01
 #acl osmtileScrapers browser ^OsmAnd #Victor + Email. Whitelist for 1 week
@@ -38,7 +39,7 @@ acl osmtileScrapers browser Firefox\/10\.0
 acl osmtileScrapers browser Firefox\/11\.0
 acl osmtileScrapers browser Firefox\/12\.0
 acl osmtileScrapers browser Firefox\/13\.0
-
+    
 acl is_fake_browser browser Firefox\/3\.0
 acl is_fake_browser browser Firefox\/4\.0
 acl is_fake_browser browser Firefox\/5\.0
index 6773cf9741e76d5f984b98fc51b3d5fb13e703ab..bbc3d60d92073235a967d078ef0495ff6d2ee6e5 100644 (file)
@@ -187,6 +187,11 @@ define :rails_port, :action => [:create, :enable] do
       line.gsub!(/^( *)#github_auth_secret:.*$/, "\\1github_auth_secret: \"#{params[:github_auth_secret]}\"")
     end
 
+    if params[:wikipedia_auth_id]
+      line.gsub!(/^( *)#wikipedia_auth_id:.*$/, "\\1wikipedia_auth_id: \"#{params[:wikipedia_auth_id]}\"")
+      line.gsub!(/^( *)#wikipedia_auth_secret:.*$/, "\\1wikipedia_auth_secret: \"#{params[:wikipedia_auth_secret]}\"")
+    end
+
     if params[:mapquest_key]
       line.gsub!(/^( *)#mapquest_key:.*$/, "\\1mapquest_key: \"#{params[:mapquest_key]}\"")
     end
@@ -199,6 +204,10 @@ define :rails_port, :action => [:create, :enable] do
       line.gsub!(/^( *)#thunderforest_key:.*$/, "\\1thunderforest_key: \"#{params[:thunderforest_key]}\"")
     end
 
+    if params[:totp_key]
+      line.gsub!(/^( *)#totp_key:.*$/, "\\1totp_key: \"#{params[:totp_key]}\"")
+    end
+
     line.gsub!(/^( *)require_terms_seen:.*$/, "\\1require_terms_seen: true")
     line.gsub!(/^( *)require_terms_agreed:.*$/, "\\1require_terms_agreed: true")
 
@@ -269,20 +278,21 @@ define :rails_port, :action => [:create, :enable] do
     cwd "#{rails_directory}/lib/quad_tile"
     user rails_user
     group rails_group
-    not_if { File.exist?("#{rails_directory}/lib/quad_tile/Makefile") && File.mtime("#{rails_directory}/lib/quad_tile/Makefile") >= File.mtime("#{rails_directory}/lib/quad_tile/extconf.rb") }
+    not_if do
+      File.exist?("#{rails_directory}/lib/quad_tile/quad_tile_so.so") &&
+        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/extconf.rb") &&
+        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.c") &&
+        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.h")
+    end
+    notifies :run, "execute[#{rails_directory}/lib/quad_tile/Makefile]"
   end
 
   execute "#{rails_directory}/lib/quad_tile/Makefile" do
+    action :nothing
     command "make"
     cwd "#{rails_directory}/lib/quad_tile"
     user rails_user
     group rails_group
-    not_if do
-      File.exist?("#{rails_directory}/lib/quad_tile/quad_tile_so.so") &&
-        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/Makefile") &&
-        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.c") &&
-        File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.h")
-    end
     notifies :run, "execute[#{rails_directory}]"
   end
 
index 7945d3d0394245e960990182696c8a9fe8aa7779..90efbb421839fa8ffd30d605c5824396e5f7e4ce 100644 (file)
@@ -76,8 +76,11 @@ rails_port "www.openstreetmap.org" do
   windowslive_auth_secret web_passwords["windowslive_auth_secret"]
   github_auth_id "acf7da34edee99e35499"
   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"]
 end
 
 package "libjson-xs-perl"
index 526ec8dd7dac388e34c547671ddc0e11472826ae..ceaf4874b32fc0ca2e38c648f5e4ef4acf03b226 100644 (file)
@@ -6,7 +6,7 @@
   # Basic server configuration
   #
   ServerName <%= node[:fqdn] %>
-  ServerAlias api.openstreetmap.org www.openstreetmap.org
+  ServerAlias api.openstreetmap.org www.openstreetmap.org 127.0.0.1
   ServerAdmin webmaster@openstreetmap.org
 <% if port == 443 -%>
 
 </VirtualHost>
 
 <% end -%>
+<VirtualHost *:80>
+  ServerName openstreetmap.org.uk
+  ServerAlias www.openstreetmap.org.uk
+  ServerAlias openstreetmap.co.uk
+  ServerAlias www.openstreetmap.co.uk
+
+  RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
+  RedirectPermanent / http://www.openstreetmap.org/
+</VirtualHost>
+
 <VirtualHost *:80>
   ServerName openstreetmap.org
-  ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
-  ServerAlias openstreetmap.com www.openstreetmap.com
-  ServerAlias maps.openstreetmap.com mapz.openstreetmap.com
-  ServerAlias openstreetmap.net www.openstreetmap.net
-  ServerAlias maps.openstreetmap.net mapz.openstreetmap.net
-  ServerAlias openstreetmap.ca www.openstreetmap.ca
-  ServerAlias maps.openstreetmap.ca mapz.openstreetmap.ca
-  ServerAlias openstreetmap.eu www.openstreetmap.eu
-  ServerAlias maps.openstreetmap.eu mapz.openstreetmap.eu
-  ServerAlias openstreetmap.pro www.openstreetmap.pro
-  ServerAlias maps.openstreetmap.pro mapz.openstreetmap.pro
-  ServerAlias openstreetmaps.org www.openstreetmaps.org
-  ServerAlias maps.openstreetmaps.org mapz.openstreetmaps.org
-  ServerAlias osm.org www.osm.org
-  ServerAlias maps.osm.org mapz.osm.org
-  ServerAlias openmaps.org www.openmaps.org
-  ServerAlias maps.openmaps.org mapz.openmaps.org
-  ServerAlias openstreetmap.io www.openstreetmap.io
-  ServerAlias maps.openstreetmap.io mapz.openstreetmap.io
-  ServerAlias osm.io www.osm.io
-  ServerAlias maps.osm.io mapz.osm.io
-  ServerAlias openworldmap.org www.openworldmap.org
-  ServerAlias maps.openworldmap.org mapz.openworldmap.org
-  ServerAlias freeosm.org www.freeosm.org
-  ServerAlias maps.freeosm.org mapz.freeosm.org
-  ServerAlias open-maps.org www.open-maps.org
-  ServerAlias maps.open-maps.org mapz.open-maps.org
-  ServerAlias open-maps.com www.open-maps.com
-  ServerAlias maps.open-maps.com mapz.open-maps.com
-  ServerAlias osmbugs.org www.osmbugs.org
-  ServerAlias maps.osmbugs.org mapz.osmbugs.org
-
-  #Third Party Sites
-  ServerAlias openstreetmap.pm www.openstreetmap.pm
+  ServerAlias *
 
   RedirectPermanent / http://www.openstreetmap.org/
 </VirtualHost>
 
 <VirtualHost *:443>
   ServerName openstreetmap.org
-  ServerAlias maps.openstreetmap.org mapz.openstreetmap.org
+  ServerAlias *
 
   SSLEngine on
 
   RedirectPermanent / https://www.openstreetmap.org/
 </VirtualHost>
 
-<VirtualHost *:80>
-  ServerName openstreetmap.org.uk
-  ServerAlias www.openstreetmap.org.uk
-  ServerAlias openstreetmap.co.uk
-  ServerAlias www.openstreetmap.co.uk
-
-  RedirectPermanent /events.ics http://calendar.openstreetmap.org.uk/events.ics
-  RedirectPermanent / http://www.openstreetmap.org/
-</VirtualHost>
-
 <Directory <%= node[:web][:base_directory] %>/rails/public>
   Require all granted
 </Directory>
diff --git a/roles/ascalon.rb b/roles/ascalon.rb
deleted file mode 100644 (file)
index cffccad..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-name "ascalon"
-description "Master role applied to ascalon"
-
-default_attributes(
-  :networking => {
-    :interfaces => {
-      :internal_ipv4 => {
-        :interface => "eth0",
-        :role => :internal,
-        :family => :inet,
-        :address => "10.0.0.18"
-      },
-      :external_ipv4 => {
-        :interface => "eth1",
-        :role => :external,
-        :family => :inet,
-        :address => "128.40.45.193"
-      }
-    }
-  },
-  :accounts => {
-    :users => {
-      :emacsen => { :status => :administrator }
-    }
-  }
-)
-
-run_list(
-  "role[ucl-wolfson]",
-  "role[hp-g5]",
-  "role[roundup]"
-)
index 1a9f1911bbd8b5ad4aa1246b7aa8d6f502b841b7..5b58145d0c2ed5eb03bf20b6ac8aefbb2723acb0 100644 (file)
@@ -19,8 +19,7 @@ default_attributes(
         :gid => "osmbackup",
         :transfer_logging => false,
         :hosts_allow => [
-          "128.40.168.0/24",                     # ucl external (wates)
-          "128.40.45.192/27",                    # ucl external (wolfson)
+          "193.60.236.0/24",                     # ucl external
           "146.179.159.160/27",                  # ic internal
           "193.63.75.96/27",                     # ic external
           "2001:630:12:500::/64",                # ic external
index 700cb6253e6525302d489beebc2c090e632555f2..2471257396b027f3aafb55242c810179ae47d056 100644 (file)
@@ -2,26 +2,35 @@ name "clifford"
 description "Master role applied to clifford"
 
 default_attributes(
+  :exim => {
+    :rewrites => [
+      {
+        :pattern => "www-data@openstreetmap.org",
+        :replacement => "forum@noreply.openstreetmap.org",
+        :flags => "F"
+      }
+    ]
+  },
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "enp2s0f0",
+        :interface => "enp2s0f0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.17"
       },
       :external_ipv4 => {
-        :interface => "enp2s0f1",
+        :interface => "enp2s0f0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.194"
+        :address => "193.60.236.11"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[forum]"
 )
index 9bbaddd5c5f919b6518a73e84a8f4576b8ec9ba2..dc28adf567738305f74190306875332347eb7c7c 100644 (file)
@@ -5,16 +5,16 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.11"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.195"
+        :address => "193.60.236.12"
       }
     }
   },
@@ -30,6 +30,6 @@ default_attributes(
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-g5]"
 )
index 69b0d8db479d49642c4a87d764a88de7885b34ed..e4db08b80ebef30e6fc62935f230639e9e9974ca 100644 (file)
@@ -27,23 +27,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.14"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.196"
+        :address => "193.60.236.13"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[tyan-s7010]",
   "role[dev]"
 )
index 0002388c35f7ee08a4ba980958250ab047b66401..4aa2fdd31e80d0399775fc98663a51ac805a869d 100644 (file)
@@ -5,23 +5,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.9"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.197"
+        :address => "193.60.236.14"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[piwik]"
 )
diff --git a/roles/fafnir.rb b/roles/fafnir.rb
deleted file mode 100644 (file)
index 099fc38..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-name "fafnir"
-description "Master role applied to fafnir"
-
-default_attributes(
-  :db => {
-    :cluster => "9.1/main"
-  },
-  :networking => {
-    :interfaces => {
-      :internal_ipv4 => {
-        :interface => "eth0",
-        :role => :internal,
-        :family => :inet,
-        :address => "172.31.10.210",
-        :hwaddress => "02:c1:c5:8b:5f:1d"
-      },
-      :external_ipv4 => {
-        :role => :external,
-        :family => :inet,
-        :address => "52.50.86.69"
-      }
-    }
-  },
-  :openvpn => {
-    :address => "10.0.16.4",
-    :tunnels => {
-      :aws2ic => {
-        :port => "1194",
-        :mode => "client",
-        :peer => {
-          :host => "ironbelly.openstreetmap.org",
-          :port => "1195"
-        }
-      },
-      :aws2bm => {
-        :port => "1195",
-        :mode => "client",
-        :peer => {
-          :host => "grisu.openstreetmap.org",
-          :port => "1195"
-        }
-      }
-    }
-  },
-  :postgresql => {
-    :settings => {
-      :defaults => {
-        :shared_buffers => "64GB",
-        :work_mem => "64MB",
-        :maintenance_work_mem => "1GB",
-        :effective_cache_size => "180GB"
-      }
-    }
-  },
-  :sysctl => {
-    :postgres => {
-      :comment => "Increase shared memory for postgres",
-      :parameters => {
-        "kernel.shmmax" => 66 * 1024 * 1024 * 1024,
-        "kernel.shmall" => 66 * 1024 * 1024 * 1024 / 4096
-      }
-    }
-  }
-)
-
-run_list(
-  "role[aws]",
-  "role[db-slave]",
-  "recipe[openvpn]"
-)
diff --git a/roles/ffrl.rb b/roles/ffrl.rb
new file mode 100644 (file)
index 0000000..7858e1b
--- /dev/null
@@ -0,0 +1,28 @@
+name "ffrl"
+description "Role applied to all servers at Freifunk Rheinland"
+
+default_attributes(
+  :hosted_by => "Freifunk Rheinland",
+  :location => "Berlin, Germany",
+  :networking => {
+    :nameservers => [
+      "8.8.8.8",
+      "8.8.4.4"
+    ],
+    :roles => {
+      :external => {
+        :zone => "ffr"
+      }
+    }
+  }
+)
+
+override_attributes(
+  :ntp => {
+    :servers => ["0.de.pool.ntp.org", "1.de.pool.ntp.org", "europe.pool.ntp.org"]
+  }
+)
+
+run_list(
+  "role[de]"
+)
index 4926edeb2e59fbdd990c471fc92f9f5a6613ba30..338d1ab4cbd5174992fdab88c55701e617929481 100644 (file)
@@ -8,7 +8,7 @@ default_attributes(
     :keepalive => false
   },
   :apt => {
-    :sources => ["passenger"]
+    :sources => ["passenger", "brightbox-ruby-ng"]
   },
   :elasticsearch => {
     :cluster => {
@@ -30,5 +30,6 @@ run_list(
   "role[elasticsearch]",
   "recipe[foundation::wiki]",
   "recipe[foundation::board]",
-  "recipe[foundation::dwg]"
+  "recipe[foundation::dwg]",
+  "recipe[foundation::owg]"
 )
index 597951828a83e55dff72bcecbdd54c4f8a1f4afe..1d2343350abac05cef47ee3b48b13a1a3ab988cd 100644 (file)
@@ -18,9 +18,9 @@ default_attributes(
         :interface => "eth1",
         :role => :external,
         :family => :inet,
-        :address => "130.193.62.73",
-        :prefix => "29",
-        :gateway => "130.193.62.78"
+        :address => "5.45.248.21",
+        :prefix => "30",
+        :gateway => "5.45.248.22"
       },
       :external_ipv6 => {
         :interface => "eth1",
index d6636294ce77660f3936854fc19477b32f8739be..f24618d0edce0e36a9291c461e7cf18fbfa12353 100644 (file)
@@ -5,23 +5,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "em1",
+        :interface => "em1.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.19"
       },
       :external_ipv4 => {
-        :interface => "em2",
+        :interface => "em1.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.199"
+        :address => "193.60.236.15"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[taginfo]"
 )
index 4eb5fbc45c39752557ff368f926bfce68e4a4747..3edf962416fa4ecdd0b1f63a6d3e7a3b6f938640 100644 (file)
@@ -107,8 +107,7 @@ default_attributes(
         :gid => "www-data",
         :transfer_logging => false,
         :hosts_allow => [
-          "128.40.168.0/24",      # ucl external (wates)
-          "128.40.45.192/27",     # ucl external (wolfson)
+          "193.60.236.0/24",      # ucl external
           "146.179.159.160/27",   # ic internal
           "193.63.75.96/27",      # ic external
           "2001:630:12:500::/64", # ic external
diff --git a/roles/kalessin.rb b/roles/kalessin.rb
new file mode 100644 (file)
index 0000000..93106dd
--- /dev/null
@@ -0,0 +1,46 @@
+name "kalessin"
+description "Master role applied to kalessin"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :external_ipv4 => {
+        :interface => "ens3",
+        :role => :external,
+        :family => :inet,
+        :address => "185.66.195.245",
+        :prefix => "28",
+        :gateway => "185.66.195.241"
+      },
+      :external_ipv6 => {
+        :interface => "ens3",
+        :role => :external,
+        :family => :inet6,
+        :address => "2a03:2260:2000:1::5",
+        :prefix => "64",
+        :gateway => "2a03:2260:2000:1::1"
+      }
+    }
+  },
+  :squid => {
+    :cache_mem => "12500 MB",
+    :cache_dir => "coss /store/squid/coss-01 128000 block-size=8192 max-size=262144 membufs=80"
+  },
+  :tilecache => {
+    :tile_parent => "germany.render.openstreetmap.org",
+    :tile_siblings => [
+      "konqi.openstreetmap.org",
+      "trogdor.openstreetmap.org",
+      "nepomuk.openstreetmap.org",
+      "ridgeback.openstreetmap.org",
+      "gorynych.openstreetmap.org",
+      "simurgh.openstreetmap.org"
+    ]
+  }
+)
+
+run_list(
+  "role[ffrl]",
+  "role[geodns]",
+  "role[tilecache]"
+)
index 036255f4f8a90e6fa0b537b5928ce9ad715f6bf7..f42afa81b7b662a270af7af28323a335c3fbf751 100644 (file)
@@ -5,23 +5,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.13"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.201"
+        :address => "193.60.236.16"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[gps-tile]"
 )
diff --git a/roles/norbert.rb b/roles/norbert.rb
deleted file mode 100644 (file)
index a968122..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-name "norbert"
-description "Master role applied to norbert"
-
-default_attributes(
-  :accounts => {
-    :users => {
-      :yellowbkpk => { :status => :administrator },
-      :pnorman => { :status => :user }
-    }
-  },
-  :exim => {
-    :aliases => {
-      :root => "yellowbkpk"
-    }
-  },
-  :networking => {
-    :interfaces => {
-      :internal_ipv4 => {
-        :interface => "eth0",
-        :role => :internal,
-        :family => :inet,
-        :address => "10.0.0.5"
-      },
-      :external_ipv4 => {
-        :interface => "eth1",
-        :role => :external,
-        :family => :inet,
-        :address => "128.40.45.202"
-      }
-    }
-  },
-  :sysfs => {
-    :hdd_tune => {
-      :comment => "Tune the queue for improved performance",
-      :parameters => {
-        "block/cciss\!c0d0/queue/nr_requests" => "512",
-        "block/cciss\!c0d1/queue/nr_requests" => "512",
-        "block/cciss\!c0d0/queue/scheduler" => "noop",
-        "block/cciss\!c0d1/queue/scheduler" => "noop",
-        "block/sda/queue/nr_requests" => "512",
-        "block/sda/queue/scheduler" => "deadline"
-      }
-    }
-  }
-)
-
-run_list(
-  "role[ucl-wolfson]",
-  "role[hp-g5]"
-)
index 2d7edd7cf5c7efa70ba6a14c23a541f432fbea2b..33f18e7eea59f2f25e084a1bfaa8e2558c247080 100644 (file)
@@ -17,6 +17,10 @@ default_attributes(
         :inet => {
           :prefix => "28",
           :gateway => "140.211.167.97"
+        },
+        :inet6 => {
+          :prefix => "64",
+          :gateway => "2605:bc80:3010:700::1"
         }
       }
     }
diff --git a/roles/ovh.rb b/roles/ovh.rb
new file mode 100644 (file)
index 0000000..506be9c
--- /dev/null
@@ -0,0 +1,27 @@
+name "ovh"
+description "Role applied to all servers at OVH"
+
+default_attributes(
+  :hosted_by => "OVH",
+  :location => "Roubaix, France",
+  :networking => {
+    :nameservers => [
+      "213.186.33.99"
+    ],
+    :roles => {
+      :external => {
+        :zone => "ovh"
+      }
+    }
+  }
+)
+
+override_attributes(
+  :ntp => {
+    :servers => ["0.fr.pool.ntp.org", "1.fr.pool.ntp.org", "europe.pool.ntp.org"]
+  }
+)
+
+run_list(
+  "role[fr]"
+)
index 9f63dd0c0e3b295de01339bf8b2b069c6ae9aaac..f5a573d47d01e952b31893b7b511065c387d56f1 100644 (file)
@@ -5,16 +5,16 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "em1",
+        :interface => "em1.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.20"
       },
       :external_ipv4 => {
-        :interface => "em2",
+        :interface => "em1.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.204"
+        :address => "193.60.236.18"
       }
     }
   },
@@ -52,6 +52,6 @@ default_attributes(
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[nominatim]"
 )
index d3244ea8869be1793c9ca07bcbede563e2ef0710..7250ce893c72039cc4b74d3331bc10d83813d5b3 100644 (file)
@@ -33,13 +33,13 @@ default_attributes(
   :networking => {
     :interfaces => {
       :external_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.205"
+        :address => "193.60.236.19"
       },
       :internal_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.3"
@@ -87,7 +87,7 @@ default_attributes(
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[gateway]",
   "role[foundation]",
index 26f845b900dacad47c627ef70cb0edbc92527fb6..aab567bd87a9b810109843eba9c7c2cc5a7f52f1 100644 (file)
@@ -5,23 +5,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.12"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.206"
+        :address => "193.60.236.20"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-g5]",
   "role[yournavigation]"
 )
diff --git a/roles/scorch.rb b/roles/scorch.rb
new file mode 100644 (file)
index 0000000..c8f3b0a
--- /dev/null
@@ -0,0 +1,89 @@
+name "scorch"
+description "Master role applied to scorch"
+
+default_attributes(
+  :apt => {
+    :sources => ["postgresql"]
+  },
+  :devices => {
+    :ssd_system => {
+      :comment => "Tune scheduler for system disk",
+      :type => "block",
+      :bus => "scsi",
+      :serial => "3600605b009bbf5601fc3206407a43546",
+      :attrs => {
+        "queue/scheduler" => "noop",
+        "queue/nr_requests" => "256",
+        "queue/read_ahead_kb" => "2048"
+      }
+    },
+    :ssd_database => {
+      :comment => "Tune scheduler for database disk",
+      :type => "block",
+      :bus => "scsi",
+      :serial => "3600605b009bbf5601fd931c6dfac767f",
+      :attrs => {
+        "queue/scheduler" => "noop",
+        "queue/nr_requests" => "256",
+        "queue/read_ahead_kb" => "2048"
+      }
+    }
+  },
+  :networking => {
+    :interfaces => {
+      :external_ipv4 => {
+        :interface => "eth0",
+        :role => :external,
+        :family => :inet,
+        :address => "176.31.235.79",
+        :prefix => "24",
+        :gateway => "176.31.235.254"
+      },
+      :external_ipv6 => {
+        :interface => "eth0",
+        :role => :external,
+        :family => :inet6,
+        :address => "2001:41d0:2:fc4f::1",
+        :prefix => "64",
+        :gateway => "2001:41d0:2:fcff:ff:ff:ff:ff"
+      }
+    }
+  },
+  :postgresql => {
+    :versions => ["9.5"],
+    :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 => "9.5/main"
+    },
+    :node_file => "/store/database/nodes",
+    :styles => {
+      :default => {
+        :tile_directories => [
+          { :name => "/store/tiles/default", :min_zoom => 0, :max_zoom => 19 }
+        ]
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ovh]",
+  "role[tile]"
+)
index f0492ad50fa84c3f76b94c12117e3e96445f54a2..fc50adc394b94430c89e345111754c24a420550d 100644 (file)
@@ -9,6 +9,12 @@ default_attributes(
         :role => :external,
         :family => :inet,
         :address => "140.211.167.104"
+      },
+      :external_ipv6 => {
+        :interface => "em1",
+        :role => :external,
+        :family => :inet6,
+        :address => "2605:bc80:3010:700::8cde:a768"
       }
     }
   }
index b9b33926272f7da009b4902eb60ad8bd9f1208ed..76c62732a6dff300737a841e6d55a0c9b911280e 100644 (file)
@@ -9,6 +9,12 @@ default_attributes(
         :role => :external,
         :family => :inet,
         :address => "140.211.167.105"
+      },
+      :external_ipv6 => {
+        :interface => "em1",
+        :role => :external,
+        :family => :inet6,
+        :address => "2605:bc80:3010:700::8cde:a769"
       }
     }
   },
similarity index 54%
rename from roles/idris.rb
rename to roles/tiamat-00.rb
index 372aba8cb91ce4badafb6836d3a3dce2d25cbe8f..5e0f104786edaba87a74d984c6cd5af81edc3333 100644 (file)
@@ -1,26 +1,25 @@
-name "idris"
-description "Master role applied to idris"
+name "tiamat-00"
+description "Master role applied to tiamat-00"
 
 default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "enp1s0.2801",
         :role => :internal,
         :family => :inet,
-        :address => "10.0.0.4"
+        :address => "10.0.0.40"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "enp1s0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.200"
+        :address => "193.60.236.40"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
-  "role[hp-g5]"
+  "role[ucl]"
 )
diff --git a/roles/tiamat-01.rb b/roles/tiamat-01.rb
new file mode 100644 (file)
index 0000000..2d3aff4
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-01"
+description "Master role applied to tiamat-01"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.41"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.41"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-02.rb b/roles/tiamat-02.rb
new file mode 100644 (file)
index 0000000..d8a2ed0
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-02"
+description "Master role applied to tiamat-02"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.42"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.42"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-03.rb b/roles/tiamat-03.rb
new file mode 100644 (file)
index 0000000..d550ad4
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-03"
+description "Master role applied to tiamat-03"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.43"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.43"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-10.rb b/roles/tiamat-10.rb
new file mode 100644 (file)
index 0000000..2d8b6e5
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-10"
+description "Master role applied to tiamat-10"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.44"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.44"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-11.rb b/roles/tiamat-11.rb
new file mode 100644 (file)
index 0000000..b698d11
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-11"
+description "Master role applied to tiamat-11"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.45"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.45"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-12.rb b/roles/tiamat-12.rb
new file mode 100644 (file)
index 0000000..9dc3719
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-12"
+description "Master role applied to tiamat-12"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.46"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.46"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-13.rb b/roles/tiamat-13.rb
new file mode 100644 (file)
index 0000000..90b8379
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-13"
+description "Master role applied to tiamat-13"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.47"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.47"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-20.rb b/roles/tiamat-20.rb
new file mode 100644 (file)
index 0000000..48a3379
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-20"
+description "Master role applied to tiamat-20"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.48"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.48"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-21.rb b/roles/tiamat-21.rb
new file mode 100644 (file)
index 0000000..33badf5
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-21"
+description "Master role applied to tiamat-21"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.49"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.49"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-22.rb b/roles/tiamat-22.rb
new file mode 100644 (file)
index 0000000..f235943
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-22"
+description "Master role applied to tiamat-22"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.50"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.50"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
diff --git a/roles/tiamat-23.rb b/roles/tiamat-23.rb
new file mode 100644 (file)
index 0000000..886e5f6
--- /dev/null
@@ -0,0 +1,25 @@
+name "tiamat-23"
+description "Master role applied to tiamat-23"
+
+default_attributes(
+  :networking => {
+    :interfaces => {
+      :internal_ipv4 => {
+        :interface => "enp1s0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.51"
+      },
+      :external_ipv4 => {
+        :interface => "enp1s0.2800",
+        :role => :external,
+        :family => :inet,
+        :address => "193.60.236.51"
+      }
+    }
+  }
+)
+
+run_list(
+  "role[ucl]"
+)
index 00aa1f82a65194882674e5068d0542bc4be58af5..e0f940d9a0ec41149a990eacc988757ef9c6feb8 100644 (file)
@@ -17,9 +17,9 @@ default_attributes(
       :server_limit => 60,
       :max_request_workers => 1200,
       :threads_per_child => 20,
-      :min_spare_threads => 30,
-      :max_spare_threads => 540,
-      :max_connections_per_child => 100000,
+      :min_spare_threads => 300,
+      :max_spare_threads => 1200,
+      :max_connections_per_child => 0,
       :async_request_worker_factor => 4
     }
   },
@@ -90,7 +90,7 @@ default_attributes(
     :styles => {
       :default => {
         :repository => "git://github.com/gravitystorm/openstreetmap-carto.git",
-        :revision => "v2.44.1",
+        :revision => "v3.0.1",
         :max_zoom => 19
       }
     }
index 438f61992d27d2395a15ef38f5b3a61c6add9f6c..8e6da21eeb45674c4c5ffdedafd18ed9fde333aa 100644 (file)
@@ -12,6 +12,13 @@ default_attributes(
   :apt => {
     :sources => ["nginx"]
   },
+  :munin => {
+    :plugins => {
+      :cpu => {
+        :user => { :warning => 200, :critical => 400 }
+      }
+    }
+  },
   :sysctl => {
     :network_conntrack_time_wait => {
       :comment => "Only track completed connections for 30 seconds",
@@ -25,6 +32,12 @@ default_attributes(
         "net.netfilter.nf_conntrack_max" => "131072"
       }
     },
+    :kernel_tfo_listen_enable => {
+      :comment => "Enable TCP Fast Open for listening sockets",
+      :parameters => {
+        "net.ipv4.tcp_fastopen" => 3
+      }
+    },
     :squid_swappiness => {
       :comment => "Prefer not to swapout to free memory",
       :parameters => {
diff --git a/roles/ucl-wates.rb b/roles/ucl-wates.rb
deleted file mode 100644 (file)
index bba547e..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-name "ucl-wates"
-description "Role applied to all servers at UCL which are in Wates House"
-
-default_attributes(
-  :networking => {
-    :roles => {
-      :internal => {
-        :inet => {
-          :prefix => "20",
-          :gateway => "10.0.0.3"
-        }
-      },
-      :external => {
-        :zone => "ucl",
-        :inet => {
-          :prefix => "24",
-          :gateway => "128.40.168.126"
-        }
-      }
-    }
-  },
-  :sysctl => {
-    :sack => {
-      :comment => "Disable SACK as the UCL firewall breaks it",
-      :parameters => {
-        "net.ipv4.tcp_sack" => "0"
-      }
-    }
-  }
-)
-
-override_attributes(
-  :networking => {
-    :nameservers => ["10.0.0.3", "8.8.8.8", "8.8.4.4"],
-    :search => ["ucl.openstreetmap.org", "openstreetmap.org"]
-  }
-)
-
-run_list(
-  "role[ucl]"
-)
diff --git a/roles/ucl-wolfson.rb b/roles/ucl-wolfson.rb
deleted file mode 100644 (file)
index 208185a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-name "ucl-wolfson"
-description "Role applied to all servers at UCL which are in Wolfson House"
-
-default_attributes(
-  :networking => {
-    :roles => {
-      :internal => {
-        :inet => {
-          :prefix => "20",
-          :gateway => "10.0.0.3"
-        }
-      },
-      :external => {
-        :zone => "ucl",
-        :inet => {
-          :prefix => "27",
-          :gateway => "128.40.45.222"
-        }
-      }
-    }
-  }
-)
-
-override_attributes(
-  :networking => {
-    :nameservers => ["10.0.0.3", "8.8.8.8", "8.8.4.4"],
-    :search => ["ucl.openstreetmap.org", "openstreetmap.org"]
-  }
-)
-
-run_list(
-  "role[ucl]"
-)
index 2dd44ee70d741166cc08181046523a06a58ec477..27064ea2359a8a42a83c83705ae899c20a1b3777 100644 (file)
@@ -2,13 +2,31 @@ name "ucl"
 description "Role applied to all servers at UCL"
 
 default_attributes(
-  :bind => {
-    :forwarders => ["144.82.100.1", "144.82.100.41"]
-  },
-  :location => "London, England"
+  :location => "Slough, England",
+  :networking => {
+    :roles => {
+      :internal => {
+        :inet => {
+          :prefix => "20",
+          :gateway => "10.0.0.3"
+        }
+      },
+      :external => {
+        :zone => "ucl",
+        :inet => {
+          :prefix => "24",
+          :gateway => "193.60.236.254"
+        }
+      }
+    }
+  }
 )
 
 override_attributes(
+  :networking => {
+    :nameservers => ["10.0.0.3", "8.8.8.8", "8.8.4.4"],
+    :search => ["ucl.openstreetmap.org", "openstreetmap.org"]
+  },
   :ntp => {
     :servers => ["ntp1.ucl.ac.uk", "ntp2.ucl.ac.uk"]
   }
index ef6899a1caf4f9a025066050f1412992e25cb2ba..dba68ec664c5bf6dec2a1cf4c0d36de5d0cd4436 100644 (file)
@@ -5,23 +5,23 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth0.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.6"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.207"
+        :address => "193.60.236.21"
       }
     }
   }
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[hp-dl360-g6]",
   "role[munin]"
 )
index a233e908ebea0bece715b22c26b4ae169b6912b4..d945ef790bb0bfe777d28e2c6eb651b52c84caf2 100644 (file)
@@ -31,10 +31,10 @@ default_attributes(
       }
     },
     :nameservers => [
-      "161.53.2.66",
-      "2001:b68:ff:1::2",
-      "2001:b68:ff:2::2",
-      "2001:4860:4860::8888"
+      "8.8.8.8",
+      "8.8.4.4",
+      "2001:4860:4860::8888",
+      "2001:4860:4860::8844"
     ]
   },
   :squid => {
index 42a29fc10fe8cc1d16bce42b09c440cae8a8fa63..3d259f6743b14594b60e9ef684c89588bd8711eb 100644 (file)
@@ -66,11 +66,17 @@ default_attributes(
   },
   :networking => {
     :interfaces => {
+      :internal_ipv4 => {
+        :interface => "eth0.2801",
+        :role => :internal,
+        :family => :inet,
+        :address => "10.0.0.15"
+      },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth0.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.208"
+        :address => "193.60.236.22"
       }
     }
   },
@@ -110,7 +116,7 @@ default_attributes(
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[tyan-s7010]",
   "role[tile]"
 )
index abee7f5e778affd4914dd37a1f6f329eadc2b60f..45a6de4d28a6d4cb3e16e72ead8509a35325a988 100644 (file)
@@ -5,16 +5,16 @@ default_attributes(
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
-        :interface => "eth0",
+        :interface => "eth1.2801",
         :role => :internal,
         :family => :inet,
         :address => "10.0.0.8"
       },
       :external_ipv4 => {
-        :interface => "eth1",
+        :interface => "eth1.2800",
         :role => :external,
         :family => :inet,
-        :address => "128.40.45.209"
+        :address => "193.60.236.23"
       }
     }
   },
@@ -31,6 +31,6 @@ default_attributes(
 )
 
 run_list(
-  "role[ucl-wolfson]",
+  "role[ucl]",
   "role[owl]"
 )