diff --git a/tasks/install_ta_tools.yml b/tasks/install_ta_tools.yml
new file mode 100644
index 0000000000000000000000000000000000000000..12211bd21969a8e866cacfb419608f8814844a4c
--- /dev/null
+++ b/tasks/install_ta_tools.yml
@@ -0,0 +1,29 @@
+---
+- name: install Git (prerequisite for ansible.builtin.git)
+  apt:
+    name: "git"
+    state: latest
+
+- name: checkout ta-tools repo
+  git:
+    repo: "https://git.slub-dresden.de/digital-preservation/tools-for-technical-analysts.git"
+    dest: "/tmp/tools-for-technical-analysts/"
+
+# https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html
+# 'If path is a directory, it is copied recursively. In this case, if path ends
+# with "/", only inside contents of that directory are copied to destination.'
+- name: install ta-tools
+  copy:
+    src: "/tmp/tools-for-technical-analysts/{{ item.src }}"
+    dest: "{{ item.dest }}"
+    remote_src: true
+  loop:
+    - src: "bin/"
+      dest: "/usr/local/bin/"
+    - src: "lib/"
+      dest: "/usr/local/perl/"
+
+- name: set execution bit for ta-tools script
+  file:
+    path: "/usr/local/bin/ta-tool.pl"
+    mode: "0755"
diff --git a/tasks/main.yml b/tasks/main.yml
index 8f93978ea922e9ec81a4e7ba3b77d588f5c8726b..7c2bf565c6b9e327d53df05cb027b1bb0863311f 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -61,6 +61,10 @@
   import_tasks: configure_iptables_externalusers.yml
   tags: [iptables]
 
+- name: install tools for Technical Analysts
+  import_tasks: "install_ta_tools.yml"
+  tags: [ta, apt]
+
 - name: cleanup remainders of METS-based SubApp
   import_tasks: cleanup_legacy.yml
   tags: [cleanup]