diff --git a/.zuul.yaml b/.zuul.yaml
index dc34dbbe6..4845e4830 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,14 +1,19 @@
 - job:
     name: keystoneclient-devstack-functional
-    parent: devstack-tox-functional-consumer
+    parent: devstack-minimal
     timeout: 4200
     required-projects:
       - openstack/keystone
       - openstack/python-keystoneclient
+    run: playbooks/run-ds-tox.yaml
+    post-run: playbooks/tox-post.yaml
     vars:
-      tox_envlist: functional
       devstack_localrc:
         USE_PYTHON3: True
+      devstack_services:
+        key: true
+      tox_envlist: functional
+      zuul_work_dir: src/git.openstack.org/openstack/python-keystoneclient
 
 - project:
     templates:
diff --git a/playbooks/run-ds-tox.yaml b/playbooks/run-ds-tox.yaml
new file mode 100644
index 000000000..b414b747c
--- /dev/null
+++ b/playbooks/run-ds-tox.yaml
@@ -0,0 +1,5 @@
+- hosts: all
+  roles:
+    - run-devstack
+    - ensure-tox
+    - tox
diff --git a/playbooks/tox-post.yaml b/playbooks/tox-post.yaml
new file mode 100644
index 000000000..7f0cb1982
--- /dev/null
+++ b/playbooks/tox-post.yaml
@@ -0,0 +1,4 @@
+- hosts: all
+  roles:
+    - fetch-tox-output
+    - fetch-subunit-output