diff --git a/playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/post.yaml b/playbooks/legacy/ironic-dsvm-base-multinode/post.yaml
similarity index 100%
rename from playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/post.yaml
rename to playbooks/legacy/ironic-dsvm-base-multinode/post.yaml
diff --git a/playbooks/legacy/grenade-dsvm-ironic/post.yaml b/playbooks/legacy/ironic-dsvm-base/post.yaml
similarity index 100%
rename from playbooks/legacy/grenade-dsvm-ironic/post.yaml
rename to playbooks/legacy/ironic-dsvm-base/post.yaml
diff --git a/playbooks/legacy/ironic-dsvm-functional/post.yaml b/playbooks/legacy/ironic-dsvm-functional/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/ironic-dsvm-functional/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/ironic-dsvm-standalone/post.yaml b/playbooks/legacy/ironic-dsvm-standalone/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/ironic-dsvm-standalone/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-bfv/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-bfv/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-bfv/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-inspector/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-inspector/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-inspector/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-redfish-tinyipa/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-redfish-tinyipa/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-redfish-tinyipa/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-uefi-pxe_ipmitool-tinyipa/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-uefi-pxe_ipmitool-tinyipa/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-partition-uefi-pxe_ipmitool-tinyipa/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-pxe_snmp-tinyipa/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-pxe_snmp-tinyipa/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-pxe_snmp-tinyipa/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-parallel/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-parallel/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-parallel/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-pxe_ipa-full/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-pxe_ipa-full/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-pxe_ipa-full/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/playbooks/legacy/tempest-dsvm-ironic-pxe_ipmitool-postgres/post.yaml b/playbooks/legacy/tempest-dsvm-ironic-pxe_ipmitool-postgres/post.yaml
deleted file mode 100644
index e07f5510ae..0000000000
--- a/playbooks/legacy/tempest-dsvm-ironic-pxe_ipmitool-postgres/post.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-- hosts: primary
-  tasks:
-
-    - name: Copy files from {{ ansible_user_dir }}/workspace/ on node
-      synchronize:
-        src: '{{ ansible_user_dir }}/workspace/'
-        dest: '{{ zuul.executor.log_root }}'
-        mode: pull
-        copy_links: true
-        verify_host: true
-        rsync_opts:
-          - --include=/logs/**
-          - --include=*/
-          - --exclude=*
-          - --prune-empty-dirs
diff --git a/zuul.d/legacy-ironic-jobs.yaml b/zuul.d/legacy-ironic-jobs.yaml
index daaad7f665..93870a216c 100644
--- a/zuul.d/legacy-ironic-jobs.yaml
+++ b/zuul.d/legacy-ironic-jobs.yaml
@@ -23,6 +23,7 @@
       - openstack/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc
+    post-run: playbooks/legacy/ironic-dsvm-base/post.yaml
 
 - job:
     name: legacy-ironic-dsvm-base-multinode
@@ -50,47 +51,42 @@
       - openstack/pyghmi
       - openstack/python-ironicclient
       - openstack/virtualbmc
+    post-run: playbooks/legacy/ironic-dsvm-base-multinode/post.yaml
 
 - job:
     name: ironic-tempest-dsvm-pxe_ipmitool-postgres
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-pxe_ipmitool-postgres/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-pxe_ipmitool-postgres/post.yaml
     timeout: 10800
 
 - job:
     name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-agent_ipmitool-tinyipa/post.yaml
     timeout: 5400
 
 - job:
     name: ironic-tempest-dsvm-ipa-wholedisk-bios-pxe_snmp-tinyipa
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-pxe_snmp-tinyipa/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-bios-pxe_snmp-tinyipa/post.yaml
     timeout: 5400
 
 - job:
     name: ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-uefi-pxe_ipmitool-tinyipa/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-uefi-pxe_ipmitool-tinyipa/post.yaml
     timeout: 5400
 
 - job:
     name: ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3/post.yaml
     timeout: 5400
 
 - job:
     name: ironic-tempest-dsvm-ipa-wholedisk-agent_ipmitool-tinyipa-multinode
     parent: legacy-ironic-dsvm-base-multinode
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-wholedisk-agent_ipmitool-tinyipa-multinode/post.yaml
     timeout: 10800
     nodeset: legacy-ubuntu-xenial-2-node
 
@@ -98,21 +94,18 @@
     name: ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-redfish-tinyipa/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-partition-redfish-tinyipa/post.yaml
     timeout: 5400
 
 - job:
     name: ironic-tempest-dsvm-bfv
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-bfv/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-bfv/post.yaml
     timeout: 9600
 
 - job:
     name: ironic-dsvm-standalone
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/ironic-dsvm-standalone/run.yaml
-    post-run: playbooks/legacy/ironic-dsvm-standalone/post.yaml
     timeout: 10800
     required-projects:
       - openstack-infra/devstack-gate
@@ -125,7 +118,6 @@
     name: ironic-tempest-dsvm-ironic-inspector
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-inspector/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-inspector/post.yaml
     timeout: 10800
     required-projects:
       - openstack-infra/devstack-gate
@@ -143,7 +135,6 @@
     name: ironic-grenade-dsvm
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/grenade-dsvm-ironic/run.yaml
-    post-run: playbooks/legacy/grenade-dsvm-ironic/post.yaml
     timeout: 10800
     required-projects:
       - openstack-dev/grenade
@@ -159,7 +150,6 @@
     name: ironic-grenade-dsvm-multinode-multitenant
     parent: legacy-ironic-dsvm-base-multinode
     run: playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/run.yaml
-    post-run: playbooks/legacy/grenade-dsvm-ironic-multinode-multitenant/post.yaml
     timeout: 10800
     required-projects:
       - openstack-dev/grenade
@@ -177,7 +167,6 @@
     name: ironic-dsvm-functional
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/ironic-dsvm-functional/run.yaml
-    post-run: playbooks/legacy/ironic-dsvm-functional/post.yaml
     timeout: 4800
     required-projects:
       - openstack-infra/devstack-gate
@@ -188,7 +177,6 @@
     name: ironic-tempest-dsvm-parallel
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-parallel/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-parallel/post.yaml
     timeout: 10800
     required-projects:
       - openstack-infra/devstack-gate
@@ -203,12 +191,10 @@
     name: ironic-tempest-dsvm-pxe_ipa-full
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-pxe_ipa-full/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-pxe_ipa-full/post.yaml
     timeout: 9600
 
 - job:
     name: ironic-tempest-dsvm-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa
     parent: legacy-ironic-dsvm-base
     run: playbooks/legacy/tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa/run.yaml
-    post-run: playbooks/legacy/tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa/post.yaml
     timeout: 5400