From 14cda19a0e703264e40c0559b0a75f8d5c48cf0f Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 20 Feb 2025 18:59:55 +0000 Subject: [PATCH] Introduce a node attribute for the ruby interpreter path --- cookbooks/letsencrypt/metadata.rb | 1 + cookbooks/letsencrypt/recipes/default.rb | 20 +++++++++++++++---- .../default/check-certificate.erb} | 2 +- .../upload => templates/default/upload.erb} | 2 +- .../templates/default/totp-filter.erb | 2 +- .../templates/default/passenger.conf.erb | 2 +- .../passenger/templates/default/ruby.erb | 2 +- cookbooks/planet/recipes/replication.rb | 13 +++++++++++- .../templates/default/planet-file-cleanup.erb | 2 +- .../default/replicate-changesets.erb} | 2 +- cookbooks/prometheus/metadata.rb | 1 - cookbooks/prometheus/recipes/default.rb | 3 ++- cookbooks/ruby/attributes/default.rb | 1 + .../tile/templates/default/expire-tiles.erb | 2 +- cookbooks/web/recipes/statistics.rb | 3 +-- .../web/templates/default/api-statistics.erb | 2 +- 16 files changed, 42 insertions(+), 18 deletions(-) rename cookbooks/letsencrypt/{files/default/bin/check-certificate => templates/default/check-certificate.erb} (98%) mode change 100755 => 100644 rename cookbooks/letsencrypt/{files/default/bin/upload => templates/default/upload.erb} (92%) mode change 100755 => 100644 rename cookbooks/planet/{files/default/replication-bin/replicate-changesets => templates/default/replicate-changesets.erb} (99%) diff --git a/cookbooks/letsencrypt/metadata.rb b/cookbooks/letsencrypt/metadata.rb index 52ef99f7c..a826ce5e4 100644 --- a/cookbooks/letsencrypt/metadata.rb +++ b/cookbooks/letsencrypt/metadata.rb @@ -9,3 +9,4 @@ supports "ubuntu" depends "accounts" depends "apache" depends "chef" +depends "ruby" diff --git a/cookbooks/letsencrypt/recipes/default.rb b/cookbooks/letsencrypt/recipes/default.rb index 382a0a58c..3e492f6af 100644 --- a/cookbooks/letsencrypt/recipes/default.rb +++ b/cookbooks/letsencrypt/recipes/default.rb @@ -20,13 +20,11 @@ include_recipe "accounts" include_recipe "apache" include_recipe "chef::knife" +include_recipe "ruby" keys = data_bag_item("chef", "keys") -package %w[ - certbot - ruby -] +package "certbot" directory "/etc/letsencrypt" do owner "letsencrypt" @@ -116,6 +114,13 @@ remote_directory "/srv/acme.openstreetmap.org/bin" do files_mode "755" end +template "/srv/acme.openstreetmap.org/bin/upload" do + source "upload.erb" + owner "root" + group "root" + mode "755" +end + directory "/srv/acme.openstreetmap.org/requests" do owner "root" group "root" @@ -168,6 +173,13 @@ Dir.glob("*", :base => "/srv/acme.openstreetmap.org/requests") do |name| end end +template "/srv/acme.openstreetmap.org/bin/check-certificate" do + source "check-certificate.erb" + owner "root" + group "root" + mode "755" +end + template "/srv/acme.openstreetmap.org/bin/check-certificates" do source "check-certificates.erb" owner "root" diff --git a/cookbooks/letsencrypt/files/default/bin/check-certificate b/cookbooks/letsencrypt/templates/default/check-certificate.erb old mode 100755 new mode 100644 similarity index 98% rename from cookbooks/letsencrypt/files/default/bin/check-certificate rename to cookbooks/letsencrypt/templates/default/check-certificate.erb index f24681589..8863e9ae8 --- a/cookbooks/letsencrypt/files/default/bin/check-certificate +++ b/cookbooks/letsencrypt/templates/default/check-certificate.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require "socket" require "openssl" diff --git a/cookbooks/letsencrypt/files/default/bin/upload b/cookbooks/letsencrypt/templates/default/upload.erb old mode 100755 new mode 100644 similarity index 92% rename from cookbooks/letsencrypt/files/default/bin/upload rename to cookbooks/letsencrypt/templates/default/upload.erb index a52f30257..7700506cd --- a/cookbooks/letsencrypt/files/default/bin/upload +++ b/cookbooks/letsencrypt/templates/default/upload.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require "json" require "tempfile" diff --git a/cookbooks/overpass/templates/default/totp-filter.erb b/cookbooks/overpass/templates/default/totp-filter.erb index 8245f2ae3..78160cfe9 100644 --- a/cookbooks/overpass/templates/default/totp-filter.erb +++ b/cookbooks/overpass/templates/default/totp-filter.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require "cgi" require "rotp" diff --git a/cookbooks/passenger/templates/default/passenger.conf.erb b/cookbooks/passenger/templates/default/passenger.conf.erb index 97898cb67..5533f8deb 100644 --- a/cookbooks/passenger/templates/default/passenger.conf.erb +++ b/cookbooks/passenger/templates/default/passenger.conf.erb @@ -2,7 +2,7 @@ PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini - PassengerDefaultRuby /usr/bin/ruby + PassengerDefaultRuby <%= node[:ruby][:interpreter] %> PassengerRuby /usr/local/bin/passenger-ruby PassengerPreloadBundler on PassengerMaxPoolSize <%= node[:passenger][:max_pool_size] %> diff --git a/cookbooks/passenger/templates/default/ruby.erb b/cookbooks/passenger/templates/default/ruby.erb index f45fd210e..2af922032 100644 --- a/cookbooks/passenger/templates/default/ruby.erb +++ b/cookbooks/passenger/templates/default/ruby.erb @@ -4,4 +4,4 @@ export RUBY_GC_HEAP_INIT_SLOTS=500000 export RUBY_GC_HEAP_FREE_SLOTS=100000 export RUBY_GC_MALLOC_LIMIT=50000000 -exec /usr/bin/ruby<%= node[:ruby][:version] %> "$@" +exec <%= node[:ruby][:interpreter] %> "$@" diff --git a/cookbooks/planet/recipes/replication.rb b/cookbooks/planet/recipes/replication.rb index d719d11ae..f7552ddf2 100644 --- a/cookbooks/planet/recipes/replication.rb +++ b/cookbooks/planet/recipes/replication.rb @@ -32,14 +32,18 @@ db_passwords = data_bag_item("db", "passwords") package %w[ postgresql-client - ruby-libxml make gcc libc6-dev libpq-dev + libxml2-dev osmdbt ] +gem_package "libxml-ruby" do + gem_binary node[:ruby][:gem] +end + gem_package "pg" do gem_binary node[:ruby][:gem] end @@ -91,6 +95,13 @@ template "/usr/local/bin/users-deleted" do mode "755" end +template "/usr/local/bin/replicate-changesets" do + source "replicate-changesets.erb" + owner "root" + group "root" + mode "755" +end + ## Published deleted users directory remote_directory "/store/planet/users_deleted" do diff --git a/cookbooks/planet/templates/default/planet-file-cleanup.erb b/cookbooks/planet/templates/default/planet-file-cleanup.erb index 52ce68623..1df8eb595 100644 --- a/cookbooks/planet/templates/default/planet-file-cleanup.erb +++ b/cookbooks/planet/templates/default/planet-file-cleanup.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require 'date' require 'optparse' diff --git a/cookbooks/planet/files/default/replication-bin/replicate-changesets b/cookbooks/planet/templates/default/replicate-changesets.erb similarity index 99% rename from cookbooks/planet/files/default/replication-bin/replicate-changesets rename to cookbooks/planet/templates/default/replicate-changesets.erb index bb4544f68..e2e5aca68 100755 --- a/cookbooks/planet/files/default/replication-bin/replicate-changesets +++ b/cookbooks/planet/templates/default/replicate-changesets.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require "rubygems" require "pg" diff --git a/cookbooks/prometheus/metadata.rb b/cookbooks/prometheus/metadata.rb index 30f20802d..6148979b9 100644 --- a/cookbooks/prometheus/metadata.rb +++ b/cookbooks/prometheus/metadata.rb @@ -12,4 +12,3 @@ depends "awscli" depends "git" depends "hardware" depends "networking" -depends "ruby" diff --git a/cookbooks/prometheus/recipes/default.rb b/cookbooks/prometheus/recipes/default.rb index c6b609b06..df3ec2ea5 100644 --- a/cookbooks/prometheus/recipes/default.rb +++ b/cookbooks/prometheus/recipes/default.rb @@ -19,7 +19,8 @@ include_recipe "git" include_recipe "networking" -include_recipe "ruby" + +package "ruby" if node.internal_ipaddress node.default[:prometheus][:mode] = "internal" diff --git a/cookbooks/ruby/attributes/default.rb b/cookbooks/ruby/attributes/default.rb index eefaf2247..69e52acc9 100644 --- a/cookbooks/ruby/attributes/default.rb +++ b/cookbooks/ruby/attributes/default.rb @@ -5,5 +5,6 @@ default[:ruby][:version] = if platform?("debian") else "3.0" end +default[:ruby][:interpreter] = "/usr/bin/ruby#{node[:ruby][:version]}" default[:ruby][:gem] = "/usr/bin/gem#{node[:ruby][:version]}" default[:ruby][:bundle] = "/usr/bin/bundle#{node[:ruby][:version]}" diff --git a/cookbooks/tile/templates/default/expire-tiles.erb b/cookbooks/tile/templates/default/expire-tiles.erb index b3a790f6a..5bc478082 100644 --- a/cookbooks/tile/templates/default/expire-tiles.erb +++ b/cookbooks/tile/templates/default/expire-tiles.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> # DO NOT EDIT - This file is being maintained by Chef diff --git a/cookbooks/web/recipes/statistics.rb b/cookbooks/web/recipes/statistics.rb index 84848b003..88c85a6fe 100644 --- a/cookbooks/web/recipes/statistics.rb +++ b/cookbooks/web/recipes/statistics.rb @@ -19,7 +19,6 @@ include_recipe "web::base" -ruby = "ruby#{node[:ruby][:version]}" rails_directory = "#{node[:web][:base_directory]}/rails" template "/usr/local/bin/statistics" do @@ -27,7 +26,7 @@ template "/usr/local/bin/statistics" do owner "root" group "root" mode "755" - variables :ruby => ruby, :directory => rails_directory + variables :ruby => node[:ruby][:interpreter], :directory => rails_directory end systemd_service "web-statistics" do diff --git a/cookbooks/web/templates/default/api-statistics.erb b/cookbooks/web/templates/default/api-statistics.erb index ce3af0b34..b6425ec88 100644 --- a/cookbooks/web/templates/default/api-statistics.erb +++ b/cookbooks/web/templates/default/api-statistics.erb @@ -1,4 +1,4 @@ -#!/usr/bin/ruby +#!<%= node[:ruby][:interpreter] %> require "apache_log_regex" require "file-tail" -- 2.39.5