From: Tom Hughes Date: Wed, 23 Nov 2022 22:18:04 +0000 (+0000) Subject: Switch wiki dumps to use systemd timers X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/79f4a86c6a7320bb287968a42393b9449196b12e Switch wiki dumps to use systemd timers --- diff --git a/cookbooks/systemd/resources/service.rb b/cookbooks/systemd/resources/service.rb index 313c80c11..ef7c86d76 100644 --- a/cookbooks/systemd/resources/service.rb +++ b/cookbooks/systemd/resources/service.rb @@ -41,9 +41,9 @@ property :environment_file, [String, Hash] property :user, String property :group, String property :working_directory, String -property :exec_start_pre, String -property :exec_start, String -property :exec_start_post, String +property :exec_start_pre, [String, Array] +property :exec_start, [String, Array] +property :exec_start_post, [String, Array] property :exec_stop, String property :exec_reload, String property :runtime_directory, String diff --git a/cookbooks/systemd/templates/default/service.erb b/cookbooks/systemd/templates/default/service.erb index 1b63a8d24..c53439a2b 100644 --- a/cookbooks/systemd/templates/default/service.erb +++ b/cookbooks/systemd/templates/default/service.erb @@ -61,19 +61,25 @@ WorkingDirectory=<%= @working_directory %> <% if @dropin -%> ExecStartPre= <% end -%> -ExecStartPre=<%= @exec_start_pre %> +<% Array(@exec_start_pre).each do |exec_start_pre| -%> +ExecStartPre=<%= exec_start_pre %> +<% end -%> <% end -%> <% if @exec_start -%> <% if @dropin -%> ExecStart= <% end -%> -ExecStart=<%= @exec_start %> +<% Array(@exec_start).each do |exec_start| -%> +ExecStart=<%= exec_start %> +<% end -%> <% end -%> <% if @exec_start_post -%> <% if @dropin -%> ExecStartPost= <% end -%> -ExecStartPost=<%= @exec_start_post %> +<% Array(@exec_start_post).each do |exec_start_post| -%> +ExecStartPost=<%= exec_start_post %> +<% end -%> <% end -%> <% if @exec_stop -%> <% if @dropin -%> diff --git a/cookbooks/wiki/recipes/default.rb b/cookbooks/wiki/recipes/default.rb index a036a07be..b82f59058 100644 --- a/cookbooks/wiki/recipes/default.rb +++ b/cookbooks/wiki/recipes/default.rb @@ -134,16 +134,56 @@ directory "/srv/wiki.openstreetmap.org/dump" do mode "0775" end +systemd_service "wiki-dump" do + description "Wiki dump" + type "oneshot" + exec_start "/usr/bin/php w/maintenance/dumpBackup.php --full --quiet --output=gzip:dump/dump.xml.gz" + working_directory "/srv/wiki.openstreetmap.org" + user "wiki" + sandbox :enable_network => true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" + read_write_paths "/srv/wiki.openstreetmap.org/dump" +end + +systemd_timer "wiki-dump" do + description "Wiki dump" + on_calendar "02:00" +end + cron_d "wiki-dump" do - minute "0" - hour "2" + action :delete +end + +service "wiki-dump.timer" do + action [:enable, :start] +end + +systemd_service "wiki-rdf-dump" do + description "Wiki RDF dump" + type "oneshot" + exec_start [ + "/usr/bin/php w/extensions/Wikibase/repo/maintenance/dumpRdf.php --wiki wiki --format ttl --flavor full-dump --entity-type item --entity-type property --no-cache --output /tmp/wikibase-rdf.ttl", + "/usr/bin/gzip -9 /tmp/wikibase-rdf.ttl", + "/usr/bin/mv /tmp/wikibase-rdf.ttl.gz /srv/wiki.openstreetmap.org/dump/wikibase-rdf.ttl.gz" + ] + working_directory "/srv/wiki.openstreetmap.org" user "wiki" - command "cd /srv/wiki.openstreetmap.org && php w/maintenance/dumpBackup.php --full --quiet --output=gzip:dump/dump.xml.gz" + sandbox :enable_network => true + memory_deny_write_execute false + restrict_address_families "AF_UNIX" + read_write_paths "/srv/wiki.openstreetmap.org/dump" +end + +systemd_timer "wiki-rdf-dump" do + description "Wiki RDF dump" + on_calendar "04:00" end cron_d "wiki-rdf-dump" do - minute "0" - hour "4" - user "wiki" - command "cd /srv/wiki.openstreetmap.org && php w/extensions/Wikibase/repo/maintenance/dumpRdf.php --wiki wiki --format ttl --flavor full-dump --entity-type item --entity-type property --no-cache --output /tmp/wikibase-rdf.ttl && gzip -9 /tmp/wikibase-rdf.ttl && mv /tmp/wikibase-rdf.ttl.gz /srv/wiki.openstreetmap.org/dump/wikibase-rdf.ttl.gz" + action :delete +end + +service "wiki-rdf-dump.timer" do + action [:enable, :start] end