]> git.openstreetmap.org Git - chef.git/commitdiff
Switch wiki dumps to use systemd timers
authorTom Hughes <tom@compton.nu>
Wed, 23 Nov 2022 22:18:04 +0000 (22:18 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 23 Nov 2022 22:18:04 +0000 (22:18 +0000)
cookbooks/systemd/resources/service.rb
cookbooks/systemd/templates/default/service.erb
cookbooks/wiki/recipes/default.rb

index 313c80c118c4b50433d9d0a61b897830fa5bd86c..ef7c86d760cc76daa0e4e1bc5e58a72b9e7dcd4d 100644 (file)
@@ -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
index 1b63a8d24c179f95eb93d260b65a008988ab26a5..c53439a2b292003868c090dce6e8c8378422d815 100644 (file)
@@ -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 -%>
index a036a07be1d5875f320550fc0275cf7473afd8f6..b82f590580b4ad3e0f56c12386da16ef698dcd54 100644 (file)
@@ -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